Что означает DIM в Visual Basic и BASIC?

Ответы:

318

Dim первоначально (в BASIC) расшифровывался как Dimension, поскольку он использовался для определения размеров массива.

(Первоначальной реализацией BASIC была Dartmouth BASIC, которая произошла от FORTRAN, где прописано DIMENSION.)

В настоящее время Dim используется для определения любой переменной, а не только массива, поэтому ее значение больше не является интуитивным.

Патрик Макдональд
источник
64
немного фона может помочь. В ранних выпусках basic единственными переменными, которые нужно было объявить, были массивы. Ключевое слово "Dim" использовалось, чтобы установить размеры этого массива.
Крис Симпсон
26
Я помню, как читал руководство по программированию gw-basic в начале 80-х, и я точно помню его, объясняя значение DIM «Объявить в памяти». При чтении основного руководства Darthmouth от '64 операторы LET и READ присваивают переменные и их значения, а позже, в '68, DIM включен и фактически используется для массивов. bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris,
4
Нужно иметь в виду, что при ранней разработке языка часто было перегружено ключевое слово, имеющее несколько значений. Поскольку в оригинальной версии Basic слово «Dim» уже было ключевым словом, используемым для объявления переменных массива, это ключевое слово было расширено, чтобы включить объявление всех переменных. Введение нового ключевого слова было исключено по нескольким причинам, одна из которых заключается в том, что они не хотели ломать существующие программы, которые уже использовали новое ключевое слово в качестве имени переменной. Сегодня у нас есть более сложные технологии синтаксического анализа и более быстрые компьютеры, таких ограничений мы не видим.
zumalifeguard
3
Например, в более поздних версиях Basic, таких как Visual Basic, тип и переменная могут иметь одно и то же имя. Отличным примером слишком перегруженного ключевого слова является «статический» в C ++. Это означает разные вещи в разных контекстах.
zumalifeguard
Для тех, кто смотрит на великолепное руководство по BASIC, на которое ссылается @RandyMorris, первая ссылка на DIM находится на странице с номером 21 или на странице 26 в самом PDF-файле. Более формальное определение на странице с номерами 37 или 41 в самом PDF.
Джон Каммингс
120

Dim были разные значения, приписываемые ему.

Я нашел ссылки о Dimзначении «Объявить в памяти» , более релевантной является документ по Dim Statement, опубликованный Oracle как часть справочника по языку Siebel VB. Конечно, вы можете утверждать, что если вы не объявляете переменные в памяти, где вы это делаете? Может быть, «Объявить в модуле» является хорошей альтернативой, учитывая, как Dimиспользуется.

На мой взгляд, «Объявить в памяти» на самом деле является мнемоникой , созданной, чтобы облегчить изучение, как использовать Dim. Я вижу «Объявить в памяти» как лучшее значение, так как оно описывает то, что он делает в текущих версиях языка, но это не правильное значение.

На самом деле, у истоков Basic Dimиспользовался только для объявления массивов. Для обычных переменных ключевое слово не использовалось, вместо этого их тип был выведен из их имени. Например, если имя переменной заканчивается на $это, то это строка (это то, что вы могли видеть, например, даже в именах методов вплоть до VB6 Mid$). И так, вы использовали Dimтолько, чтобы дать размерность массивам (обратите внимание, что ReDimразмеры массивов).


Действительно, это имеет значение ? Я имею в виду, это ключевое слово, оно имеет значение внутри искусственного языка. Это не должно быть слово на английском или любом другом естественном языке. Так что это может означать, что вы хотите, все, что имеет значение, это то, что это работает.

Во всяком случае, это не совсем так. Поскольку BASIC является частью нашей культуры, и понимание того, почему оно стало таким, как оно есть, - я надеюсь, - поможет улучшить наше видение мира.


Я сижу у своего компьютера с желанием помочь сохранить этот маленький кусочек нашей культуры, который кажется потерянным, вместо того, чтобы угадывать, что это было. Итак, я выкопал MSDN как текущие, так и старые компакт-диски из версии 1998 года. Я также искал документацию для старого QBasic [Пришлось использовать DOSBox] и сумел получить руководство по Darthmouth, чтобы узнать, о чем они говорят Dim. К моему разочарованию, они не говорят, что означает Dim, а говорят только, как это используется.

