DIM có nghĩa là gì trong Visual Basic và BASIC?


Câu trả lời:


318

Dim ban đầu (trong BASIC) là viết tắt của Dimension, vì nó được sử dụng để xác định kích thước của một mảng.

(Việc triển khai ban đầu của BASIC là Dartmouth BASIC, xuất phát từ FORTRAN, nơi DIMENSION được đánh vần.)

Ngày nay, Dim được sử dụng để xác định bất kỳ biến nào, không chỉ là mảng, vì vậy ý ​​nghĩa của nó không còn trực quan nữa.


64
một chút nền tảng có thể giúp đỡ. Trong các bản phát hành đầu tiên của các biến cơ bản duy nhất cần được khai báo là các mảng. Từ khóa "Dim" đã được sử dụng để đặt kích thước của mảng này.
Chris Simpson

26
Tôi nhớ đã đọc một hướng dẫn lập trình cơ bản gw vào đầu những năm 80 và tôi nhớ rõ ràng nó giải thích DIM có nghĩa là Khai báo trong bộ nhớ. Đọc hướng dẫn cơ bản của Darthmouth từ '64 có các câu lệnh LET và READ gán các biến và các giá trị của chúng và sau đó trong '68 DIM được bao gồm và trên thực tế được sử dụng cho các mảng. bitsavers.org/pdf/dartmouth/BASIC_4th_Edition_Jan68.pdf
RandyMorris

4
Một điều cần lưu ý là, trong sự phát triển ngôn ngữ sớm, người ta thường quá tải một từ khóa để có nhiều nghĩa. Vì, trong Cơ bản ban đầu, "Dim" đã là một từ khóa được sử dụng để khai báo các biến mảng, từ khóa được mở rộng để bao gồm khai báo tất cả các biến. Việc giới thiệu một từ khóa mới đã bị tránh vì nhiều lý do, một trong số đó là họ không muốn phá vỡ các chương trình hiện có đã sử dụng từ khóa mới làm tên biến. Ngày nay chúng ta có các công nghệ phân tích cú pháp tinh vi hơn và máy tính nhanh hơn, chúng ta không thấy các loại hạn chế đó.
bảo vệ zumalififard

3
Chẳng hạn, trong Basic sau này, chẳng hạn như Visual Basic, một loại và một biến có thể có cùng tên. Một ví dụ tuyệt vời về từ khóa bị quá tải quá nhiều là "tĩnh" trong C ++. Nó có nghĩa là những thứ khác nhau trong các bối cảnh khác nhau.
bảo vệ zumalififard

Đối với những người đang xem hướng dẫn BASIC tuyệt vời @RandyMorris được liên kết đến, tài liệu tham khảo đầu tiên về DIM nằm trên trang được đánh số 21 hoặc nó là trang 26 trong chính tệp PDF. Định nghĩa chính thức hơn là trên trang được đánh số 37 hoặc 41 trong chính PDF.
John Cummings

120

Dim đã có ý nghĩa khác nhau được quy cho nó.

Tôi đã tìm thấy các tài liệu tham khảo về Dimý nghĩa "Khai báo trong bộ nhớ" , tài liệu tham khảo phù hợp hơn là một tài liệu về Dim Statement đã xuất bản Oracle như một phần của Tài liệu tham khảo ngôn ngữ Siebel VB. Tất nhiên, bạn có thể lập luận rằng nếu bạn không khai báo các biến trong bộ nhớ thì bạn sẽ làm điều đó ở đâu? Có lẽ "Khai báo trong Mô-đun" là một cách thay thế tốt để xem xét cách Dimsử dụng.

Theo tôi, "Khai báo trong bộ nhớ" thực sự là một thứ ghi nhớ , được tạo ra để dễ học cách sử dụng hơn Dim. Tôi thấy "Khai báo trong bộ nhớ" là một ý nghĩa tốt hơn vì nó mô tả những gì nó làm trong các phiên bản hiện tại của ngôn ngữ, nhưng nó không phải là ý nghĩa chính xác.

