有馬です。

ogino / duo.co.jp (Ogino Junya) wrote

| 199x年に、私はRubyという製品を開発した。これとMicrosoftのQuickBasicを
| 組み合わせるとVisualBasicになる..

QuickBasic は中間コードにコンパイルして、ランタイムと一緒に使うタイプの
言語処理系でした。今でも、Windows9x には QBASIC というサブセットが
バンドルされていると思います。

VisualBasic 1.0 for MSDOS という製品は、フォームデザイナ(!)とイベント
プロシージャが便利でした。使い捨てる入力画面を作るのによく使いました。
イベントプロシージャはあらかじめ定義されたものをオーバーライドできますが、
あたらしく定義することはできません。これは VisualBasic 2.0 for Windows でも
変りませんでした。画面以外のところには、文法は変だわ、処理は遅いわ、
ライブラリは作りづらいわ、といやな思い出もたくさんあります。
Windows でお手軽に画面を作れるというのは、かなり強力でしたが、まもなく
Delphi が出たのであっさりと乗り換えました。その後の VB はよく知りません。

御参考までに、かの Ruby の形に近かろう VBDOS のソースを紹介します。
起動するとフォームを表示して、5秒経つか、ボタンをクリックされるのを
待って閉じるというだけのものです。

Version 1.00
BEGIN Form Hello
  AutoRedraw   = 0
  BackColor    = QBColor(7)
  BorderStyle  = 2
  Caption      = "Hello"
  ControlBox   = -1
  Enabled      = -1
  ForeColor    = QBColor(0)
  Height       = Char(10)
  Left         = Char(21)
  MaxButton    = -1
  MinButton    = -1
  MousePointer = 0
  Tag          = ""
  Top          = Char(7)
  Visible      = -1
  Width        = Char(40)
  WindowState  = 0
  BEGIN CommandButton Command1
    BackColor    = QBColor(7)
    Cancel       = 0
    Caption      = "OK"
    Default      = 0
    DragMode     = 0
    Enabled      = -1
    Height       = Char(3)
    Left         = Char(10)
    MousePointer = 0
    TabIndex     = 0
    TabStop      = -1
    Tag          = ""
    Top          = Char(5)
    Visible      = -1
    Width        = Char(20)
  END
  BEGIN Label Label1
    Alignment    = 0
    AutoSize     = 0
    BackColor    = QBColor(7)
    BorderStyle  = 0
    Caption      = "Hello World"
    DragMode     = 0
    Enabled      = -1
    ForeColor    = QBColor(0)
    Height       = Char(1)
    Left         = Char(10)
    MousePointer = 0
    TabIndex     = 1
    Tag          = ""
    Top          = Char(2)
    Visible      = -1
    Width        = Char(19)
  END
  BEGIN Timer Timer1
    Enabled      = -1
    Interval     = 0
    Left         = Char(0)
    Tag          = ""
    Top          = Char(0)
  END
END

SUB Command1_Click ()
  UNLOAD hello
END SUB

SUB Form_Load ()
  timer1.interval = 1000 * 5
END SUB

SUB Timer1_Timer ()
  UNLOAD hello
END SUB

--
 有馬 康弘 <fit0298 / fitec.co.jp>