"「プログラミング言語を理解するにはどうしたらいい?」という話を聞いて思うこと"を読んで思うこと。

元ねた:「プログラミング言語を理解するにはどうしたらいい?」という話を聞いて思うこと - 西尾泰和のはてなダイアリー

理解したいプログラミング言語で書いたプログラムがどうやって動いているのかを勉強してみれば良いんじゃね?
と思ったんだけど。違う?

Javaなら.classファイルをディスアセンブルし、JavaVMのバイトコードがどうなっているのか調べてみる。
C,C++でもオブジェクトをディスアセンブルし、自分の書いたプログラムが機械語でどのように記述されてるか調べてみる。
PythonRubyなら最近はVM化されているのでやはりバイトコードを得る事が出来る。これを調べてみる。
PHPはどうかな・・・得る方法があるんだろうか。
Perlは純粋なインタプリタだった気がする。それはそれで、Perlインタプリタがどうやって動いているのか勉強してみれば良いと思う。
JavaScriptは、、ある意味これが一番勉強しずらそうだが、、やっぱりJavaScriptインタプリタについて勉強してみると良いかな(Google V8とかはVMだそうだ。頑張ればバイトコードを得られるかも)。

どうして動いているのか?が理解出来てるとその上のレイヤーの事も理解しやすくなるんじゃないかな。

#え?そういう事を聞いてるんじゃないって?まぁ良いじゃん面白いよBinaryHack


追記:
> id:token
うん、まぁだから究極的にはその言語実装するっきゃないね(笑
本当に理解したいなら、ね。
こういう事聞く人ってあんまり自分から手を動かしたがらない傾向にある気がするんだけれど、なんでも良いからがっつり取り組めばあっという間に解決しそうな気がして。
どうしても手を動かす気にならないならそれは全く別の問題だし、ここに書いてある事とは違う事がやりたいという話なら、じゃあ具体的には何がやりたいんだよ、と。
明日から森羅万象が全て理解できる魔法とか無いですよ、とは言っておきたいなぁ。


再び追記:
> id:token
Smalltalkは立派な言語でANSI仕様にもなってるから仕様をひたすら読めば良さそう。
ヒマワリみたいなちょっとしたインタプリタソースコードを読んでみるのも良いのでは・・・って書こうとしたらDelphiな上にクローズドソースですか。
たとえソースが有ってもひまわりを理解するためにDelphiを理解して・・・っていうのはなんかちょっとそれどうよ・・・。

ちょっと個人的に思っているのは、シンタックスやライブラリの使い方を覚える事に過剰に時間を費やすのは無駄なんじゃないかと。
オブジェクト指向手続き型言語みたいなどうプログラムを書くか、って所と、言語処理系が何をやっているのか(=結局自分の書いたプログラムはどのようにして動くのか)て所が大まかに分かってればシンタックスもライブラリの使い方もリファレンス読みながら書けてしまうと思う。
だから、実はプログラミング言語なんて理解しなくていいんじゃね?とかわけの分からん事を言ってみる。