Co oznacza DIM w Visual Basic i BASIC?

Odpowiedzi:

318

Dim pierwotnie (w języku BASIC) oznaczał Wymiar, ponieważ był używany do definiowania wymiarów tablicy.

(Oryginalną implementacją BASICa była Dartmouth BASIC, wywodząca się z FORTRAN, w której podano WYMIAR).

Obecnie Dim służy do definiowania dowolnej zmiennej, nie tylko tablic, więc jej znaczenie nie jest już intuicyjne.

Patrick McDonald
źródło
64
trochę tła może pomóc. We wczesnych wersjach podstawowych jedynymi zmiennymi, które należało zadeklarować, były tablice. Do ustawienia wymiarów tej tablicy użyto słowa kluczowego „Dim”.
Chris Simpson
26
Pamiętam, jak na początku lat 80. czytałem przewodnik po programowaniu w języku podstawowym i wyraźnie pamiętam, że wyjaśnia DIM, co oznacza Deklaracja w pamięci. Czytanie podręcznika Darthmouth Basic z '64 zawiera instrukcje LET i READ, które przypisują zmienne i ich wartości, a później w '68 DIM jest uwzględnione i faktycznie jest używane do tablic. bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris
4
Należy pamiętać, że we wczesnej fazie rozwoju języka często zdarzało się, że słowo kluczowe miało wiele znaczeń. Ponieważ w pierwotnym Basicu „Dim” było już słowem kluczowym używanym do deklarowania zmiennych tablicowych, słowo kluczowe zostało rozszerzone o deklarację wszystkich zmiennych. Wprowadzenia nowego słowa kluczowego uniknięto z wielu powodów, z których jednym z nich było to, że nie chcieli łamać istniejących programów, które już używały nowego słowa kluczowego jako nazwy zmiennej. Dzisiaj mamy bardziej zaawansowane technologie analizy i szybsze komputery, nie widzimy tego rodzaju ograniczeń.
zumalifeguard
3
Na przykład w późniejszym Basicu, takim jak Visual Basic, typ i zmienna mogą mieć tę samą nazwę. Świetnym przykładem zbyt dużego przeciążenia słowa kluczowego jest „statyczny” w C ++. Oznacza różne rzeczy w różnych kontekstach.
zumalifeguard
Dla tych, którzy przeglądają świetną instrukcję BASIC @RandyMorris, do której link znajduje się, pierwsze odniesienie do DIM znajduje się na stronie o numerze 21 lub na stronie 26 w samym pliku PDF. Bardziej formalna definicja znajduje się na stronie o numerze 37 lub 41 w samym pliku PDF.
John Cummings,
120

Dim przypisano mu różne znaczenia.

Znalazłem odniesienia do Dimznaczenia „Deklaracja w pamięci” , tym bardziej stosownym odniesieniem jest dokument dotyczący Dim Statement opublikowany w Oracle jako część Siebel VB Language Reference. Oczywiście możesz argumentować, że jeśli nie zadeklarujesz zmiennych w pamięci, gdzie to robisz? Może „Deklaracja w module” jest dobrą alternatywą, biorąc pod uwagę sposób Dimużycia.

Moim zdaniem „Deklaracja w pamięci” jest w rzeczywistości mnemonikiem stworzonym w celu ułatwienia nauki używania Dim. Widzę „Deklaracja w pamięci” jako lepsze znaczenie, ponieważ opisuje to, co robi w obecnych wersjach języka, ale nie jest to właściwe znaczenie.

W rzeczywistości u podstaw Basic Dimbył używany tylko do deklarowania tablic. W przypadku zmiennych regularnych nie użyto słowa kluczowego, zamiast tego wyprowadzono ich typ z nazwy. Na przykład, jeśli nazwa zmiennej kończy się, $to jest to ciąg znaków (jest to coś, co można zobaczyć nawet w nazwach metod do VB6, na przykład Mid$). I tak, używałeś Dimtylko do nadania wymiaru tablicom (zauważ, że ReDimzmienia rozmiar tablic).


Naprawdę, czy to ma znaczenie ? To znaczy słowo kluczowe ma swoje znaczenie w sztucznym języku. Nie musi to być słowo po angielsku ani w żadnym innym języku naturalnym. Może to oznaczać, co tylko chcesz, liczy się tylko to, że działa.

W każdym razie nie jest to do końca prawda. Ponieważ BASIC jest częścią naszej kultury, a zrozumienie, dlaczego tak się stało - mam nadzieję - pomoże poprawić naszą wizję świata.


Siedzę z mojego komputera z chęcią pomóc zachować ten niewielki fragment naszej kultury, który wydaje się zagubiony, zastąpiony zgadywaniem, co to było. I tak, wykopałem MSDN zarówno bieżące, jak i stare płyty CD z wersji 1998. Przeszukałem również dokumentację pod kątem starego QBasica [Musiałem użyć DOSBoxa] i udało mi się zdobyć instrukcję Darthmouth, wszystko po to, żeby o tym mówić Dim. Ku mojemu rozczarowaniu, nie mówią, co oznacza Dimskrót, a jedynie, jak to jest używane.

Ale zanim moja nadzieja zgasła, udało mi się znaleźć ten Przewodnik po systemie mikrokomputerowym BBC (który twierdzi, że pochodzi z 1984 roku i nie chcę w to wątpić). Mikrokomputer BBC zastosował wariant BASIC o nazwie BBC BASIC i jest to opisane w dokumencie. Chociaż nie mówi, co oznacza Dimskrót, mówi (na stronie 104):

... możesz zwymiarować N $, aby mieć tyle wpisów, ile chcesz. Na przykład DIM N $ (1000) utworzy tablicę ciągów z miejscem na 1000 różnych nazw.

Jak powiedziałem, nie oznacza to, że Dimoznacza wymiar, ale służy jako dowód na to, że skojarzenie Dimz nim Dimensionbyło powszechne w momencie pisania tego dokumentu.

Teraz mam satysfakcjonującą niespodziankę później (na stronie 208), tytuł sekcji opisującej słowo kluczowe DIM (uwaga: nie wymieniony w treści) mówi:

Wymiar DIM tablicy

Więc nie dostałem cytatu „Dim oznacza…”, ale wydaje mi się, że jasne jest, że każdy porządny człowiek, który jest w stanie odczytać ten dokument, uzna to za Dimwymiar.


Z nową nadzieją postanowiłem poszukać, jak Dimzostał wybrany. Znów nie znalazłem konta na ten temat, ale udało mi się znaleźć ostateczny cytat:

Aby móc korzystać z tablicy, należy ją zdefiniować w instrukcji DIM (wymiar).

Można go znaleźć w ramach internetowych poradników użytkownika True BASIC na stronie internetowej True BASIC inc, firmy założonej przez Thomasa Eugene'a Kurtza , współautora BASIC.


Tak więc, w rzeczywistości, Dimjest to skrót DIMENSIONi tak. To istniało wcześniej w FORTRAN, więc jest prawdopodobne, że zostało wybrane przez FORTRAN, jak powiedział Patrick McDonald w swojej odpowiedzi .


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)
Theraot
źródło
1
Słyszałem także „deklaruj w pamięci”.
żartuje
„Naprawdę, czy to ma znaczenie ?” Niedoceniany żart. Będę też teraz nalegał na ludzi, że tak właśnie Dimjest
Jacob Stamm,
30

Jest to skrót od Dimension, ponieważ pierwotnie był używany w BASIC-u do określania rozmiaru tablic.

DIM - (skrót od wymiaru) określ rozmiar tablic

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

Część oryginalnego kodu źródłowego kompilatora BASIC, w której przeskakiwałby po znalezieniu DIMpolecenia, w którym wyraźnie widać pierwotną intencję słowa kluczowego:

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

Później wykorzystano go do deklarowania wszelkiego rodzaju zmiennych, gdy w późniejszych implementacjach dodano możliwość określenia typu zmiennych.

Guffa
źródło
15

Zwymiaruj zmienną, po prostu mówisz kompilatorowi, że w pewnym momencie będziesz potrzebować zmiennej tego typu.

JoshBerke
źródło
13

To oznacza Wymiar, ale ogólnie jest czytane jako „Utwórz zmienną” lub „Przydziel przestrzeń dla tego”.

Robert Harvey
źródło
7

DIM oznacza Deklaracja w pamięci DIM x As New Integer tworzy miejsce w pamięci, w którym przechowywana jest zmienna x

MonstaP
źródło
6

Dawno temu DIM zarezerwował pamięć dla macierzy, a kiedy pamięć była ograniczona, trzeba było uważać, jak z niej korzystać. Kiedyś napisałem (w 1981 r.) Program BASIC na TRS-80 Model III z 48 KB pamięci RAM. Nie działałby na podobnej maszynie z 16kb RAM, dopóki nie zmniejszyłem rozmiaru tablicy zmieniając instrukcję DIM

Thornton
źródło
4

Skrót od wymiaru. To rodzaj zmiennej. Deklarujesz (lub „mówisz” Visual Basicowi), że konfigurujesz zmienną z tym słowem.

AbdulAziz
źródło
3

Słowo kluczowe Dim jest opcjonalne, gdy używamy go z modyfikatorami - Publiczny, Chroniony, Przyjaciel, Chroniony przyjaciel, Prywatny, Wspólny, Cienie, Statyczny, Tylko do odczytu itp. Np. - Static nTotal As Integer

W przypadku typu referencyjnego musimy użyć nowego słowa kluczowego, aby utworzyć nowe wystąpienie klasy lub struktury. np Dim lblTop As New System.Windows.Forms.Label.

Instrukcja Dim może być używana bez typu danych po ustawieniu opcji wnioskowania opcji na Wł . W takim przypadku kompilator określa typ danych zmiennej na podstawie wyrażenia inicjującego. Przykład:

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

Powyższe stwierdzenie jest równoważne z- Dim nExpVar As Integer

Chandralal
źródło
Witamy w StackOverflow i dziękuję za tę odpowiedź, ale tak naprawdę nie rozwija ona wielu innych odpowiedzi, które dają tę samą odpowiedź.
Deanna