Trong thực tế, nguồn gốc của Basic Dimchỉ được sử dụng để khai báo mảng. Đối với các biến thông thường, không có từ khóa nào được sử dụng, thay vào đó loại của chúng được suy ra từ tên của chúng. Chẳng hạn, nếu tên của biến kết thúc bằng $thì đó là một chuỗi (đây là thứ mà bạn có thể thấy ngay cả trong tên phương thức lên đến VB6 chẳng hạn Mid$). Và do đó, bạn Dimchỉ sử dụng để cung cấp kích thước cho các mảng (chú ý ReDimthay đổi kích thước mảng).


Thực sự, nó có vấn đề không? Ý tôi là, nó là một từ khóa có ý nghĩa của nó bên trong một ngôn ngữ nhân tạo. Nó không phải là một từ trong tiếng Anh hoặc bất kỳ ngôn ngữ tự nhiên nào khác. Vì vậy, nó có thể có nghĩa là bất cứ điều gì bạn muốn, tất cả những gì quan trọng là nó hoạt động.

Nhưng dù sao, điều đó không hoàn toàn đúng. Vì BASIC là một phần của văn hóa của chúng tôi và hiểu lý do tại sao nó trở thành như vậy - tôi hy vọng - sẽ giúp cải thiện tầm nhìn của chúng ta về thế giới.


Tôi ngồi vào từ máy tính của mình với mong muốn giúp bảo tồn mảnh văn hóa nhỏ bé này dường như đã bị mất, thay vào đó là suy đoán của chúng tôi về nó là gì. Và vì vậy, tôi đã đào MSDN cả CD hiện tại và CD cũ từ phiên bản 1998. Tôi cũng đã tìm kiếm tài liệu cho QBasic cũ [Phải sử dụng DOSBox] và quản lý để có được một số hướng dẫn sử dụng Darthmouth, tất cả để tìm cách họ nói về Dim. Đối với sự thất vọng của tôi, họ không nói những gì đại diện Dimcho, và chỉ nói nó được sử dụng như thế nào.

Nhưng trước khi hy vọng của tôi mờ mịt, tôi đã tìm được Hướng dẫn sử dụng hệ thống máy vi tính BBC này (tuyên bố đó là từ năm 1984 và tôi không muốn nghi ngờ về điều đó). Máy vi tính BBC đã sử dụng một biến thể của BASIC gọi là BBC BASIC và nó được mô tả trong tài liệu. Mặc dù, nó không nói những gì đại diện Dimcho nó, nó nói (trên trang 104):

... bạn có thể đặt kích thước N $ để có nhiều mục như bạn muốn. Ví dụ, DIM N $ (1000) sẽ tạo ra một chuỗi chuỗi có khoảng trống cho 1000 tên khác nhau.

Như tôi đã nói, nó không nói là Dimđại diện cho kích thước, nhưng đóng vai trò là bằng chứng cho thấy rằng liên kết Dimvới Dimensionlà một điều phổ biến tại thời điểm viết tài liệu đó.

Bây giờ, tôi đã có một bất ngờ bổ ích sau này (ở trang 208), tiêu đề cho phần mô tả từ khóa DIM (lưu ý: không được liệt kê trong nội dung) nói:

Kích thước DIM của một mảng

Vì vậy, tôi đã không nhận được câu trích dẫn "Dim là viết tắt của ..." nhưng tôi đoán rõ ràng rằng bất kỳ con người tử tế nào có thể đọc những tài liệu đó sẽ coi đó Dimlà chiều.


Với hy vọng đổi mới, tôi quyết định tìm kiếm về cách Dimđược chọn. Một lần nữa, tôi đã không tìm thấy một tài khoản về chủ đề này, tôi vẫn có thể tìm thấy một trích dẫn dứt khoát:

Trước khi bạn có thể sử dụng một mảng, bạn phải xác định nó trong câu lệnh DIM (thứ nguyên).

