【问题标题】:What does DIM stand for in Visual Basic and BASIC?DIM 在 Visual Basic 和 BASIC 中代表什么?
【发布时间】:2010-11-05 05:34:54
【问题描述】:

Dim 在 Visual Basic 中代表什么?

【问题讨论】:

    标签: vb6 language-design basic


    【解决方案1】:

    Dim 最初(在 BASIC 中)代表 Dimension,因为它用于定义数组的维度。

    (BASIC 的原始实现是 Dartmouth BASIC,它是 FORTRAN 的后裔,其中 DIMENSION 是拼写出来的。)

    现在,Dim 被用来定义任何变量,而不仅仅是数组,所以它的含义不再直观。

    【讨论】:

    • 一点背景知识可能会有所帮助。在基本的早期版本中,唯一需要声明的变量是数组。 “Dim”关键字用于设置此数组的尺寸。
    • 我记得在 80 年代初阅读了 gw-basic 编程指南,我清楚地记得它解释了 DIM 的含义,即 Declare In Memory。从 64 年阅读达斯茅斯基础指南有 LET 和 READ 语句分配变量及其值,后来在 68 年包括 DIM,实际上用于数组。 bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
    • 要记住的一点是,在早期的语言开发中,重载关键字以具有多种含义是很常见的。由于在最初的 Basic 中,“Dim”已经是用于声明数组变量的关键字,因此该关键字被扩展为包括声明所有变量。避免引入新关键字的原因有很多,其中之一是他们不想破坏已经使用新关键字作为变量名的现有程序。今天,我们拥有更复杂的解析技术和更快的计算机,我们看不到这些类型的限制。
    • 例如,在后来的Basic中,如Visual Basic,类型和变量可以同名。过度重载的关键字的一个很好的例子是 C++ 中的“静态”。它在不同的上下文中意味着不同的东西。
    • 对于那些查看伟大的 BASIC 手册 @RandyMorris 链接到的人来说,第一次引用 DIM 在第 21 页或 PDF 本身的第 26 页。更正式的定义在 PDF 本身的第 37 或 41 页。
    【解决方案2】:

    Dim 被赋予了不同的含义。

    我找到了关于Dim 的参考资料,意思是“在内存中声明”,更相关的参考资料是Dim Statement 上作为Siebel VB 语言参考的一部分发布的Oracle 的文档。当然,你可能会争辩说,如果你不声明内存中的变量,你在哪里做呢?考虑到Dim 的使用方式,也许“在模块中声明” 是一个不错的选择。

    在我看来,“Declare In Memory”实际上是一个助记符,旨在让Dim 更易于学习使用。我认为“Declare in Memory”的含义更好,因为它描述了它在当前版本的语言中的作用,但这不是正确的含义。

    事实上,Basic 的起源Dim 仅用于声明数组。对于常规变量,没有使用关键字,而是从它们的名称中推断出它们的类型。例如,如果变量的名称以 $ 结尾,那么它就是一个字符串(即使在 VB6 之前的方法名称中也可以看到这一点,例如 Mid$)。因此,您使用 Dim 只是为数组提供 维度(注意 ReDim 调整数组大小)。


    真的,重要吗?我的意思是,它是一个关键字,它在人工语言中具有其含义。它不必是英语或任何其他自然语言中的单词。所以它可以意味着任何你想要的,重要的是它有效。

    无论如何,这并不完全正确。由于 BASIC 是我们文化的一部分,理解它为什么会变成现在这样——我希望——将有助于改善我们对世界的看法。


    我坐在我的电脑前,希望帮助保护我们这片似乎已经丢失的文化,取而代之的是我们对它是什么的猜测。因此,我从 1998 年版本中挖掘了 MSDN 的当前和旧 CD。我还搜索了旧 QBasic [不得不使用 DOSBox] 的文档并设法获得了一些达斯茅斯手册,所有这些都是为了找到他们如何谈论 Dim。令我失望的是,他们没有说明Dim 代表什么,只说明它是如何使用的。

    但在我的希望渺茫之前,我设法找到了这个BBC Microcomputer System Used Guide(声称是 1984 年的,我不想怀疑它)。 BBC 微型计算机使用了一种称为 BBC BASIC 的 BASIC 变体,并在文档中进行了描述。尽管它没有说明Dim 代表什么,但它说(在第 104 页):

    ...您可以为 N$ 设置维度,使其拥有任意数量的条目。为了 例如,DIM N$(1000) 将创建一个空间为 1000 的字符串数组 不同的名字。

    正如我所说,它并不是说 Dim 代表维度,而是证明将 DimDimension 关联是在撰写该文档时很常见的事情。

    现在,我后来得到了一个惊喜(在第 208 页),描述 DIM 关键字的部分的标题(注意:内容中没有列出)说:

    数组的 DIM 维度

    所以,我没有得到“Dim 代表...”的引用,但我想很明显,任何能够阅读这些文档的体面的人都会认为 Dim 表示维度。


    带着新的希望,我决定搜索Dim是如何被选中的。同样,我没有找到有关该主题的帐户,但我仍然能够找到明确的报价:

    在使用数组之前,必须在 DIM(维度)语句中定义它。

    您可以在 True BASIC inc 的网页上找到 True BASIC Online User's Guides 的一部分,该公司由 BASIC 的合著者 Thomas Eugene Kurtz 创立。


    所以,实际上,DimDIMENSION 的简写,是的。之前在 FORTRAN 中存在,所以很可能是受 FORTRAN 的影响而将其选为Patrick McDonald said in his answer


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

    【讨论】:

    • 我也听说过“在内存中声明”。
    • “真的,重要吗?”被低估的笑话。另外,我现在要向人们强调,这就是 Dim 的真正含义
    【解决方案3】:

    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

    后来它被用来声明各种变量,在最近的实现中添加了为变量指定类型的可能性。

    【讨论】:

      【解决方案4】:

      标注一个变量,基本上你是在告诉编译器你将在某个时候需要一个这种类型的变量。

      【讨论】:

        【解决方案5】:

        它代表维度,但通常读作“创建变量”或“为此分配空间”。

        【讨论】:

          【解决方案6】:

          变量声明。最初,它是“维度”的缩写,在编程中(在这个特定关键字之外)没有任何重要程度使用的术语。

          http://in.answers.yahoo.com/question/index?qid=20090310095555AANmiAZ

          【讨论】:

            【解决方案7】:

            过去 DIM 为阵列保留内存,当内存有限时,您必须小心使用它。我曾经(在 1981 年)用 48Kb RAM 在 TRS-80 Model III 上编写了一个 BASIC 程序。在我通过更改 DIM 语句减小数组大小之前,它不会在具有 16Kb RAM 的类似机器上运行

            【讨论】:

              【解决方案8】:

              DIM 代表内存中的声明 DIM x 作为新整数 在内存中创建一个存储变量 x 的空间

              【讨论】:

                【解决方案9】:

                维度的缩写。它是一种变量。你声明(或“告诉”Visual Basic)你正在用这个词设置一个变量。

                【讨论】:

                  【解决方案10】:

                  Dim 关键字是可选的,当我们将它与修饰符一起使用时 - Public、Protected、Friend、Protected Friend、Private、Shared、Shadows、Static、ReadOnly 等。 例如- Static nTotal As Integer

                  对于引用类型,我们必须使用 new 关键字来创建类或结构的新实例。例如Dim lblTop As New System.Windows.Forms.Label.

                  Dim 语句可以在没有数据类型的情况下使用,当您设置 选项推断为开启。 在这种情况下,编译器从变量初始化表达式的类型推断出变量的数据类型。 示例:

                  Option Infer On
                  
                  Module SampleMod
                  
                  Sub Main()
                  
                   Dim nExpVar = 5
                  

                  以上语句等价于-Dim nExpVar As Integer

                  【讨论】:

                  • 欢迎来到 StackOverflow 并感谢您的回答,但它并没有真正扩展所有给出相同答案的众多其他答案。
                  猜你喜欢
                  • 2010-11-20
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-08-16
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多