Но до того, как моя надежда смутилась, мне удалось найти это руководство по использованию микрокомпьютерной системы BBC (которое, как утверждается, относится к 1984 году, и я не хочу в этом сомневаться). Микрокомпьютер BBC использовал вариант BASIC, названный BBC BASIC, и это описано в документе. Несмотря на то, что он не говорит о том, что означает Dim, он говорит (на странице 104):

... вы можете измерить N $, чтобы иметь столько записей, сколько хотите. Например, DIM N $ (1000) создаст строковый массив с пространством для 1000 различных имен.

Как я уже сказал, это не говорит о том, что Dimозначает измерение, но служит доказательством того, что общение Dimс ним Dimensionбыло обычным делом во время написания этого документа.

Позже я получил приятный сюрприз (на странице 208), заголовок раздела, описывающего ключевое слово DIM (примечание: его нет в содержании), гласит:

DIM измерение массива

Итак, я не получил цитату «Дим обозначает ...», но, думаю, ясно, что любой порядочный человек, способный прочитать этот документ, сочтет, что это Dimозначает измерение.


С новой надеждой я решил поискать, как Dimбыл выбран. Опять же, я не нашел аккаунта на эту тему, но все же смог найти точную цитату:

Прежде чем вы сможете использовать массив, вы должны определить его в операторе DIM (измерение).

Вы можете найти это как часть Руководства пользователя True BASIC Online на веб-странице True BASIC inc, компании, основанной Томасом Юджином Курцем , соавтором BASIC.


Таким образом, в действительности Dimэто сокращение для DIMENSION, и да. Это существовало в Фортране и раньше, поэтому вполне вероятно, что оно было выбрано под влиянием Фортрана, как сказал Патрик Макдональд в своем ответе .


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)
Theraot
источник
1
Я слышал "объявить в памяти" также.
Jocull
"Действительно, это имеет значение ?" Недооцененная шутка. Также я теперь буду настаивать на том, что это то, что на Dimсамом деле означает
Джейкоб Стамм
30

Это сокращение от Dimension, так как оно изначально использовалось в BASIC для указания размера массивов.

DIM - (сокращение от измерения) определяет размер массивов

Ссылка: http://en.wikipedia.org/wiki/Dartmouth_BASIC

Часть исходного исходного кода компилятора BASIC, куда он будет переходить при поиске DIMкоманды, в которой вы можете четко увидеть исходное намерение для ключевого слова:

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 $
       ...

Ссылка: http://dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf

Позже он стал использоваться для объявления всех видов переменных, когда в более поздних реализациях была добавлена ​​возможность указывать тип для переменных.

Guffa
источник
15

Измерение переменной, в основном вы говорите компилятору, что в какой-то момент вам понадобится переменная этого типа.

JoshBerke
источник
13

Он обозначает Dimension, но обычно читается как «Создать переменную» или «Выделить пространство для этого».

Роберт Харви
источник
10

Объявление переменной. Первоначально, это было сокращение от «измерение», которое не является термином, который используется в программировании (вне этого конкретного ключевого слова) в какой-либо значительной степени.

http://in.answers.yahoo.com/question/index?qid=20090310095555AANmiAZ

Shoban
источник
7

DIM расшифровывается как объявление в памяти. DIM x As New Integer создает в памяти пространство, в котором хранится переменная x.

MonstaP
источник
6

В свое время DIM зарезервировал память для массива, и когда память была ограничена, вы должны были быть осторожны, как вы ее использовали. Однажды я написал (в 1981 году) программу BASIC для TRS-80 Model III с 48 КБ ОЗУ. Он не будет работать на аналогичной машине с 16 КБ ОЗУ, пока я не уменьшу размер массива, изменив оператор DIM

Thornton
источник
4

Коротко для измерения. Это тип переменной. Вы заявляете (или «говорите» Visual Basic), что настраиваете переменную с этим словом.

Абдулазиз
источник
3

Ключевое слово Dim является необязательным, когда мы используем его с модификаторами: Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly и т. Д. Например: Static nTotal As Integer

Для ссылочного типа мы должны использовать ключевое слово new для создания нового экземпляра класса или структуры. например Dim lblTop As New System.Windows.Forms.Label.

Оператор Dim может использоваться без типа данных, если для параметра Option Infer установлено значение On . В этом случае компилятор выводит тип данных переменной из типа ее выражения инициализации. Пример :

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

Вышеприведенное утверждение эквивалентно Dim nExpVar As Integer

Chandralal
источник
Добро пожаловать в StackOverflow и благодарим вас за этот ответ, но он не расширяет многочисленные другие ответы, которые дают одинаковый ответ.
Дина