¿Qué significa DIM en Visual Basic y BASIC?

Respuestas:

318

Dim originalmente (en BASIC) significaba Dimensión, ya que se usaba para definir las dimensiones de una matriz.

(La implementación original de BASIC fue Dartmouth BASIC, que descendió de FORTRAN, donde se explica DIMENSION).

Hoy en día, Dim se utiliza para definir cualquier variable, no solo matrices, por lo que su significado ya no es intuitivo.

Patrick McDonald
fuente
64
Un poco de historia podría ayudar. En las primeras versiones de basic, las únicas variables que debían declararse eran las matrices. La palabra clave "Dim" se utilizó para establecer las dimensiones de esta matriz.
Chris Simpson
26
Recuerdo haber leído una guía de programación gw-basic a principios de los 80 y la recuerdo explícitamente explicando DIM que significa Declarar en memoria. Al leer la guía básica de Darthmouth del '64, las instrucciones LET y READ asignan variables y sus valores y, más tarde, en el '68 DIM se incluye y de hecho se usa para las matrices. bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris
44
Una cosa a tener en cuenta es que, en el desarrollo temprano del lenguaje, era común sobrecargar una palabra clave para tener múltiples significados. Dado que, en el Basic original, "Dim" ya era una palabra clave utilizada para declarar variables de matriz, la palabra clave se extendió para incluir la declaración de todas las variables. Se evitó la introducción de una nueva palabra clave por múltiples razones, una de las cuales es que no querían romper los programas existentes que ya usaban la nueva palabra clave como nombre de variable. Hoy tenemos tecnologías de análisis más sofisticadas y computadoras más rápidas, no vemos ese tipo de limitaciones.
zumalifeguard
3
Por ejemplo, en Basic posterior, como Visual Basic, un tipo y una variable podrían tener el mismo nombre. Un gran ejemplo de una palabra clave que se sobrecargó demasiado es "estática" en C ++. Significa cosas diferentes en diferentes contextos.
zumalifeguard
Para aquellos que miran el gran manual BASIC @RandyMorris vinculado, la primera referencia a DIM está en la página número 21 o es la página 26 en el PDF mismo. La definición más formal está en la página numerada 37 o 41 en el propio PDF.
John Cummings
120

Dim han tenido diferentes significados atribuidos a ello.

He encontrado referencias sobre el Dimsignificado "Declarar en memoria" , la referencia más relevante es un documento sobre Dim Statement publicado en Oracle como parte de la Referencia del lenguaje Siebel VB. Por supuesto, puede argumentar que si no declara las variables en la memoria, ¿dónde lo hace? Quizás "Declarar en módulo" es una buena alternativa considerando cómo Dimse usa.

En mi opinión, "Declarar en memoria" es en realidad un mnemónico , creado para que sea más fácil de aprender a usar Dim. Veo "Declarar en memoria" como un mejor significado, ya que describe lo que hace en las versiones actuales del lenguaje, pero no es el significado correcto.

De hecho, en los orígenes de Basic Dimsolo se usaba para declarar matrices. Para las variables regulares no se utilizó una palabra clave, en su lugar, su tipo se dedujo de su nombre. Por ejemplo, si el nombre de la variable termina con, $entonces es una cadena (esto es algo que puede ver incluso en nombres de métodos hasta VB6, por ejemplo Mid$). Y así, solía Dimdar solo dimensión a las matrices (observe que ReDimredimensiona las matrices).


¿Realmente importa ? Quiero decir, es una palabra clave que tiene su significado dentro de un lenguaje artificial. No tiene que ser una palabra en inglés o cualquier otro idioma natural. Por lo tanto, podría significar lo que quieras, lo único que importa es que funcione.

De todos modos, eso no es completamente cierto. Como BASIC es parte de nuestra cultura, y entender por qué se convirtió en lo que es, espero, ayudará a mejorar nuestra visión del mundo.


Me siento desde mi computadora con el deseo de ayudar a preservar esta pequeña parte de nuestra cultura que parece perdida, reemplazada por nuestra suposición de lo que era. Y así, he cavado MSDN tanto los CD actuales como los antiguos de la versión de 1998. También busqué en la documentación el viejo QBasic [Tuve que usar DOSBox] y logré obtener un manual de Darthmouth, todo para descubrir cómo hablan Dim. Para mi decepción, no dicen qué significa Dim, y solo dicen cómo se usa.

