Visual Basic 및 BASIC에서 DIM은 무엇을 의미합니까?


답변:


318

기본적으로 (기본) Dim은 배열의 차원을 정의하는 데 사용 되었기 때문에 Dimension을 나타 냈습니다.

BASIC의 원래 구현은 DARTmouth BASIC으로, FORTRAN에서 유래했으며 DIMENSION이 철자가되었습니다.

오늘날 Dim은 배열뿐만 아니라 모든 변수를 정의하는 데 사용되므로 그 의미는 더 이상 직관적이지 않습니다.


64
약간의 배경이 도움이 될 수 있습니다. 기본의 초기 릴리스에서 선언해야 할 유일한 변수는 배열이었습니다. "Dim"키워드는이 배열의 크기를 설정하는 데 사용되었습니다.
Chris Simpson

26
나는 80 년대 초반에 gw- 기본 프로그래밍 가이드를 읽은 것을 기억하고 메모리 선언 (Declarre In Memory)을 의미하는 DIM을 설명하는 것을 명시 적으로 기억합니다. 64 년부터 Darthmouth Basic 안내서를 읽으면 LET 및 READ 문에 변수와 해당 값이 할당되고 68 년 후반에는 DIM이 포함되어 실제로 배열에 사용됩니다. bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris

4
명심해야 할 것은 초기 언어 개발에서 여러 가지 의미를 갖도록 키워드를 오버로드하는 것이 일반적이라는 것입니다. 원래 Basic에서 "Dim"은 이미 배열 변수를 선언하는 데 사용 된 키워드이므로 모든 변수 선언을 포함하도록 키워드가 확장되었습니다. 여러 가지 이유로 새 키워드를 소개하지 않았습니다. 그 중 하나는 이미 새 키워드를 변수 이름으로 사용한 기존 프로그램을 중단하고 싶지 않기 때문입니다. 오늘날 우리는보다 정교한 파싱 기술과 더 빠른 컴퓨터를 가지고 있지만 이러한 유형의 한계는 보이지 않습니다.
zumalifeguard

3
예를 들어 Visual Basic과 같은 이후 Basic에서는 형식과 변수가 같은 이름 일 수 있습니다. 너무 많이 오버로드 된 키워드의 좋은 예는 C ++에서 "정적"입니다. 그것은 다른 상황에서 다른 것을 의미합니다.
zumalifeguard

훌륭한 BASIC 매뉴얼 @RandyMorris를보고자하는 사람들을 위해, DIM에 대한 첫 번째 참조는 21 페이지에 있거나 PDF 자체에 26 페이지에 있습니다. 보다 공식적인 정의는 PDF 자체의 37 또는 41 페이지에 있습니다.
존 커밍스

120

Dim 다른 의미로 사용되었습니다.

"Declare In Memory"Dim 의미 에 대한 참조를 찾았 습니다. 더 관련성이 높은 참조는 Siebel VB 언어 참조의 일부로 Oracle에 게시 된 Dim Statement 에 대한 문서입니다 . 물론 메모리에 변수를 선언하지 않으면 어디에서합니까? 어쩌면 "Declare in Module" 이 어떻게 사용 되는지를 고려하는 좋은 대안 일 것 입니다.Dim

내 생각에, "Declare In Memory"는 실제로 사용 방법을 쉽게 배울 수 있도록 만들어진 니모닉Dim 입니다. "메모리에 선언"은 현재 버전의 언어에서 수행하는 작업을 설명하는 더 나은 의미로 간주되지만 올바른 의미는 아닙니다.

실제로 Basic의 원점에서는 Dim배열을 선언하는 데만 사용되었습니다. 일반 변수의 경우 키워드가 사용되지 않고 대신 유형에서 이름이 추론되었습니다. 예를 들어 변수의 이름이 끝나는 $경우 문자열입니다 (예 : VB6까지의 메소드 이름에서도 볼 수 있음 Mid$). 따라서 배열의 크기 를 지정하는 Dim데만 사용 했습니다 (배열의 크기 를 조정하는 알림 ReDim).


정말 중요 합니까? 내 말은 인공 언어 안에서 의미가있는 키워드입니다. 영어 나 다른 자연어로 된 단어 일 필요는 없습니다. 따라서 원하는 것을 의미 할 수 있습니다. 중요한 것은 작동한다는 것입니다.

어쨌든, 그것은 완전히 사실이 아닙니다. BASIC은 우리 문화의 일부이기 때문에 그것이 왜 그렇게되었는지 이해하는 것이 세상에 대한 우리의 비전을 향상시키는 데 도움이되기를 바랍니다.


