2012-06-23 17 views
10

Ich habe bemerkt, dass nirgendwo ich finden kann, kann mir eine definitive Antwort auf die obige Frage geben. Ich habe mich zuerst gefragt, als ich bemerkte, dass Sie den Typ der Variablen in QBasic bei der Deklaration nie angeben mussten, obwohl Sie dem Namen einer Variablen ein Suffix hinzufügen könnten, um sicherzustellen, dass es sich um einen bestimmten Typ handelt.Welches Schreibsystem benutzt BASIC?

Auch, wie einige Dialekte von BASIC interpretiert und andere kompiliert werden, beeinflusst dies das Typisierungssystem?

Antwort

6

Es gibt so viele Geschmacksrichtungen von BASIC, einige nur historisch und einige noch im Gebrauch, dass es unmöglich ist, eine wahre Antwort zu geben.

Einige der alten BASICs (die Zeile mit der Nummer BASICs) hatten zwei Datentypen: String oder Integer. Das ursprüngliche BASIC, das mit Apple II-Computern geliefert wurde, war ein "Integer BASIC". Spätere BASICs führten Floating Point ein, bei dem es sich oft um FP mit einfacher Genauigkeit handelte. Das BASIC, das mit dem TI-99/4a geliefert wurde, war ein Beispiel für einen Floating Point BASIC der frühen 80er Jahre. "Way back when", Sie würden ein String-Literal mit Anführungszeichen und eine String-Variable mit einem $ Sigil nach dem Bezeichnernamen erstellen. Variablen, die nicht das Sigel $ hatten, würden normalerweise auf den Typ der numerischen Variablen zurückgreifen, die die gegebene Grundartigkeit unterstützt (Integer oder Gleitkomma). GWBasic zum Beispiel würde standardmäßig auf Fließkommazahl setzen, wenn Sie nicht das % Sigil angeben, was "Integer" bedeutet. TI Extended Basic hatte keinen Integer-Typ, aber der numerische Fließkommatyp hatte etwa 15 signifikante Ziffern, wenn ich mich erinnere (mathematische Gleitkommafehler, die nicht standhalten).

Diese frühen Grundlagen wurden im Wesentlichen statisch typisiert, obwohl die Unterscheidung viel weniger nützlich als in mächtigeren Sprachen war. Die Auswahlmöglichkeiten für Datentypen waren gering: String, Number (manchmal Int, manchmal FP) und manchmal mit der Möglichkeit, anzugeben, ob eine Zahl als Int oder FP gilt. Hinter den Kulissen werden einige sogar beliebig zwischen Ints und Gleitkomma konvertiert. Oft waren solche Conversions hinter den Kulissen nicht gut dokumentiert.

Aber das war der Stand der Dinge in den 80er Jahren, als jeder mit einem Heimcomputer ein Hobbiest war, und Standards waren locker. Jeder Hardwarehersteller schien eine eigene Vorstellung davon zu haben, wie BASIC funktionieren sollte.

Modernere BASICs sind leistungsfähiger und ermöglichen eine bessere Kontrolle über variable Typen (wenn nötig).

+1

Danke für die ausführliche Antwort. –

2

Frühere Dialekte von BASIC wurden immer statisch typisiert. Numerische Variablen, String-Variablen und Arrays erforderten jeweils unterschiedliche Syntax. Auch die Länge der Namen war oft auf nur ein Symbol beschränkt. Die am häufigsten verwendete Syntax war nur V für numerische, V$ für String und Arrays wurden separat mit DIM deklariert.

Da ich seit gut 15 Jahren nicht mehr in BASIC programmiert habe, kann ich nicht mit Sicherheit sagen, was in modernen Dialekten vor sich geht.

1

Die erweiterte Version von BASIC, die in MultiValue-Datenbanksystemen verwendet wird, verwendet dynamische Typisierung. Dies bedeutet, dass der Compiler basierend auf der Logik und dem Kontext der Anweisungen entscheidet, wie mit Ihrer Variablen umgegangen wird.

Alles in Anführungszeichen ist ein String und jeder numerische Wert, der nicht in Anführungszeichen steht, ist eine Zahl. Zum Schreiben numerischer Daten in Form von Doppel- oder Gleitkommazahlen gibt es verschiedene Formatausdrücke, die Sie verwenden können, um dies zu erreichen, die Sie auf Ihre Variablen anwenden.

Letztendlich wird alles auf Datenbankebene als ASCII-Zeichenfolge gespeichert. Daher erzwingt der Entwickler den Typ auf Geschäftslogikebene, im Gegensatz zu der Datenbank, die ihn erzwingt.