このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

プログラマのためのJavaScript (1):全般的なこと、注意事項など

このエントリーの日付は2005-08-08ですが、それは名目上のもので、実際は後から書き足しています。そこで、実際に書いた日付を小見出しに記載してます。

●予備知識、または対象読者(雑談付き) 2005-08-31記

このシリーズ(一連のエントリ)の題名には「プログラマのための」と付けています。これは、コンピュータ、プログラミング言語、言語処理系などに関して、一般的な知識を前提にするってことでしたね。

その知識とは次に挙げるようなことです。もちろん、詳しく知っている必要はないし、多少欠けている項目があっても気にすることはありません。

  • メモリとCPU、アドレス、レジスタなど
  • ヒープ領域と(動的)メモリアロケーション
  • 自動ゴミ集め
  • 関数呼び出し用のスタックとスタックフレーム、
  • 大域変数、局所変数、変数のスコーピングの概念
  • データ/オブジェクトの生成、破棄、寿命の概念
  • 典型的データ構造:スタック、リンクリスト、ハッシュマップなど
  • コンパイル時と実行時の区別

書き並べてみると、こういうプリミティブな概念の習得にはC言語が最適だな、と思います。しかし、今時「C言語からはじめよう」は現実的でない気もします。まー、Javaでもいいのかな。でも、構文だけでなく、バイトコードJVMのだいたいの構造、コンパイラとクラスローダの役割くらいは知っていたほうがいいかと。

高水準の言語でも、その処理系の構造が露骨に見えているものもあって(今でもあるのかな?)、抽象概念と具象構造を一緒に学べて便利です(でした、か)。例えば、僕がむかーし触っていたLisp処理系は、機械語列として格納されている関数(引数処理方式に応じてSUBR関数、FSUBR関数と呼ぶ)の先頭アドレスがインタプリタから見えてました。よって、メモリpeek関数を使ってディスアセンブラを書けたし、メモリpoke関数でパッチもできるし、がんばれば、EXPR関数/FEXPR関数(S式)をSUBR関数/FSUBR関数(機械語)に置き換えるコンパイラLispで書けたでしょう(やった経験はないから確証はないけど)。

こういうハラワタが見えちゃう処理系は、自分自身さえ防衛してないから無闇と危なっかしいけど、遊ぶには楽しいよね。昨今の風潮からは、こういうヤバイ処理系は許されないのでしょうか、寂しいね。

●余談 2005-08-08記

ところで、x-desktop.org(別ウィンドウ)からとりあえずブツをダウンロードして、とりあえず(説明読む必要などないから)index.htmlをブラウザで開いてみてよ。

ナニコレーッ!?

ブラウザ上にウィンドウシステムとデスクトップ環境を作って、ブラウザ内ブラウザも実装している。もうキ○ガイ(最上級の誉め言葉)ですね、このシト達。

そこまでやるかー!? しかし、ここまでできることを示してしまったわけだ、コレ。-- デザインはキレイ、振る舞いは一世代(?)前のウィンドウシステム、パフォーマンスはSwingより上かな(笑)。

こういうのを見ると、僕がブラウザーベースRIAに転ぶ(?)のもむべなるかな、と納得できるでしょう(納得してくれなくてもいいけど)。