Bạn có thể tìm thấy điều này như một phần của Hướng dẫn người dùng trực tuyến True BASIC tại trang web của True BASIC inc, một công ty được thành lập bởi Thomas Eugene Kurtz , đồng tác giả của BASIC.


Vì vậy, trong thực tế, Dimlà một tốc ký DIMENSION, và có. Điều đó đã tồn tại trong FORTRAN trước đây, vì vậy có khả năng nó đã được chọn bởi ảnh hưởng của FORTRAN như Patrick McDonald đã nói trong câu trả lời của mình .


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

1
Tôi cũng đã nghe "khai báo trong bộ nhớ".
vui vẻ

"Thực sự, nó có vấn đề không?" Trò đùa không được đánh giá cao. Ngoài ra bây giờ tôi sẽ nhấn mạnh với mọi người rằng đây là những gì Dimthực sự đại diện cho
Jacob Stamm

30

Nó là viết tắt của Dimension, vì ban đầu nó được sử dụng trong BASIC để chỉ định kích thước của mảng.

DIM - (viết tắt của kích thước) xác định kích thước của mảng

Tham chiếu: http://en.wikipedia.org/wiki/Dartmouth_BASIC

Một phần của mã nguồn trình biên dịch BASIC ban đầu, nơi nó sẽ nhảy khi tìm DIMlệnh, trong đó bạn có thể thấy rõ ý định ban đầu của từ khóa:

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 $
       ...

Tham chiếu: http://dtss.dartmouth.edu/scans/BASIC/BASIC%20Compiler.pdf

Sau này, nó được sử dụng để khai báo tất cả các loại biến, khi khả năng chỉ định loại cho các biến đã được thêm vào trong các lần triển khai gần đây.


15

Kích thước một biến, về cơ bản, bạn đang nói với trình biên dịch rằng bạn sẽ cần một biến loại này tại một số điểm.


13

Nó là viết tắt của Dimension, nhưng thường được đọc là "Tạo biến" hoặc "Phân bổ không gian cho việc này".



7

DIM là viết tắt của Khai báo trong bộ nhớ DIM x Vì New Integer tạo một khoảng trắng trong bộ nhớ nơi lưu biến x


6

Quay lại ngày bộ nhớ dành riêng DIM cho mảng và khi bộ nhớ bị hạn chế, bạn phải cẩn thận với cách bạn sử dụng nó. Tôi đã từng viết (năm 1981) một chương trình BASIC trên TRS-80 Model III với RAM 48Kb. Nó sẽ không chạy trên một máy tương tự có RAM 16Kb cho đến khi tôi giảm kích thước mảng bằng cách thay đổi câu lệnh DIM


4

Viết tắt của Kích thước. Đó là một loại biến. Bạn tuyên bố (hoặc "nói" Visual Basic) rằng bạn đang thiết lập một biến với từ này.


3

Từ khóa Dim là tùy chọn, khi chúng tôi đang sử dụng nó với các từ bổ nghĩa - Công khai, Được bảo vệ, Bạn bè, Bạn bè được Bảo vệ, Riêng tư, Được chia sẻ, Bóng, Tĩnh, ReadOnly, v.v. Static nTotal As Integer

Đối với loại tham chiếu, chúng ta phải sử dụng từ khóa mới để tạo phiên bản mới của lớp hoặc cấu trúc. ví dụ Dim lblTop As New System.Windows.Forms.Label.

Câu lệnh Dim có thể được sử dụng với một kiểu dữ liệu khi bạn đặt Tùy chọn suy luận thành Bật . Trong trường hợp đó, trình biên dịch sẽ nhập kiểu dữ liệu của một biến từ kiểu biểu thức khởi tạo của nó. Thí dụ :

Option Infer On

Module SampleMod

Sub Main()

 Dim nExpVar = 5

Tuyên bố trên tương đương với- Dim nExpVar As Integer


Chào mừng bạn đến với StackOverflow và cảm ơn bạn về câu trả lời này, nhưng nó không thực sự mở rộng trên nhiều câu trả lời khác mà tất cả đều đưa ra cùng một câu trả lời.
Deanna
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.