So far...

(プログラミング言語)

私がこれまでに読み書きしたことがあるプログラミング言語を並べておこうと思います。 知人が年齢より多くの種類の言語を読み書きしたことがある、というのを続けていくと言うてはるので。

マシン語・アセンブリ
6502

高校生の頃、Commodore VIC-1001 で。マニュアルのニモニック表だけを頼りにやったのでスタックのことが最後まで理解できず、アセンブリも使ったことがない。まともにニモニックコードじか書き。

68000

Macintosh SE の逆アセンブラとプロセッサのマニュアルを頼りに勉強。 毎回フロッピーから起動するのが面倒だった FALCON 2 のコピープロテクトを外したりいろいろ妙なことをしていた。 グラフィックスのビットマップ処理を高速化するためにインラインアセンブラでひたすら書いてチューンしていたが THINK C 4 の最適化に負けたので、以後アセンブリは触らなくなった。

System 360/370 アセンブリ

これは大学で習い、しばらく汎用機プログラマをしていた頃に実際業務で使っていた。 マークカードリーダの後処理ルーチンなどがアセンブリだったので。 ベースアドレスレジスタを利用したリロケータブルなコードや、スタックが無くサブルーチンコールなどをレジスタに持たせてjumpすることで実現したり、いろいろ面白い。 オペレーションコードに含まれるオフセットが 12bit で、これが(当時としてはかなり大きめだったはずの)仮想記憶の単位ページサイズと同一だったりして、システムアーキテクチャとしても楽しめた一品。

手続き型
FORTRAN 77

高校生の頃に使っていた大型汎用機での第一言語だった。 大学のときの第一言語でもある。 非常に長く、僕の主たるプログラミング言語となり続けた。

COBOL

大学、仕事で。 僕の大学のときの第二言語だった。 あとアルバイトで Concurrent CPM/86 上での開発もした。

Pascal

大学で構造化プログラミングという文脈で学んだ。再帰呼び出しをはじめて使ったのがこれだったと思う。 当時の流行そのままに Turbo Pascal も使ったが、使いやすいなあと思った。 後に Macintosh のプログラミングをしたが、Pascal ではなく C でやったので余り触れていないというのが正しい。

C

1986 年くらいに黒住先生に勧められて何と大型汎用機の上で初めて使った。 以来ずっと使っている。 1990 年あたりに Macintosh の開発のために THINK C を(まだ Lightspeed C の頃から)使ったが、これのデバッガが良くできていて、IDE といったらこのくらいはちゃんとやって欲しいとずっと思い続けているが、XCODE にしても未だにこれを超えられない印象をもってしまう。

Java

1996 年だったかに HotJava とともにセミナー(SPARC COSMOS?)で知り、少し触った。 後にプログラムを少し書いたりしたが、実際ほとんど使ったことはない。

BASIC

中学生の頃、Commodore VIC-1001 の CBM BASIC v2.0 や各機種の MS BASIC などなどで。 Quick BASIC や Visual BASIC もしばらく使った。 かなり後になって MS Basic 7 でも幾らか大規模なアプリケーションを書いたが、このあたりはもはや別の言語としても良いかなあと思う。

Forth

これも大学で学んだのではないか。 初めて触ったスタック型言語。

Smalltalk

Sun3 の上で動く Smalltalk-80 と、PC9801 の上で動く Smalltalk/V をほんの少しだけ。 2008 年になってから VisualWorks でまたいじりだした。

KL/I

近山さんに教えて貰ったような、、違ったか、、変数は入れるものではなく決めるものである、という言葉に結構しびれた。 面白い言語。

Prolog

Prolog KR をよく使った。 並列 Prolog とか集合論的に動作する Prolog とかいろいろ考えさせられた「おかしな」言語。 論理型とかいっときながら本質はデータベースをシーケンスに探索するとは何事ぞ?とかバックトラックとか言っときながらスクリーンに出た表示結果が消えないことを利用するとはなんと姑息な、等々の疑念がフツフツと湧いてくる。 Prolog 10 (DEC 10 Prolog)もあったはずだが使ったかどうか定かでない。

Ruby

ほんの少しアルバイト仕事で使ったくらいで、触ったうちに入らない程度。 いつかもうすこし突っ込んでみたいと思いつつ機会待ち。

ActionScript 3

