2009年2月11日水曜日

なるほど@@

「三つの処理系・三つのOSに触れなさい」とは、わたしのお気に入りの言葉のひとつだけど、Eric S. Raymondの「ハッカーになろう」でも少し類似のことが推奨されている。

これは実によい事なのだ。いろいろな視点からコンピュータを理解できるから。

私は(*)今まで、BTRON、Linux、Microsoft Windows、BeOSその他いくつかのOSに触れてきたわけだけど、おかげさまで今では、相等に異端なOSでもゼロからでなく扱えるだろう。唯一の不安は、あまり接点を持っていないBSD系OS、それにウインドウマネージャ以外は未知の世界であるPlan9くらいだ。
処理系の方は残念ながらあまり数をこなしていない。NDA関係で言えないものもあるが、一般的にはFORTRAN77、F-BASIC、どこのものとは言わないけど電子交換機用言語、Perl、Delphi(Objective Turbo Pascal)、Ruby、そして最近のいくつかのものである。
lispと生のCはhello Worldで止まっている。特にCは、ビット演算ですっかり嫌になってしまった。
レジスタの匂いのするものは好きではない。私にとってプログラム言語とは道具であって、システムに食い込んだ高度なアプリケーションを作る予定はないからだ。


まぁそれはそれとして今回、ちょおおっと苦笑いするようなことがあったのだ。

えらく久しぶりにJavaをいじっていたのだけど、意味不明のエラーが出る。それも配列まわりでだ。戻り値もおかしい。よくよくみると、どうやら配列に追加できてない。なんやねん。

んで、気づく。JavaのArrayは追加ができないことに。

なるほど。もう何年も、まともな高級言語ばかり使ってたからなぁ@@;
いや、C系列の人に喧嘩売るわけじゃないけど、(*2)何種類も整数型があったり、文字の連結もc=a+bで普通に足せなくて、正規表現すら標準で持たない処理系を高級言語のカテゴリに入れていいかどうかよくわからないので @@; すみません。

しかしそうか。Javaでは s[s.length] = "add"; みたいな書き方するとエラーになるのね。
言われてみれば確かにそうなんだけど、なぜか納得してしまったのだった @@

(*: PC以前の大型機とかワークステーションとかは、NDAとか古すぎるとか色々あるので除く)
(*2: 整数や浮動小数点の型がいくつもあるというのは、私も含めた古い言語慣れしている人には当然のことなんだけど、より「人間からみてわかりやすい」というプログラミング言語のパラダイムには完全に逆行しているシステム寄りの考えだと思います)

0 件のコメント: