2012-06-23 9 views
10

Ho notato che da nessuna parte riesco a trovare una risposta definitiva alla domanda di cui sopra. Mi sono chiesto per prima cosa quando ho notato che non hai mai dovuto specificare il tipo di variabile in QBasic quando li hai dichiarati, sebbene potessi aggiungere un suffisso al nome di una variabile per assicurarti che fosse di un tipo particolare.Che sistema di battitura usa BASIC?

Inoltre, come alcuni dialetti di BASIC sono interpretati e altri compilati, ciò influenza il sistema di battitura?

risposta

6

Ci sono così tanti sapori di BASIC, alcuni solo storici e alcuni ancora in uso, che è impossibile dare una risposta vera.

Alcuni dei vecchi BASIC (i numeri BASIC della linea) avevano due tipi di dati: String o Integer. Il BASIC originale fornito con i computer Apple-II era un "Integer BASIC". Più tardi i BASIC hanno introdotto il Floating Point, che era spesso FP a precisione singola. Il BASIC fornito con la TI-99/4a era un esempio di BASIC a virgola mobile degli inizi degli anni '80. "Indietro nel tempo quando", si renderebbe una stringa letterale con virgolette e una variabile stringa con un sigillo $ che segue il nome dell'identificatore. Le variabili che non avevano il sigillo $ di solito venivano impostate di default sul tipo di variabile numerica che aveva il sapore di base supportato (Integer o Floating Point). GWBasic, ad esempio, avrebbe un valore predefinito in virgola mobile a meno che non si specificasse il sigillo %, che significava "intero". TI Extended Basic non aveva un tipo intero, ma il tipo numerico a virgola mobile aveva qualcosa come 15 cifre significative, se ricordo (errori matematici in virgola mobile non resistenti).

Queste prime basi erano essenzialmente tipizzate staticamente, sebbene la distinzione fosse molto meno utile rispetto a lingue più potenti. Le scelte per i tipi di dati erano poche: String, Number (a volte Int, a volte FP) e talvolta con la possibilità di specificare se un numero come Int o FP. Dietro le quinte alcuni persino liberamente convertiti tra intarsi e virgola mobile, se necessario. Spesso tali conversioni dietro le quinte non erano ben documentate.

Ma quello era lo stato delle cose negli anni '80, quando tutti con un computer di casa erano uno hobbiest e gli standard erano allentati. Ogni produttore di hardware sembrava avere la sua opinione su come BASIC dovrebbe funzionare.

I BASIC più moderni sono più potenti e consentono un controllo più stretto sui tipi variabili (quando necessario).

+1

Grazie per la risposta dettagliata. –

2

I dialetti precedenti di BASIC erano sempre tipizzati staticamente. Le variabili numeriche, le variabili stringa e le matrici richiedevano ciascuna una sintassi diversa. Anche la lunghezza dei nomi era spesso limitata a un solo simbolo. La sintassi utilizzata più spesso era solo V per il numerico, V$ per la stringa e gli array sono stati dichiarati separatamente con DIM.

Dal momento che non ho programmato in BASIC per ben 15 anni, non posso dire con certezza cosa sta succedendo nei dialetti moderni.

1

La versione avanzata di BASIC utilizzata nei sistemi di database MultiValue utilizza la digitazione dinamica. Ciò significa che il compilatore decide come trattare la variabile in base alla logica e al contesto delle istruzioni.

Qualsiasi cosa tra virgolette è una stringa e qualsiasi valore numerico non tra virgolette è un numero. Per scrivere dati numerici via sotto forma di doppi o float ci sono varie espressioni di formato che puoi usare per ottenere ciò che applichi alle tue variabili.

In definitiva tutto viene salvato a livello di database come una stringa ASCII. Quindi lo sviluppatore impone il tipo a livello di logica aziendale, a differenza del database che lo applica.