32nd Diary

トップ | 最新 | 過去の日記 | もっと過去の日記

2008年
5月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
めーるあどれす
ruby -rbase64 -e'puts Base64.decode64 %q(dGFrYW5vMzJAZ21haWwuY29t)'



2008-05-06 (Tuesday) [長年日記]

[Work][Hack][Lisp][C/C++] 最低限学ぶべきパラダイム、そして最強とは。

最近、というか、しばらく前から「初学者はアセンブリとLISPを学ぶべき」とか「LISPは最強、あとはC言語でもやればいい」みたいな記事をそこかしこで見ますが。

んなの、私に言わせてもらえばアセンブリでもC言語でもLISPでもなんでもいいから最低限、ノイマン型と関数型のパラダイムは脳に叩き込めと言いたい。欲を言えばオブジェクト指向もだ。

こっから私の愚痴です。 この間、仕事中に珍しく脳が冴えているのを感じ、漸化的な処理構造が脳内に浮かんだので、それをそのままECMA Scriptに起こしたら再帰はアカデミックの分野だけでしか使わないものだ。格好つけたな。とお叱りくらいました。ノイマン型のみの脳みそとはなんと低次元なんだろう、と悲観しました。失望という方が正しいかもしれません。こんな富豪な世界でスタックが溢れるとでも考えているのだろうか?そして、このストレスはなんだろう。政治の層だけではなくて、技術の層でも場違いだったと痛感している。 それでもボクは自分の脳内を形あるものに刻み付けていきたい。だから、どうするかを考えている。


おまけ程度になぜアセンブリとLISPがハッカーに愛されているか、について個人的な意見を。

極論、あいつらは両方とも処理系のマシン語だからなんじゃないかと思いますね。アセンブリはあるアーキテクチャの機械語と等価であるのは当然ですが、LISPもLISP処理系の構文木をそのまま書けばいいだけというコンピュータと同じ脳みそが出来上がってる人間にとっては書きやすいことこの上ない機械語です。処理系もバカみたいに簡単に作れます。LISPの処理系を作ったなんて聞くと普通のプログラマはビビりそうなもんですが、あんなもん作るくらいだったら.NET/ECMA VMのがよっぽど難しいですよ。マジで。

ついでに言うなら、アラン・ケイのDynabookのようにある処理系とそれを操る記述言語の閉じた世界ってのは結局のところどれも最強なんだと思います。だって、ひとりのアーキテクトが設計した世界はその人の中では最強の世界なんだから。 なので、よくわかってなさそうな人間がLISP最強とか言ってると、LISPが最強っつー前に自分の最強を作れよ、と言いたい気分です。

ふう。今日は駄文が過ぎたな。こんなとこでお開きですじゃ。

