O que o DIM representa no Visual Basic e no BASIC?

285

O que significa DIM no Visual Basic?

Nick Katsivelos
fonte

Respostas:

318

Dim originalmente (em BASIC) significava Dimensão, pois era usado para definir as dimensões de uma matriz.

(A implementação original do BASIC foi o Dartmouth BASIC, que descendia de FORTRAN, onde DIMENSION é explicitado.)

Atualmente, Dim é usado para definir qualquer variável, não apenas matrizes, portanto seu significado não é mais intuitivo.

Patrick McDonald
fonte
64
um pouco de experiência pode ajudar. Nas versões iniciais do básico, as únicas variáveis ​​que precisavam ser declaradas eram matrizes. A palavra-chave "Dim" foi usada para definir as dimensões dessa matriz.
22410 Chris Simpson
26
Lembro-me de ler um guia de programação básico do GW no início dos anos 80 e lembro-me explicitamente de explicar o significado de DIM, Declare In Memory. Lendo o guia Darthmouth Basic de '64, as instruções LET e READ atribuem variáveis ​​e seus valores e, posteriormente, em 68, o DIM é incluído e, de fato, é usado para matrizes. bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris
4
Um aspecto a ter em mente é que, no desenvolvimento inicial da linguagem, era comum sobrecarregar uma palavra-chave para ter vários significados. Como no Basic original, "Dim" já era uma palavra-chave usada para declarar variáveis ​​de matriz, a palavra-chave foi estendida para incluir a declaração de todas as variáveis. A introdução de uma nova palavra-chave foi evitada por vários motivos, um dos quais é que eles não desejam interromper os programas existentes que já usavam a nova palavra-chave como nome de variável. Hoje, temos tecnologias de análise mais sofisticadas e computadores mais rápidos, não vemos esses tipos de limitações.
zumalifeguard
3
Por exemplo, no Basic mais tarde, como o Visual Basic, um tipo e uma variável poderiam ter o mesmo nome. Um ótimo exemplo de uma palavra-chave que foi sobrecarregada demais é "estática" em C ++. Significa coisas diferentes em diferentes contextos.
zumalifeguard
Para aqueles que observam o excelente manual BASR @RandyMorris vinculado, a primeira referência ao DIM está na página numerada 21 ou na página 26 no próprio PDF. A definição mais formal está na página numerada 37 ou 41 no próprio PDF.
John Cummings
120

Dim tiveram significados diferentes atribuídos a ele.

Encontrei referências sobre o Dimsignificado "Declarar na memória" , a referência mais relevante é um documento no Dim Statement publicado no Oracle como parte do Siebel VB Language Reference. Obviamente, você pode argumentar que, se não declarar as variáveis ​​na memória, onde o faz? Talvez "Declarar no módulo" seja uma boa alternativa, considerando como Dimé usado.

Na minha opinião, "Declarar na memória" é na verdade um mnemônico , criado para facilitar o aprendizado de como usar Dim. Eu vejo "Declarar na memória" como um significado melhor, pois descreve o que faz nas versões atuais do idioma, mas não é o significado adequado.

De fato, nas origens do Basic Dimera usado apenas para declarar matrizes. Para variáveis ​​regulares, nenhuma palavra-chave foi usada; seu tipo foi deduzido do nome. Por exemplo, se o nome da variável termina com $, é uma string (isso é algo que você pode ver mesmo em nomes de métodos até VB6, por exemplo Mid$). E assim, você costumava Dimdar dimensão às matrizes (observe que ReDimredimensiona matrizes).


Realmente, isso importa ? Quero dizer, é uma palavra-chave que tem seu significado dentro de uma linguagem artificial. Não precisa ser uma palavra em inglês ou em qualquer outro idioma natural. Então, isso pode significar o que você quiser, tudo o que importa é que funcione.

De qualquer forma, isso não é completamente verdade. Como o BASIC faz parte da nossa cultura, e entender por que veio a ser como é - espero - ajudará a melhorar nossa visão do mundo.


Sento-me no meu computador com o desejo de ajudar a preservar esse pedacinho de nossa cultura que parece perdido, substituído por adivinhar o que era. E assim, eu peguei o MSDN atual e os CDs antigos da versão de 1998. Também procurei na documentação o antigo QBasic [Tinha que usar o DOSBox] e consegui obter um manual de Darthmouth, tudo para descobrir como eles falam Dim. Para minha decepção, eles não dizem o que Dimsignifica e apenas dizem como é usado.

