Why is it Dim? (BASIC Language)
-
Upload
keiichi-hara -
Category
Engineering
-
view
95 -
download
2
Transcript of Why is it Dim? (BASIC Language)
Dimの話BASICの変数宣言はなぜDimなのかというBASIC生誕50周年な歴史
の話
NAWA Tech ~東京・奉納祭~ LT http://nawatech.connpass.com/event/12344/
なんで「Dim」って聞かれた
他の勉強会でC#のvar(型推論の宣言)とval(readonlyの書き換え案)の話をしていたとき、
ところで、Visual Basicの変数宣言のDimってなんでDimなの?と聞かれました。
知らない人が多いのですね。
(この資料での発表をした会場でも50%の人が知りませんでした)
英和辞書サイトのアルクさんによると
• Dimの意味
• 【自動】薄暗くなる、かすむ、曇る
• 【他動】〔照明{しょうめい}や明かりを〕薄暗くする、落とす
〈米〉〔車のヘッドライトを〕ロー・ビームにする◆【同】〈英〉dip
• 【形】〔場所{ばしょ}・照明{しょうめい}などが〕薄暗い{うすぐらい}
〔物が〕ぼやけた、ぼんやりとした、はっきり見えない
〔視力{しりょく}が〕弱い、悪い
〔記憶{きおく}などが〕おぼろげな、不鮮明{ふせんめい}な
〔考えなどが〕はっきりしない頭の鈍い、理解{りかい}が遅い
そもそも、BASICでは変数宣言は不要です
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs)
Handles MyBase.Load
UserName = "hara"
MsgBox(UserName)
End Sub
End Class
昔のBASICではこう書くことができました
10 A = 1
20 B = “原”
30 A = “敬一”
40 C = 2
50 PRINT A + B + STR$(C)
変数宣言がいりません。
というか、変数宣言がしたくてもできない言語処理系もありました。
BASICは変数の宣言をする必要がない
• BASICは変数の宣言をする必要がありませんでした。
• ですから、変数を宣言する命令語が定義されていませんでした。
• Dimは変数宣言の命令ではなかったのです。
Beginner's All-Purpse Symbolic Instruction Code
•初心者でも扱いやすいように設計された
•簡単に扱えるよう、
変数宣言は不要とされた
変数名の長さが1文字とか2文字とか、よくて6文字とか
保存できる文字列の長さもそんなに長いのダメだったりした
簡単にしたかった
言語処理系実装の都合も大きい
• インタープリターの実装を楽にしたいという動機なんだろうなあと思ってます。
•古いインタープリターでは、変数宣言をしなくても使える変数領域を用意しておいた。
• BASICのROMを解析したところ、たとえば、変数Aは0x7F00から16バイトね、という風に固定になっているものがあった。
• これは実装が超楽ちん。
しかし、配列はメモリー確保が必要でした
• 超楽ちんな変数の実装でしたが、配列では可変の容量を使うためにつかうことができず、メモリー確保の手続きが必要となりました。そこで、
配列だけ特別扱いしよう!となり、
10 Dim a$(2,3)
という風に書くことにしました。
これは、2つの次元指定で、aという変数の領域を、2 × 3だけ宣言という意味です。
Dimの用途拡大!
• あろうことか、「Dim」を配列次元指定以外にも流用することになり
Dim UserName(2,3) As String
も
Dim UserName As String
もOKに