[Twitter] 今日のつぶやき

  • 09:22 > すげぇ。会社の IPMsg のユーザ数が 7 だってよ。(普段はもっと 50 とか超えてる [jus]
  • 09:28 > Lingr IRC Gateway の日本語 NICK がおかしい。 takano32 とかは影響ないが。 [jus]
  • 09:33 > にも拘らず発言の送受信が普通にできてるから困る。いいよ、もう。この文字化けあんただろ、ってあたりつけるわ。(ぶ
  • 09:37 > いまだにTwitterのお気に入り管理がイマイチ。IM通知で管理するか、専用クライアントのお気に入りで管理するか・・・まぁ、とりあえず、ボクになにか重要なことを伝えたいときはお気に入りのIRCチャンネルかmixiでおねがいします。(なんというInternet 1.0世代・・・
  • 09:41 > @kuromomo @kosmic Perfumeの本質は(すごいように見えて|すごい|しょぼいように見えて|しょぼい)* という、シュレディンガーのPerfumeっぽいところだと思います。
  • 09:45 > @kuromomo 新しいはずなのに懐古する、みたいな感じです。YMOとかにハマった人たちはハマれると思います。
  • 11:09 > GC は reference counter で回収しつつ、取りこぼしを mark and sweep で掃除する。余裕があれば世代別、くらいが現実的だよなぁ。余裕があればガチンコにページアウトと同じくらい勝負する必要があるけど。 [jus]
  • 11:10 > なんか日本語おかしいな。ちょっと寝るわ。 [jus]
  • 12:27 > @masa8723 じゃ、20時くらいまでに満足してくれ。
  • 12:33 > @masa8723 予定早めんなwwwまぁ、いいんだけど。
  • 13:58 > そいや、インターリンクのケーブルがワンコイン(450円)で売ってたので買ったんだった。ルータつないで遊ぶか。あと、ストレートのシリアルがワンコイン(100円)だったので四本買ったが、これはどうするかwww
  • 15:31 > 命知らずなエントリ書いた。これからボコボコトラックバックして炎上させてやんよwwww  http://taka.no32.tk/diary/20080506.html [jus]
  • 15:35 > @yasu_kobayashi 発言者が元メインフレーム屋なので、情状の余地あり、という感じです。が、自分の成長を考えると切ないです・・・ [jus]
  • 15:39 > @koizuka うーむ。あんま燃えないかも・・・です。ただ、撃つとこには TrackBack を fire in the hole! しとこーかなーと。 [jus]
  • 15:42 > @natsutan さんくすでっす!洗脳されないよう、かといって尖りすぎないようといったところなんでしょうか・・・でも、ちょっと尖ってみたりwwww [jus]
  • 15:53 > 書きあがってから気づいたが、 @dankogai とかぶってるじゃねーか・・・ orz と。そろそろ移動開始。 [jus]
  • 15:55 > @hyoshiok へたれですんません・・・って、なぜか Twitter が燃え気味な不思議wwww [jus]
  • 16:07 > @masa8723 Gusty Gibbon を Hardy Heron にするのにてまどった。ちょっと遅れそう。 [jus]
  • 16:08 > @masa8723 連絡は 6 時くらいにする。たぶん。 [jus]
  • 18:03 > @masa8723 ほい 発信: http://tinyurl.com/3gqwr8
本日のツッコミ(全11件) [ツッコミを入れる]
t2y-1979 (2008-05-06 (Tuesday) 20:41)

反論するならば、その根拠と代替のコードを提示してもらわないと、納得いかないですね。私だったら、あまり政治的な背景に深入りしたくないので、決めの問題で決めてくださいと、上に丸投げしますねぇ、、、。良い意味でも、悪い意味でもオトナになったのかな。<br>最強を決める意義はあまりないと個人的に思うのですが、そういった議論を見聞きするのは結構、好きだったりします(^ ^;;

takano32 (2008-05-07 (Wednesday) 09:54)

実は再帰のコードは移植だったんです。元は三変数のi, j, k みたいなのを使って書いてあって「こんなの読めるか、クソ!」みたいなコードが30行くらいでループしてました。もちろんC言語でだだっ広いブロックの途中で。それを函数化して再帰の4行で書くと叩かれます。なんともはや。<br>自分も最強、とか勝ち組、とかそういう言葉は嫌いなんですよねぇ。結局のところ本人の気持ちしだいなんですから。

きむら(K) (2008-05-07 (Wednesday) 14:12)

「ノイマン型」つーのはコンピュータのアーキテクチャのひとつであって、プログラミング言語の類型ではないので<br>「関数型言語」とかオブジェクト指向とかと並べられると非常に違和感があります。<br>ノイマン型コンピュータをよーく知っとけ、つーことではないっしょ?

takano32 (2008-05-07 (Wednesday) 14:43)

言語についてではなく、アーキテクチャのパラダイムという視点から主張したかったので、手続き型などではなく、あえてノイマン型と表現しました。関数型というのもプログラミング言語ではなく、ラムダ計算からのアーキテクチャを意図しています。オブジェクト指向もメッセージパッシングなどのアーキテクチャを意図しています。「ノイマン型アーキテクチャ」「関数型アーキテクチャ」「オブジェクト指向アーキテクチャ」という意図です。<br>実装では関数型言語もオブジェクト指向プログラミング言語も底はノイマン型で実現されているかもしれませんが、ここではパラダイムについて主張したいのです。抽象レベルがノイマン型の世界、関数型の世界、オブジェクト指向の世界です。

takano32 (2008-05-07 (Wednesday) 14:55)

っと。ついでですみません。<br>http://www.kt.rim.or.jp/%7ekbk/zakkicho/08/zakkicho0805a.html#D20080506-2<br>ソースコードの中に parse.y ってありますよ。

きむら(K) (2008-05-07 (Wednesday) 15:34)

んー、parse.yがあることも知らないように見られてたの?(泣笑)<br><br>BNFとyacc記述は必ずしも一対一で対応するものじゃないです(と思ってます)。<br>なぜなら、Ruby(やPerl)のyaccを使ったバーザは複雑な構文を解析するために(たとえばヒアドキュメントとか)、<br>lexerと状態を共有してその状態によって動作を制御している部分があります。<br>そういうことがあるんで、BNF(もしくはEBNF)で構文規則をきちんと書けるかどうか疑問に思ったわけです。<br><br>んでパラダイム云々の件は納得しました。<br>つつきたくなる重箱の隅がないわけではないけど、それは今やっても詮無いことなので。

takano32 (2008-05-07 (Wednesday) 15:41)

> yaccに落とすのが面倒ってだけで。<br>とあったので、知らないのかなーとか。面倒だけどやってることは把握されてたんですね。失礼。属性文法などにもお詳しいのですか?

きむら(K) (2008-05-07 (Wednesday) 17:13)

属性文法は教科書(書名がずばり「属性文法」という薄めの奴)を読んで、<br>処理系(たしか筑波大の学生さんがbisonを改造して作った rieとかいう奴)をちょっと触っただけで<br>多少はわかりますが詳しいとはとてもいえません(笑)

takano32 (2008-05-07 (Wednesday) 17:37)

実はその共著者のうちのひとりと0 hopの関係で、結構叩き込まれました。<br>Rubyのyaccとlexの間の状態保持は読んでないのですが、どうも属性文法と同じようにノードをたどりながら評価に必要な情報をたくわえてるんじゃないかなー、と思った次第です。<br># Wikipediaの属性文法の項目にyaccとの関係が載ってますね。Rubyのソースを真面目に読んでないのでどの範囲で実現可能なのか明言できませんが。

takano32 (2008-05-08 (Thursday) 06:26)

PostScript最強な和田先生のこともちょっと思い出した・・・<br>最強なんてのは各人にあるもの。さらには時によって変化するものだろう。

takano32 (2008-05-08 (Thursday) 06:33)

ちなみに、なぜ手続き型のパラダイムに触れてないか、というとすでに自然言語のなかで使っているから。むしろ、自然言語に思考が規定されすぎていて、あらゆるパラダイムに顔を出す手続き型はときに腹立たしい。

本日のPingbacks(全0件)