Що означає DIM у Visual Basic та BASIC?


Відповіді:


318

Dim спочатку (в BASIC) означав Dimension, оскільки його використовували для визначення розмірів масиву.

(Первісна реалізація BASIC була Dartmouth BASIC, яка походить від FORTRAN, де прописано РОЗМІР.)

В даний час Dim використовується для визначення будь-якої змінної, а не лише масивів, тому її значення вже не інтуїтивно зрозуміле.


64
трохи фону може допомогти. У ранніх випусках основних єдиними змінними, які потрібно було оголосити, були масиви. Ключове слово "Dim" було використано для встановлення розмірів цього масиву.
Кріс Сімпсон

26
Я пам’ятаю, як читав посібник з програмування gw на початку 80-х, і я чітко пам’ятаю його, пояснюючи значення DIM у оголошенні пам’яті. Читаючи посібник Darthmouth Basic з '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 Заяву, опублікований Oracle як частина довідника мови Siebel VB. Звичайно, ви можете стверджувати, що якщо ви не оголошуєте змінні в пам'яті, де це робити? Можливо, "Декларувати в модулі" є хорошою альтернативою, враховуючи, як Dimвикористовується.

На мою думку, «Оголосити в пам’яті» насправді мнемонічне , створене для того, щоб легше навчитися користуватися Dim. Я вважаю "Декларувати в пам'яті" як кращий сенс, оскільки він описує те, що він робить у сучасних версіях мови, але це не належне значення.

Фактично, витоки Basic Dimвикористовувались лише для оголошення масивів. Для звичайних змінних жодне ключове слово не використовувалося, натомість їх тип був зроблений з їх імені. Наприклад, якщо ім'я змінної закінчується, $то це рядок (це те, що ви могли бачити, наприклад, навіть у назвах методів до VB6 Mid$). Отже, ви використовували Dimлише для надання розмірів масивам (зауважте, що ReDimзмінює розміри масивів).


Дійсно, чи це має значення ? Я маю на увазі, це ключове слово, яке має своє значення всередині штучної мови. Це не повинно бути словом англійською або будь-якою іншою природною мовою. Тож це може просто означати все, що ви хочете. Важливо лише те, що він працює.

Так чи інакше, це не зовсім вірно. Оскільки BASIC є частиною нашої культури, і розуміння того, чому воно стало таким, яким воно є - я сподіваюся - допоможе покращити наше бачення світу.


Я сиджу за своїм комп’ютером з бажанням допомогти зберегти цей маленький фрагмент нашої культури, який здається втраченим, замінений нашим здогадом про те, що це було. І так, я перекопав MSDN як поточні, так і старі компакт-диски з версії 1998 року. Я також шукав документацію для старої QBasic [Доводилося використовувати DOSBox] і встиг отримати якийсь посібник з Дартмута, щоб знайти те, як вони говорять 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 User на веб-сторінці True BASIC inc, компанії, заснованої Томасом Євгенієм Курцом , співавтором BASIC.


Отже, на жаль, Dimце скорочення DIMENSION, і так. Він існував у FORTRAN раніше, тому, ймовірно, він був обраний під впливом FORTRAN, як сказав Патрік Макдональд у своїй відповіді .


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)

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

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


15

Dimension - змінна, в основному ви говорите компілятору, що вам знадобиться змінна цього типу в якийсь момент.


13

Це означає «Вимір», але його зазвичай читають як «Створити змінну» або «Виділити простір для цього».



7

DIM позначає декларацію в пам'яті DIM x Оскільки New Integer створює простір в пам'яті, де зберігається змінна x


6

Ще в той день, коли DIM резервував пам'ять для масиву, і коли пам'ять обмежена, ви повинні бути обережними, як ви її використовували. Я колись писав (у 1981 році) програму BASIC на TRS-80 Model III з 48 Кб оперативної пам’яті. Він не працює на аналогічній машині з 16 Кб оперативної пам’яті, поки я не зменшив розмір масиву, змінивши оператор DIM


4

Короткий розмір. Це тип змінної. Ви заявляєте (або "скажіть" Visual Basic), що ви налаштовуєте змінну за допомогою цього слова.


3

Ключове слово Dim необов’язково, коли ми використовуємо його з модифікаторами - загальнодоступними, захищеними, друзями, захищеними товаришами, приватними, спільними, тінями, статичними, читаннями тощо тощо, наприклад - Static nTotal As Integer

Для типу довідки нам потрібно використовувати нове ключове слово для створення нового примірника класу чи структури. напрDim lblTop As New System.Windows.Forms.Label .

Оператор Dim може використовуватися для виводу типу даних, коли для параметра Ofer Infer встановлено значення Увімкнено . У цьому випадку компілятор виводить тип даних змінної з типу її вираження ініціалізації. Приклад:

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

Вищенаведене твердження еквівалентно Dim nExpVar As Integer


Ласкаво просимо до StackOverflow і дякуємо за цю відповідь, але це не дуже розширюється на численні інші відповіді, на які всі дають однакову відповідь.
Діанна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.