Wofür steht DIM in Visual Basic und BASIC?

Antworten:

318

Dim stand ursprünglich (in BASIC) für Dimension, da es zum Definieren der Dimensionen eines Arrays verwendet wurde.

(Die ursprüngliche Implementierung von BASIC war Dartmouth BASIC, das von FORTRAN abstammt, wo DIMENSION geschrieben ist.)

Heutzutage wird Dim verwendet, um jede Variable zu definieren, nicht nur Arrays, daher ist ihre Bedeutung nicht mehr intuitiv.

Patrick McDonald
quelle
64
Ein kleiner Hintergrund könnte helfen. In früheren Versionen von Basic mussten nur Arrays deklariert werden. Das Schlüsselwort "Dim" wurde verwendet, um die Abmessungen dieses Arrays festzulegen.
Chris Simpson
26
Ich erinnere mich, dass ich in den frühen 80ern eine gw-grundlegende Programmieranleitung gelesen habe, und ich erinnere mich ausdrücklich daran, wie ich DIM erklärt habe, was Declare In Memory bedeutet. Beim Lesen des Darthmouth Basic-Handbuchs aus '64 weisen LET- und READ-Anweisungen Variablen und deren Werte zu. Später in '68 ist DIM enthalten und wird tatsächlich für Arrays verwendet. bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris
4
Eine Sache, die Sie beachten sollten, ist, dass es in der frühen Sprachentwicklung üblich war, ein Schlüsselwort zu überladen, um mehrere Bedeutungen zu haben. Da "Dim" im ursprünglichen Basic bereits ein Schlüsselwort zum Deklarieren von Array-Variablen war, wurde das Schlüsselwort um das Deklarieren aller Variablen erweitert. Die Einführung eines neuen Schlüsselworts wurde aus mehreren Gründen vermieden. Einer davon war, dass vorhandene Programme, die das neue Schlüsselwort bereits als Variablennamen verwendeten, nicht beschädigt werden sollten. Heute haben wir ausgefeiltere Parsing-Technologien und schnellere Computer. Wir sehen diese Art von Einschränkungen nicht.
Zumalifeguard
3
In späteren Basic-Versionen wie Visual Basic können beispielsweise ein Typ und eine Variable denselben Namen haben. Ein gutes Beispiel für ein zu stark überladenes Schlüsselwort ist "statisch" in C ++. Es bedeutet verschiedene Dinge in verschiedenen Kontexten.
Zumalifeguard
Für diejenigen, die sich das großartige BASIC-Handbuch @RandyMorris ansehen, auf das verwiesen wird, befindet sich der erste Verweis auf DIM auf Seite 21 oder auf Seite 26 im PDF selbst. Die formellere Definition finden Sie auf der Seite mit den Nummern 37 oder 41 im PDF.
John Cummings
120

Dim wurden unterschiedliche Bedeutungen zugeschrieben.

Ich habe Referenzen zur DimBedeutung von "Im Speicher deklarieren" gefunden . Die relevantere Referenz ist ein Dokument über Dim Statement, das Oracle als Teil der Siebel VB-Sprachreferenz veröffentlicht hat. Natürlich können Sie argumentieren, wenn Sie die Variablen im Speicher nicht deklarieren, wo machen Sie das? Vielleicht ist "In Modul deklarieren" eine gute Alternative, wenn man bedenkt, wie Dimes verwendet wird.

Meiner Meinung nach ist "Declare In Memory" eigentlich eine Mnemonik , die erstellt wurde, um das Erlernen der Verwendung zu erleichtern Dim. Ich sehe "Im Gedächtnis deklarieren" als eine bessere Bedeutung, da es beschreibt, was es in aktuellen Versionen der Sprache tut, aber es ist nicht die richtige Bedeutung.

Tatsächlich wurde Basic Dimzu Beginn nur zum Deklarieren von Arrays verwendet. Für reguläre Variablen wurde kein Schlüsselwort verwendet, stattdessen wurde ihr Typ aus ihrem Namen abgeleitet. Wenn beispielsweise der Name der Variablen mit endet, handelt $es sich um eine Zeichenfolge (dies ist beispielsweise auch bei Methodennamen bis VB6 zu sehen Mid$). Und so, verwendete man Dimnur geben Dimension zu dem Arrays (Hinweis , dass ReDimArrays ändert die Größe).


Wirklich, ist es wichtig ? Ich meine, es ist ein Schlüsselwort, das seine Bedeutung in einer künstlichen Sprache hat. Es muss kein Wort in Englisch oder einer anderen natürlichen Sprache sein. Es könnte also bedeuten, was immer Sie wollen. Alles, was zählt, ist, dass es funktioniert.

Jedenfalls ist das nicht ganz richtig. Da BASIC Teil unserer Kultur ist und das Verständnis, warum es so geworden ist, wie es ist - ich hoffe - wird dazu beitragen, unsere Vision von der Welt zu verbessern.


Ich sitze von meinem Computer aus mit dem Wunsch, dieses kleine Stück unserer Kultur zu bewahren, das verloren zu sein scheint, ersetzt durch unsere Vermutung, was es war. Und so habe ich MSDN sowohl aktuelle als auch die alten CDs aus der Version von 1998 ausgegraben. Ich habe auch die Dokumentation nach dem alten QBasic [musste DOSBox verwenden] durchsucht und es geschafft, ein Darthmouth-Handbuch zu bekommen, um herauszufinden, wie sie darüber sprechen Dim. Zu meiner Enttäuschung sagen sie nicht, wofür es Dimsteht, sondern nur, wie es verwendet wird.

