So far...
(プログラミング言語)
私がこれまでに読み書きしたことがあるプログラミング言語を並べておこうと思います。 知人が年齢より多くの種類の言語を読み書きしたことがある、というのを続けていくと言うてはるので。
高校生の頃、Commodore VIC-1001 で。マニュアルのニモニック表だけを頼りにやったのでスタックのことが最後まで理解できず、アセンブリも使ったことがない。まともにニモニックコードじか書き。
Macintosh SE の逆アセンブラとプロセッサのマニュアルを頼りに勉強。 毎回フロッピーから起動するのが面倒だった FALCON 2 のコピープロテクトを外したりいろいろ妙なことをしていた。 グラフィックスのビットマップ処理を高速化するためにインラインアセンブラでひたすら書いてチューンしていたが THINK C 4 の最適化に負けたので、以後アセンブリは触らなくなった。
これは大学で習い、しばらく汎用機プログラマをしていた頃に実際業務で使っていた。 マークカードリーダの後処理ルーチンなどがアセンブリだったので。 ベースアドレスレジスタを利用したリロケータブルなコードや、スタックが無くサブルーチンコールなどをレジスタに持たせてjumpすることで実現したり、いろいろ面白い。 オペレーションコードに含まれるオフセットが 12bit で、これが(当時としてはかなり大きめだったはずの)仮想記憶の単位ページサイズと同一だったりして、システムアーキテクチャとしても楽しめた一品。
高校生の頃に使っていた大型汎用機での第一言語だった。 大学のときの第一言語でもある。 非常に長く、僕の主たるプログラミング言語となり続けた。
大学、仕事で。 僕の大学のときの第二言語だった。 あとアルバイトで Concurrent CPM/86 上での開発もした。
大学で構造化プログラミングという文脈で学んだ。再帰呼び出しをはじめて使ったのがこれだったと思う。 当時の流行そのままに Turbo Pascal も使ったが、使いやすいなあと思った。 後に Macintosh のプログラミングをしたが、Pascal ではなく C でやったので余り触れていないというのが正しい。
1986 年くらいに黒住先生に勧められて何と大型汎用機の上で初めて使った。 以来ずっと使っている。 1990 年あたりに Macintosh の開発のために THINK C を(まだ Lightspeed C の頃から)使ったが、これのデバッガが良くできていて、IDE といったらこのくらいはちゃんとやって欲しいとずっと思い続けているが、XCODE にしても未だにこれを超えられない印象をもってしまう。
1996 年だったかに HotJava とともにセミナー(SPARC COSMOS?)で知り、少し触った。 後にプログラムを少し書いたりしたが、実際ほとんど使ったことはない。
中学生の頃、Commodore VIC-1001 の CBM BASIC v2.0 や各機種の MS BASIC などなどで。 Quick BASIC や Visual BASIC もしばらく使った。 かなり後になって MS Basic 7 でも幾らか大規模なアプリケーションを書いたが、このあたりはもはや別の言語としても良いかなあと思う。
これも大学で学んだのではないか。 初めて触ったスタック型言語。
Sun3 の上で動く Smalltalk-80 と、PC9801 の上で動く Smalltalk/V をほんの少しだけ。 2008 年になってから VisualWorks でまたいじりだした。
近山さんに教えて貰ったような、、違ったか、、変数は入れるものではなく決めるものである、という言葉に結構しびれた。 面白い言語。
Prolog KR をよく使った。 並列 Prolog とか集合論的に動作する Prolog とかいろいろ考えさせられた「おかしな」言語。 論理型とかいっときながら本質はデータベースをシーケンスに探索するとは何事ぞ?とかバックトラックとか言っときながらスクリーンに出た表示結果が消えないことを利用するとはなんと姑息な、等々の疑念がフツフツと湧いてくる。 Prolog 10 (DEC 10 Prolog)もあったはずだが使ったかどうか定かでない。
ほんの少しアルバイト仕事で使ったくらいで、触ったうちに入らない程度。 いつかもうすこし突っ込んでみたいと思いつつ機会待ち。
職場での学生実習に少し混じって毎年 24 時間ずつ程度突っ込んでいる。 なんとなく分かったような気がする。 むかしの ActionScript とは大違いで、こちらは非常に普通の OOP 言語になった。
Ruby 同様ほとんど触ったことがないくらいの程度。 しかし初めて見たのはそれこそ NetScape に導入されてすぐくらいだったはずで、期間は長い。 学生の研究などのために読むことは多い。
Forth 以来のスタック言語で、1988 年頃に LaserWriter Plus と NeWS ウィンドウ(こちらは実は Display PostSciprt だが)を相手に延々と使った。 そのおかげでプリンタ用に吐かれたコードや Illustrator のファイルもそれなりに読める。
1989 年頃だったかに出て以来延々と読んだし、書いた。システム全体の作りと言い、好みだった。 AppleScript がソックリらしいし、ぱっと読むと確かに読めるのだが、こちらは用事がないので今のところ触ったことはない。
2009年になって iPhone のために今更触り始めている。 が、その姿を見たのは NeXT で、1989 年だったか 1990 年だったかの NeXTSTEP がまだ 1.0 かそれ以前だったころに Interface Builder とともに使ったことがある。ものすごい久しぶりという感じ。 その後も学生らが使っていたり、技術的な雑談を通してずっと好みだなあと思ってきた言語ではある。 今触る機会が得られて何となく嬉しい感じがする。 対して C++ は未だに本当に使ったことがない。例によって読む機会は多いが、そこまで。
Emacs LISP や Common LISP をほんの少しだけ読み書きしたことがある、が、しかしプログラミングしたか、と言われると微妙な規模までしか触っていない。 関数型とはどうも縁がない。 Erlang などで使う機会が出るのだろうか?
最初に少し読んだのは恐らくGNOMEのユーザインタフェイス・コードか。 それ以来使う機会もなかったが、Arista Networks 社のスイッチが Python でファームウェアを書いているので頑張って読んだ。 その後 OpenFlow を触る際にNiciraのNOXがやはり Python 向けに書かれているので頑張って書いた、のでここに加えても良いかな、くらいの状態になった。まだまだだけれど。
アプリケーション開発に結構使った。 ただ web のページ遷移とプログラムの起動・終了が変な形で同期しているところがどうにもいまひとつ好みでない。
実は殆ど使ったことがない。
実はこちらをひたすら使っている。
sed はしかしあまり使わない。 こんなのを挙げていくとキリがないのでこのあたりで。
C shell は本当によく使ったし、かなりまともにプログラミングもした。 特に tcsh は TOPS-20 のコマンドインタプリタのインタフェイス(ヒストリ、補完機能など)をもっていて、延々と使っている。 逆に Bourne Shell はあまり使っていない。 K shell や Z shell などなどいろいろあったがこれも使わず。 bash が出てからもほとんど使わずいまでも tcsh が好み。
VAX/VMS のコマンド処理スクリプト言語。これもかなり大きなプログラムを書いた。
MSP/F4 で使われていたコマンド処理スクリプト。 これもやはりある程度以上大きなものを書いたりしていた。
まあほどほどに。何しろ MSDOS をほとんど使わなかったので。
何で試したのか覚えていないが、ともあれ何かを書いた記憶はある。 まあ教育用とはそういうものか。
IBM 系大型汎用機のバッチジョブ制御言語。 これも何というか言語と呼べるほど結構いろんな事が出来る。
いろんなところで使ったが、初めはやはり 1988 年の Sun3/50 上で動いていた UNIFY か。 RDB の原理的なことを学んだ後で SQL を見て、そのあまりの逸脱ぶりにアゴが落ちそうになったものだ。
が、しかしこれは使ったうちには入らない程度しか使ったことがない。 ちょっと残念。
言い出せば SAS や Gnuplot のような各種アプリケーションの処理系のための言語があるが、まあそれらは列挙しないことにする。 例えば Macintosh のオーサリングツール、Courceware の半ば visual programming な環境もあったりするが、キリがないので。 ほんとは目の前を通り過ぎたものも多い。Occam とか。惜しい。