나는 잃어버린 것처럼 보이는이 작은 문화를 보존하기 위해 컴퓨터에 앉아 있었으며, 그것이 무엇인지에 대한 추측으로 대체되었습니다. 그래서 저는 1998 버전의 MSDN과 최신 CD를 모두 파헤 쳤습니다. 또한 이전 QBasic [DOS Box를 사용 했음]에 대한 문서를 검색하여 Darthmouth 매뉴얼을 얻었습니다 Dim. 실망스럽게도, 그들은 무엇을 의미하는지 말하지 않고 그것이 어떻게 사용되는지 말하지 않습니다 Dim.

그러나 나의 희망이 희미 해지기 전에, 나는이 BBC 마이크로 컴퓨터 시스템 사용 안내서 (1984 년부터 주장 된 것을 의심하지 않고)를 찾을 수있었습니다. BBC 마이크로 컴퓨터는 BBC BASIC이라는 BASIC의 변형을 사용했으며 문서에 설명되어 있습니다. 그럼에도 불구하고, 그것이 무엇을 의미하는지 말하지는 않습니다 Dim(104 페이지의).

... N $에 치수를 지정하여 원하는만큼 항목을 가질 수 있습니다. 예를 들어, DIM N $ (1000)은 1000 개의 다른 이름을위한 공간이있는 문자열 배열을 작성합니다.

내가 말했듯이, 그 말을하지 않는 Dim차원을 의미하지만, 연결하는 것을 보여주기 위해 증거 역할을 Dim함께하는 것은 Dimension해당 문서를 작성하는 시점에서 일반적인 일이었다.

이제 DIM 키워드를 설명하는 섹션의 제목 (주 : 내용에 나열되지 않음)에서 다음과 같이 (208 페이지) 보람있는 놀라움을 얻었습니다.

배열의 DIM 차원

그래서 나는 "Dim의 약자"라는 인용문을 얻지 못했지만 그 문서를 읽을 수있는 괜찮은 사람이 Dim치수 를 의미 한다고 생각 합니다.


새로운 희망으로, 나는 어떻게 Dim선택 되었는지 에 대해 검색하기로 결정했습니다 . 다시, 나는 주제에 대한 계정을 찾지 못했지만 여전히 명확한 인용문을 찾을 수있었습니다.

배열을 사용하려면 먼저 DIM (dimension) 문에서 정의해야합니다.

이 내용은 BASIC의 공동 저자 인 Thomas Eugene Kurtz가 설립 한 True BASIC inc의 웹 페이지에서 True BASIC 온라인 사용자 안내서의 일부로 찾을 수 있습니다 .


따라서, 실제로, Dim는 속기입니다 DIMENSION. 그것은 이전에 FORTRAN에 존재했기 때문에 Patrick McDonald가 그의 답변에서 말한 것처럼 FORTRAN의 영향에 의해 선택되었을 가능성이 있습니다 .


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

1
"메모리에 선언"도 들었습니다.
jocull

"정말 중요 합니까?" 감사하지 않은 농담. 또한 저는 사람들에게 이것이 Dim실제로 의미 하는 것이라고 주장하려고합니다.
Jacob Stamm

30

배열의 크기를 지정하기 위해 BASIC에서 원래 사용되었으므로 Dimension의 줄임말입니다.

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

변수의 크기를 정하십시오. 기본적으로 컴파일러는 어느 시점 에서이 유형의 변수가 필요하다고 컴파일러에 알립니다.


13

차원을 나타내지 만 일반적으로 "변수 작성"또는 "이 공간 할당"으로 읽습니다.



7

DIM은 Declaration In Memory를 의미합니다. DIM x As New Integer는 변수 x가 저장된 메모리 공간을 만듭니다.


6

예전에는 DIM이 어레이에 메모리를 예약했으며 메모리가 제한되었을 때이를 어떻게 사용했는지주의를 기울여야했습니다. 나는 한때 (1981 년에) 48Kb RAM을 가진 TRS-80 Model III에 BASIC 프로그램을 썼습니다. DIM 문을 변경하여 배열 크기를 줄일 때까지 16Kb RAM을 사용하는 유사한 시스템에서 실행되지 않습니다.


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.

Option Infer를 On으로 설정하면 Dim 문을 데이터 유형없이 사용할 수 있습니다 . 이 경우 컴파일러는 변수의 데이터 유형을 초기화 표현식의 유형에서 유추합니다. 예 :

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

위의 진술은 Dim nExpVar As Integer


StackOverflow에 오신 것을 환영합니다.이 답변에 감사드립니다.하지만 실제로 동일한 답변을 제공하는 수많은 다른 답변으로는 확장되지 않습니다.
Deanna
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.