ToDo:
一部で?話題になってるようなので、読んでみた。…どうも論旨が良く分からない文章だなあ。段落と段落のつながりがはっきりしないせいで、何が言いたいのかよくわからない。タイトルから推測すると、旧世代のプログラマでは、新しい言語のパラダイムについていくのは難しいとでも言いたいのではないかと思うが、本文からその結論を引き出すのは無理があると思う。オブジェクト指向のためのVMとか意味がよくわからない用語が突然出てくるのもどうかと。
あと、JavaやC#の仕様についてC++と比較するなら、もう少し調べてからにしようよ、と思う。
そうすると一つ大きな疑問が出てきます。 (語弊は多いにあるが)仕組みとしてはJavaやC#は、C++にGCを付けただけの存在であって、言語体系もC++からdeleteを取っただけに留まっている理由は何なのでしょうか?
(語弊が多いという留保をつけたとしても)JavaやC#は、シンタックスこそC++に似せてあるものの、セマンティクスはかなり違うんだけど。
某授業中に、話を聞きながら暇つぶしにOnionでBrainFuckインタプリタのプログラムを書いていたら、処理系のバグを見つけてしまった(もちろん、自分で仕込んでしまったわけだが)。具体的には、java.lang.Character(char)をnewするコードを書いたら、charを引数に取るコンストラクタが見つからないというコンパイラのエラーメッセージが表示された。何故?と思いつつ、処理系のソースを見直してみたところ、左辺がchar型の場合の代入互換性のチェックをするコードを入れ忘れていた。早速修正したところ、無事動作するようになった。
こういうことがあると、やはりeat your own dog foodというのは重要だなあと思う。
ssh.Continual経由で。
人力検索はてなで、あの変態言語BrainFu*kのコードで質問をした人が居たらしい。しかも回答者もBrainFu*kで回答する人が居る始末。よくこんなこと考え付くなあとちょっと笑ってしまった。BrainFu*kのことなんか知らないで真面目に答えた?であろう人が可哀想だが。で、これを読んで任意の文字列をBrainFu*kのプログラムにエンコードするbfencodeを簡単に作れるんじゃないかと思って、ちょっと作ってみた。 といってもRubyで書いた単なるワンライナーのプログラムだが。
ARGF.each_byte{|b|b.times{print "+"};print ".>"}
このプログラムに標準入力から(ASCIIの)文字列を与えると、その文字列を出力するBrainFu*kプログラムを標準出力に出力してくれる。ただし、初期状態でBrainFu*k配列の全ての要素がゼロクリアされていることを仮定しているので、そうでないBrainFu*k処理系だと動作しない。
追記: nishioさんからのツッコミを元に、ちゃんとゼロクリアするようにしてみた。ついでにコード自体も、もうちょっと短くしてみた。
$<.each_byte{|b|$><<"[-]#{'+'*b}.>"}
午前中の圏論の話は、まず理解できないだろうと見切りをつけて、午後から参加することに。
住井さんが実装した、授業用の教材である言語MinCamlについての解説。MinCamlについては、以前からOCamlの小さなサブセットらしいということは知ってはいたが、具体的にどんなものなのかはよく知らなかった。言語仕様は思ってたよりもずっとシンプルなようなので、今度ソースを眺めて勉強してみようかという気になった。あと、K正規形という中間表現があるということも、今回初めて知った。これも、機会があったら調べてみよう。
産総研の田辺さんによる、アルゴリズムのモデル検査についてのチュートリアル。途中から眠気が襲ってきて寝てしまったので、内容をよくあまりよく覚えていない。
終了後、米澤君、soutaroさん、k.inabaさん、今井さん(1)、今井さん(2)たちと本郷キャンパス近くのハンバーグ屋へ。学生がよく来る店らしく、ほとんどのメニューが1000円以内なのだが、一つだけ1600円もするメニュー(サーロインステーキ定食だったか)があったので、せっかくなので注文してみたところ、ワインがついてきたりとやたら豪華だったので、びっくりした。考えてみれば1600円もするんだから、それなりに豪華で当たり前ではあるのだが、学生向け定食屋のメニューじゃねえなあと思った。
食事終了後、米澤君、soutaroさんとつくば駅まで一緒に帰ることに。東京でよく行われている技術系イベントのようなものをつくばでもできないかなあ、とかShift/Resetについての話を米澤君から聞いたりした。
Matsにっき経由。
Pnutsの開発者である戸松さんが、JSR292で提案されているinvokedynamicは要らないと言ったという話。実際にJVMで動作する動的言語処理系の中でかなり高性能であるPnutsの開発者の言うことだけあって、説得力がある。
ところで、Pnutsって、JVM上で動作する言語処理系の中ではかなり昔からあるのに、どうして(少なくとも国内では)こんなにマイナーなんだろう。言語としては地味だからかなあ。処理系も安定しているし、便利なライブラリもそれなりにそろっているので、使い勝手は結構いいと思うんだけど。
_ 4 [1 ]
_ j [f ]
_ 1 [4 ]
_ awufqijtp wjlqavtx [xejvhlt wehbzqmkt nhwqr ibuj cjwre bnua zwxnbf ]