5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Visual BasicAdvent Calendar 2024

Day 4

Dim が好きではないという話題について

Last updated at Posted at 2024-12-03

はじめに

これは、Visual Basic Advent Calendar 2024の4日目の記事となります。

Visual Basic の Discord を眺めていたら、気になる話題がありました。

「Dim が好きではないので、ModVB で Let を拡張しています。」

この発言は、VB.NET の拡張コンパイラModVB の開発者である Anthony D. Green 氏です。彼は、Microsoft のマネージ プログラミング言語チームで 8 年の経験があり、主に Roslyn コンパイラ チームのプログラムマネージャーをしていた方です。

「1993 年に初めて GWBASIC を学んで以来、BASIC で理解できなかったことがあります。それは、Dim という単語がどこから来たのか (中略) 実際、私はいつもそれが不適切だと感じていました。」

この発言は、Small Visual Basic の開発者である Mohammad Hamdy 氏です。

これは、どういう理由なのでしょうか?
好き嫌いとか考えたこともありませんでした。

Dim はどこから

変数宣言の時に使用する Dim ステートメントですが、「Dimension」の略語となります。
これは、配列を宣言するために使用されていた FORTRAN の用語 DIMENSION から、BASIC の最初のバージョン(米国ダートマス大学、 1966年頃)で採用されました。

FORTRAN の初期の頃は、すべての変数は数値型で、1文字の変数名が常に宣言され、配列はデフォルトで10個の要素を持っていた。配列のデフォルトが正しくない場合に Dim が必要でした。しかし、これは次元を意味します。そのため、VB には次元を「変更」するための ReDim ステートメントがあります。

変数は基本的に浮動小数点数である。変数名は、AからZまでと、後ろに数字を1文字続けた2文字(A0、Z9 など)が可能で、全部で286個の変数が使える。配列名はAからZまでに限られる。配列は定義しなくても使えるが、DIM文で定義していない配列は要素数10(添え字が1から10まで)となる。
ダートマスBASICのWikipediaページより

忘れられている LET

本来、DIM は "深さ" または次元ごとに許可される要素数を持つ要素を作成するためのものです。つまり、配列の次元を指定するために使用され、スカラー(単体)は別の方法で宣言されました。

それが「LET」です。

使用例は、明示的な Let ステートメントを使用して、式の値を変数に割り当てます。

Dim MyStr, MyInt
' The following variable assignments use the Let statement. 
Let MyStr = "Hello World"
Let MyInt = 5

次の例では、Let ステートメントを使用せずに同じ代入を行います。

Dim MyStr, MyInt
MyStr = "Hello World"
MyInt = 5

省略可能であるため、すっかり存在を忘れていました。

インライン変数の初期化

VBScript や VBA では、Dim は変数の宣言するだけで次のインライン変数の初期化のようなことが出来ないんですよね。

Dim MyStr = "Hello World"
Dim MyInt = 5

つまり、それが Let の役割だった。

最後に

話題の発端は、Small Visual Basicの開発者である Mohammad Hamdy 氏が、Small Visual Basic を VB.NET に一歩近づけるため Dim を追加しようと考えていた際に、
代わりに Let を使うべきか、それとも Dim を使うべきか を悩んでいたわけです。

その回答として、「Dim が好きではないので、ModVB で Let を拡張しています。」と返していました。

英語がネイティブの方にとって、Dim は「Dimension」の略語で、深さや次元という意味で配列用だったのに、スカラー(単体)用としても扱えてしまうことに違和感があったということですね。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?