Aber bevor meine Hoffnung schwächer wurde, habe ich es geschafft, diesen BBC Microcomputer System Used Guide zu finden (der angeblich aus dem Jahr 1984 stammt und an dem ich nicht zweifeln möchte). Der BBC-Mikrocomputer verwendete eine Variante von BASIC namens BBC BASIC und ist im Dokument beschrieben. Auch wenn nicht gesagt wird, wofür es Dimsteht, heißt es (auf Seite 104):

... Sie können N $ dimensionieren, um so viele Einträge zu haben, wie Sie möchten. Zum Beispiel würde DIM N $ (1000) ein String-Array mit Platz für 1000 verschiedene Namen erstellen.

Wie gesagt, es heißt nicht, dass dies Dimfür Dimension steht, sondern dient als Beweis dafür, dass das Assoziieren Dimmit Dimensionzum Zeitpunkt des Schreibens dieses Dokuments üblich war.

Jetzt habe ich später eine lohnende Überraschung erhalten (auf Seite 208). Der Titel des Abschnitts, der das DIM-Schlüsselwort beschreibt (Hinweis: das ist nicht im Inhalt aufgeführt) lautet:

DIM-Dimension eines Arrays

Ich habe also nicht das Zitat "Dim steht für ..." erhalten, aber ich denke, es ist klar, dass jeder anständige Mensch, der dieses Dokument lesen kann, dies als DimDimension betrachtet.


Mit neuer Hoffnung beschloss ich zu suchen, wie Dimausgewählt wurde. Auch hier habe ich keinen Bericht zu diesem Thema gefunden, dennoch konnte ich ein endgültiges Zitat finden:

Bevor Sie ein Array verwenden können, müssen Sie es in einer DIM-Anweisung (Dimension) definieren.

Sie finden dies als Teil der True BASIC Online-Benutzerhandbücher auf der Webseite von True BASIC Inc., einem Unternehmen, das von Thomas Eugene Kurtz , Co-Autor von BASIC, gegründet wurde.


Also, in Wirklichkeit Dimist eine Abkürzung für DIMENSIONund ja. Das gab es schon in FORTRAN, daher ist es wahrscheinlich, dass es durch den Einfluss von FORTRAN ausgewählt wurde, wie Patrick McDonald in seiner Antwort sagte .


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)
Theraot
quelle
1
Ich habe auch "im Gedächtnis deklarieren" gehört.
Jocull
"Wirklich, ist es wichtig ?" Unterschätzter Witz. Außerdem werde ich jetzt darauf bestehen, dass dies das ist, wofür Dimeigentlich steht
Jacob Stamm
30

Es ist die Abkürzung für Dimension, da es ursprünglich in BASIC verwendet wurde, um die Größe von Arrays anzugeben.

DIM - (kurz für Dimension) definiert die Größe von Arrays

Ref: http://en.wikipedia.org/wiki/Dartmouth_BASIC

Ein Teil des ursprünglichen BASIC-Compiler-Quellcodes, in dem beim Auffinden eines DIMBefehls gesprungen wird , in dem Sie die ursprüngliche Absicht für das Schlüsselwort deutlich erkennen können:

DIM    LDA XR01             BACK OFF OBJECT POINTER
       SUB N3
       STA RX01
       LDA L        2       GET VARIABLE TO BE DIMENSIONED
       STA 3
       LDA S        3
       CAB N36              CHECK FOR $ ARRAY
       BRU *+7              NOT $
       ...

Ref: http://dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf

Später wurde es verwendet, um alle Arten von Variablen zu deklarieren, als in neueren Implementierungen die Möglichkeit hinzugefügt wurde, den Typ für Variablen anzugeben.

Guffa
quelle
15

Bemaßung einer Variablen, im Grunde sagen Sie dem Compiler, dass Sie irgendwann eine Variable dieses Typs benötigen werden.

JoshBerke
quelle
13

Es steht für Dimension, wird aber im Allgemeinen als "Variable erstellen" oder "Platz dafür zuweisen" gelesen.

Robert Harvey
quelle
7

DIM steht für Declaration In Memory. DIM x As New Integer erstellt einen Speicherplatz, in dem die Variable x gespeichert ist

MonstaP
quelle
6

Früher hat DIM Speicher für das Array reserviert, und als der Speicher begrenzt war, musste man vorsichtig sein, wie man ihn verwendet. Ich habe einmal (1981) ein BASIC-Programm auf TRS-80 Model III mit 48 KB RAM geschrieben. Es würde nicht auf einem ähnlichen Computer mit 16 KB RAM ausgeführt, bis ich die Arraygröße durch Ändern der DIM-Anweisung verringert habe

Thornton
quelle
4

Abkürzung für Dimension. Es ist eine Art Variable. Sie deklarieren (oder "sagen" Visual Basic), dass Sie eine Variable mit diesem Wort einrichten.

AbdulAziz
quelle
3

Das Dim-Schlüsselwort ist optional, wenn wir es mit den Modifikatoren Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly usw. verwenden. Static nTotal As Integer

Für den Referenztyp müssen wir ein neues Schlüsselwort verwenden, um die neue Instanz der Klasse oder Struktur zu erstellen. zB Dim lblTop As New System.Windows.Forms.Label.

Die Dim-Anweisung kann ohne Datentyp verwendet werden, wenn Sie Option Infer auf On setzen . In diesem Fall leitet der Compiler den Datentyp einer Variablen vom Typ ihres Initialisierungsausdrucks ab. Beispiel:

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

Die obige Aussage ist äquivalent zu- Dim nExpVar As Integer

Chandralal
quelle
Willkommen bei StackOverflow und vielen Dank für diese Antwort, aber sie erweitert nicht wirklich die zahlreichen anderen Antworten, die alle dieselbe Antwort geben.
Deanna