Pero antes de que mi esperanza se debilitara, logré encontrar esta Guía de uso del sistema de microcomputadoras de la BBC (que dice ser de 1984, y no quiero dudarlo). La BBC Microcomputer utilizó una variante de BASIC llamada BBC BASIC y se describe en el documento. Aunque no dice qué significa Dim, dice (en la página 104):

... puede dimensionar N $ para tener tantas entradas como desee. Por ejemplo, DIM N $ (1000) crearía una matriz de cadenas con espacio para 1000 nombres diferentes.

Como dije, no dice que Dimsignifica dimensión, pero sirve como prueba para demostrar que asociarse Dimcon Dimensionera algo común al momento de escribir ese documento.

Ahora, recibí una sorpresa gratificante más adelante (en la página 208), el título de la sección que describe la palabra clave DIM (nota: que no figura en el contenido) dice:

Dimensión DIM de una matriz

Entonces, no recibí la cita "Dim significa ..." pero supongo que está claro que cualquier ser humano decente que pueda leer esos documentos considerará que eso Dimsignifica dimensión.


Con renovada esperanza, decidí buscar cómo Dimfue elegido. Una vez más, no encontré una cuenta sobre el tema, pero pude encontrar una cita definitiva:

Antes de poder usar una matriz, debe definirla en una declaración DIM (dimensión).

Puede encontrar esto como parte de las Guías del usuario en línea de True BASIC en la página web de True BASIC inc, una compañía fundada por Thomas Eugene Kurtz , coautor de BASIC.


Entonces, en realidad, Dimes una abreviatura de DIMENSION, y sí. Eso existió en FORTRAN antes, por lo que es probable que haya sido elegido por la influencia de FORTRAN, como dijo Patrick McDonald en su respuesta .


Dim sum as string = "this is not a chinese meal" REM example usage in VB.NET ;)
Theraot
fuente
1
También escuché "declarar en memoria".
jocull
"Realmente, ¿Importa ?" Broma poco apreciada. También voy a insistirle a la gente que esto es lo que Dimrealmente significa
Jacob Stamm
30

Es la abreviatura de Dimension, ya que se utilizó originalmente en BASIC para especificar el tamaño de las matrices.

DIM - (abreviatura de dimensión) define el tamaño de las matrices

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

Una parte del código fuente original del compilador BASIC, donde saltaría al encontrar un DIMcomando, en el que puede ver claramente la intención original de la palabra clave:

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

Más tarde se utilizó para declarar todo tipo de variables, cuando se agregó la posibilidad de especificar el tipo de variables en implementaciones más recientes.

Guffa
fuente
15

Dimensione una variable, básicamente le está diciendo al compilador que va a necesitar una variable de este tipo en algún momento.

JoshBerke
fuente
13

Significa Dimensión, pero generalmente se lee como "Crear variable" o "Asignar espacio para esto".

Robert Harvey
fuente
7

DIM significa Declaración en memoria DIM x Como nuevo entero crea un espacio en la memoria donde se almacena la variable x

MonstaP
fuente
6

En el pasado, DIM reservó memoria para la matriz y cuando la memoria era limitada, tenía que tener cuidado de cómo la usaba. Una vez escribí (en 1981) un programa BÁSICO en TRS-80 Modelo III con 48Kb de RAM. No funcionaría en una máquina similar con 16Kb de RAM hasta que redujera el tamaño de la matriz al cambiar la declaración DIM

Thornton
fuente
4

Corto para Dimension. Es un tipo de variable. Usted declara (o "dice" a Visual Basic) que está configurando una variable con esta palabra.

AbdulAziz
fuente
3

La palabra clave Dim es opcional cuando la usamos con modificadores: público, protegido, amigo, amigo protegido, privado, compartido, sombras, estático, solo lectura, etc. Static nTotal As Integer

Para el tipo de referencia, tenemos que usar una nueva palabra clave para crear la nueva instancia de la clase o estructura. por ej Dim lblTop As New System.Windows.Forms.Label.

La instrucción Dim se puede usar sin un tipo de datos cuando establece la opción Inferir en Activado . En ese caso, el compilador deduce el tipo de datos de una variable del tipo de su expresión de inicialización. Ejemplo:

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

La declaración anterior es equivalente a: Dim nExpVar As Integer

Chandralal
fuente
Bienvenido a StackOverflow y gracias por esta respuesta, pero en realidad no se expande en las numerosas respuestas que dan la misma respuesta.
Deanna