職場での学生実習に少し混じって毎年 24 時間ずつ程度突っ込んでいる。 なんとなく分かったような気がする。 むかしの ActionScript とは大違いで、こちらは非常に普通の OOP 言語になった。

JavaScript

Ruby 同様ほとんど触ったことがないくらいの程度。 しかし初めて見たのはそれこそ NetScape に導入されてすぐくらいだったはずで、期間は長い。 学生の研究などのために読むことは多い。

PostScript

Forth 以来のスタック言語で、1988 年頃に LaserWriter Plus と NeWS ウィンドウ(こちらは実は Display PostSciprt だが)を相手に延々と使った。 そのおかげでプリンタ用に吐かれたコードや Illustrator のファイルもそれなりに読める。

HyperTalk

1989 年頃だったかに出て以来延々と読んだし、書いた。システム全体の作りと言い、好みだった。 AppleScript がソックリらしいし、ぱっと読むと確かに読めるのだが、こちらは用事がないので今のところ触ったことはない。

Objective-C

2009年になって iPhone のために今更触り始めている。 が、その姿を見たのは NeXT で、1989 年だったか 1990 年だったかの NeXTSTEP がまだ 1.0 かそれ以前だったころに Interface Builder とともに使ったことがある。ものすごい久しぶりという感じ。 その後も学生らが使っていたり、技術的な雑談を通してずっと好みだなあと思ってきた言語ではある。 今触る機会が得られて何となく嬉しい感じがする。 対して C++ は未だに本当に使ったことがない。例によって読む機会は多いが、そこまで。

LISP

Emacs LISP や Common LISP をほんの少しだけ読み書きしたことがある、が、しかしプログラミングしたか、と言われると微妙な規模までしか触っていない。 関数型とはどうも縁がない。 Erlang などで使う機会が出るのだろうか?

Python

最初に少し読んだのは恐らくGNOMEのユーザインタフェイス・コードか。 それ以来使う機会もなかったが、Arista Networks 社のスイッチが Python でファームウェアを書いているので頑張って読んだ。 その後 OpenFlow を触る際にNiciraのNOXがやはり Python 向けに書かれているので頑張って書いた、のでここに加えても良いかな、くらいの状態になった。まだまだだけれど。

Web 系、Light Weight Language など
PHP

アプリケーション開発に結構使った。 ただ web のページ遷移とプログラムの起動・終了が変な形で同期しているところがどうにもいまひとつ好みでない。

Perl

実は殆ど使ったことがない。

awk

実はこちらをひたすら使っている。

sed

sed はしかしあまり使わない。 こんなのを挙げていくとキリがないのでこのあたりで。

(コマンド)スクリプト言語
Shell Script

C shell は本当によく使ったし、かなりまともにプログラミングもした。 特に tcsh は TOPS-20 のコマンドインタプリタのインタフェイス(ヒストリ、補完機能など)をもっていて、延々と使っている。 逆に Bourne Shell はあまり使っていない。 K shell や Z shell などなどいろいろあったがこれも使わず。 bash が出てからもほとんど使わずいまでも tcsh が好み。

DCL

VAX/VMS のコマンド処理スクリプト言語。これもかなり大きなプログラムを書いた。

Command Procedures (MSP/F4)

MSP/F4 で使われていたコマンド処理スクリプト。 これもやはりある程度以上大きなものを書いたりしていた。

BATCH (MSDOS)

まあほどほどに。何しろ MSDOS をほとんど使わなかったので。

LOGO

何で試したのか覚えていないが、ともあれ何かを書いた記憶はある。 まあ教育用とはそういうものか。

JCL

IBM 系大型汎用機のバッチジョブ制御言語。 これも何というか言語と呼べるほど結構いろんな事が出来る。

SQL

いろんなところで使ったが、初めはやはり 1988 年の Sun3/50 上で動いていた UNIFY か。 RDB の原理的なことを学んだ後で SQL を見て、そのあまりの逸脱ぶりにアゴが落ちそうになったものだ。

Mathematica

が、しかしこれは使ったうちには入らない程度しか使ったことがない。 ちょっと残念。

他・・・

言い出せば SAS や Gnuplot のような各種アプリケーションの処理系のための言語があるが、まあそれらは列挙しないことにする。 例えば Macintosh のオーサリングツール、Courceware の半ば visual programming な環境もあったりするが、キリがないので。 ほんとは目の前を通り過ぎたものも多い。Occam とか。惜しい。


[Up]
This page is administrated by Yutaka Yasuda.