Re:僕のプログラミング習得記

自分の経過とかなり似てると感じてビックリした件について。

ほんの少しJava→少しHSP→少しC→わりとHSP→わりとPerl→わりとHSP→かなりPerl→わりとAction Script→かなりPHP→かなりC→わりとScheme→かなりC(今ココ!)

. - FC2 BLOG パスワード認証

自分は、

  1. ほんの少しMS-DOS バッチファイル
  2. ほんの少しJavaScript
  3. ほんの少しJava
  4. 少しHSP
  5. 少しC
  6. わりと HSP
  7. 少しDelphi
  8. わりとJava
  9. わりとC#

という経緯をたどっています。で、OK氏も同じだと思うけど、たぶん HSP が自分の中でのキモでした。


(1) ですが、なぜか家にあった MS-DOS の本をネタに、win98 のコマンドプロンプトから色々とコマンドを発行していました。自分が「テキストベースで指令を飛ばす」ということを学んだのは DOS 窓からです。またバッチファイルによって沢山のコマンドを一度に流し込むということも覚えました。あまり意識はしていませんでしたが「ループ」に触ったのもこれが初めてでした。
(2) はおおよそ 2000 年くらいのことで、この頃は AJAX とか全く無くて単に「”ほおむぺえじ”への装飾」が JavaScript の主な使命でした。記述するコードも1行から多くて数行で、確か名前と生年月日を入力するとおみくじを出してくれるようなページを作っていた記憶があります。この頃「JavaScript は大文字小文字を区別する」ということを知らず、ブラウザが出してくる貧弱なエラーメッセージにとても悩んでいた記憶があります。
(3) も 2000 年くらいのことでした。JavaScriptJava は名前が似ているから大丈夫だろうと高をくくっていたら甘かったです。オブジェクト指向やら何やら、意味不明な単語に戸惑いました。boolean と java.lang.Boolean の違いも分かりませんでした。沢山のコンパイルエラーに遭遇し結局投げ出したものも多かったです。


ここまでで共通していたのは、何を作るかのアイデアが言語側に依存していたということでした。「○○の機能があるのか。ならこう使えば△△ができるな」と考えてから実装していました。とても不自由だった経験があります。なにせバッチファイルも JavaScriptJava も、.exe 形式の実行ファイルは作れなかったので(^−^;


そんな中、(4) で HSP に出会えたのは幸いでした。一見複雑そうで実はバッチファイルと同じ逐次処理、しかも .exe が作れた(笑)ですから。また、勉強していくにつれ "llmod.as" というモジュールに出会います。HSP から WinAPI なるものを叩いて色々な作業ができました。ここで WinAPI の勉強が開始です。また他の拡張 DLL を用いて色んなものを作ることができました。このころ作ったプログラムは、実は vector に登録してあった過去があります。*1
そして自分で拡張 DLL を作りたくなって (5) へと進みます。基本的に HSP とのインタフェイス部分は鬼仕様です。なんであんなに面倒なインタフェイスになっているのか分かりませんでした。あとはじめて「不正な処理」エラーにも出会いました。HSP の内部仕様に絡めたメモリ周りの知識が入ってきました。


ここまでで自分の基礎知識が身についていたと思います。逐次処理や関数などの言語仕様的な分野、API やメモリ周りなどのハードウェア寄りの分野、また、自分が作りたいものは何で、どうすればそれを作れるのか……などなど。


あと、(3) で触ったオブジェクト指向に、数年たってやっと頭がついてきました。オブジェクト指向で最も重要なのはクラス定義ではなく、オブジェクトをいかに使うかです*2。クラス定義に重みを置いた本ばかり読んでいて、このことに気付いたときには霧が晴れたような感覚を覚えました。


自分の経験から「何かが欲しいと思い始めると真剣に考え始める」ということを基にした『要求駆動型』の教育が、一番効果的なんだろうなと思いながら、長々とした自分語りを終わりにしますよ。

*1:今は消しました。若かりし頃の黒歴史です

*2:これはケイのオブジェクト指向に近い