Mas, antes que minha esperança estivesse fraca, consegui encontrar este Guia usado do sistema de microcomputadores da BBC (que afirma ser de 1984 e não quero duvidar). O microcomputador da BBC usou uma variante do BASIC chamada BBC BASIC e é descrita no documento. Mesmo assim, não diz o que Dimsignifica, diz (na página 104):

... você pode dimensionar N $ para ter quantas entradas quiser. Por exemplo, DIM N $ (1000) criaria uma matriz de cadeias com espaço para 1000 nomes diferentes.

Como eu disse, não diz que isso Dimsignifica dimensão, mas serve como prova para mostrar que a associação Dimcom Dimensionera uma coisa comum na hora de escrever esse documento.

Agora, tive uma surpresa gratificante mais tarde (na página 208), o título da seção que descreve a palavra-chave DIM (nota: que não está listada no conteúdo) diz:

Dimensão DIM de uma matriz

Portanto, não recebi a citação "Dim significa ...", mas acho que fica claro que qualquer ser humano decente capaz de ler esses documentos considerará isso como Dimdimensão.


Com renovada esperança, decidi pesquisar sobre como Dimfoi escolhido. Mais uma vez, não encontrei uma conta sobre o assunto, ainda consegui encontrar uma citação definitiva:

Antes de poder usar uma matriz, você deve defini-la em uma instrução DIM (dimensão).

Você pode encontrar isso como parte dos Guias do usuário do True BASIC Online na página da Web do True BASIC inc, uma empresa fundada por Thomas Eugene Kurtz , co-autor do BASIC.


Então, na realidade, Dimé uma abreviação para DIMENSION, e sim. Isso já existia no FORTRAN antes, portanto é provável que tenha sido escolhido por influência do FORTRAN, como Patrick McDonald disse em sua resposta .


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)
Theraot
fonte
1
Eu ouvi "declarar na memória" também.
jocull
"Realmente, isso importa ?" Piada subestimada. Também agora vou insistir para as pessoas que isso é o que Dimrealmente significa
Jacob Stamm
30

É abreviação de Dimension, pois foi originalmente usado no BASIC para especificar o tamanho das matrizes.

DIM - (abreviação de dimensão) define o tamanho das matrizes

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

Parte do código-fonte original do compilador BASIC, onde ele saltaria ao encontrar um DIMcomando, no qual você pode ver claramente a intenção original da palavra-chave:

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

Posteriormente, passou a ser usado para declarar todos os tipos de variáveis, quando a possibilidade de especificar o tipo para variáveis ​​foi adicionada em implementações mais recentes.

Guffa
fonte
15

Dimensione uma variável, basicamente você está dizendo ao compilador que precisará de uma variável desse tipo em algum momento.

JoshBerke
fonte
13

Significa Dimensão, mas geralmente é lido como "Criar variável" ou "Alocar espaço para isso".

Robert Harvey
fonte
7

DIM significa Declaração na Memória DIM x Como Novo Inteiro cria um espaço na memória onde a variável x é armazenada

MonstaP
fonte
6

No dia anterior, o DIM reservava memória para a matriz e quando a memória era limitada, era preciso ter cuidado ao usá-la. Certa vez, escrevi (em 1981) um programa BASIC no TRS-80 Modelo III com 48Kb de RAM. Ele não funcionaria em uma máquina semelhante com 16Kb de RAM até que eu diminuísse o tamanho da matriz alterando a instrução DIM

Thornton
fonte
4

Abreviação de Dimensão. É um tipo de variável. Você declara (ou "diz" ao Visual Basic) que está configurando uma variável com esta palavra.

AbdulAziz
fonte
3

A palavra-chave Dim é opcional, quando a usamos com modificadores - Público, Protegido, Amigo, Amigo Protegido, Privado, Compartilhado, Sombras, Estático, ReadOnly etc. Static nTotal As Integer

Para o tipo de referência, precisamos usar a nova palavra-chave para criar a nova instância da classe ou estrutura. por exemplo Dim lblTop As New System.Windows.Forms.Label.

A instrução Dim pode ser usada sem um tipo de dados quando você define Opção Infer como Ativado . Nesse caso, o compilador infere o tipo de dados de uma variável do tipo de sua expressão de inicialização. Exemplo:

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

A declaração acima é equivalente a Dim nExpVar As Integer

Chandralal
fonte
Bem-vindo ao StackOverflow e obrigado por esta resposta, mas na verdade não se expande nas inúmeras outras respostas que dão a mesma resposta.
217 Deanna