スキップしてメイン コンテンツに移動

投稿

ラベル(書籍)が付いた投稿を表示しています

「ハッカーと画家」を読んで

ポール・グレアム の「 ハッカーと画家 コンピュータ時代の創造者たち 」を読んだ。もっと以前に読んでいてしかるべき本であったが、読みそびれていた。もっと技術的な話だと思っていたのだが、(プログラマであれば)気軽に読めるとても面白いエッセイ集だった。 個人的に興味深かったのは、第4章の「 天邪鬼の価値 」で、ジョブズとウォズニアックが錠開け装置をいじっている写真だ。リチャード・ファインマンがマンハッタン計画で重要書類の入っている金庫を破ることを楽しみにしていたり、グレアムが学生の頃のMITではピッキングが流行ったりしていたそうだが、それを読んで、自分が子供の頃のことを思い出した。古いダイアル式南京錠が家にあったのだが、それは錠が閉まっていて親に聞いても番号が分からないという。そこでどうやったら開けることが出来るかを考えるうちに面白くなり、次第に夢中になっていった。ダイアルは3桁の数字なので、10*10*10=1000通りを試したら必ず開けられる。しかし、そんな面倒なことはしたく無い。悪用されても困るので詳しくは書かないけど、しばらくいじっているうちにキーの動きに法則があることに気がついた。こうなれば簡単で、最大で10+10+10=30通りを試すだけでよくなる。これで開かない錠前を開けることができた。今で言えばセキュリティに欠陥があるということなのだろうが、困難だと思われることに挑戦し、それを克服することは、とても強い達成感となる。子供ながらにそう感じた。ファインマンもMITの学生もそう感じたのだろう。これがハックする理由の原点だろうか。 第13章の「 オタク野郎の復讐 」を読めば分かるけど、ポール・グレアムは熱心なLispハッカーで、Lispを非常に高く評価している。確かに他の言語の意義についても説いてはいるけど、「他のプログラミング言語はとうとう(Lispの生まれた)1958年に追いつこうとしている」と書いていることからもLispが最も良い言語だと考えているのが分かる。確かにLispは良い言語だと思うけど、個人的には万人にLispを勧めることはできないなぁ。 自分の場合は、普段はC++とPythonを利用していて(多くの場合はこれで事足りる)、最近は並列化のためにTBBやCUDA、それとErlangを使ったりしている。もちろんAndroidで開発すると...

プログラミング言語Erlangを覚えよう

以前から関数型プログラミング言語であるErlang(アーラン)を覚えたかったので、「 プログラミング言語Erlang入門 」を読んだ。この本自体は本当に入門者というか初心者向けの本となっている。しかし、自分自身はほとんど関数型言語について知識がないので、こういった入門書で概略を掴めるのはありがたい。C言語などの命令型プログラミング言語と比べるとスタイルが大きく異なり、それらの知識をベースとすることができないので、先日の Luaの入門書 ほどお手軽ではなかったが、内容自体は非常に簡易なので1日あれば余裕で理解できるだろう。 概略以上のことを学びたいのなら最初から「 プログラミングErlang 」を読むのが良い。こちらも手元にあるが、かなり良い本だと思う。ちゃんとしたプログラムを書きたいのならこちらがお勧め。 ところで、Erlangは並列処理言語としても注目を集めている。非常に効率よく並列処理ができるのが特徴で、それぞれのスレッドが完全に独立して動くように設計されている。独立しているスレッドであるためErlangではそれをプロセスと呼んでいる。spawn()関数で各プロセスを実行することができ、非常に簡単に並列処理プログラムを作ることができる。 「 プログラミングErlang 」に内包リストを使ってアナグラムを標準出力に表示するプログラムが載っていたのだが、それを並列処理化して一つのファイルに書き出すように変更したプログラムを書いたので、このエントリの最後に示しておく。二つの文字列を二つのプロセスを使って同時にアナグラムを生成し、その結果を一つのファイルに書き出している。このコードでおぼろげながらでもErlangの雰囲気が分かるだろうか。 test.erl -module(test). -export([perms/1, write/3, wait/1, anagram/2]). %% 順列生成. perms([]) -> [[]]; perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])]. %% ファイルへの書き出し. %% S: ファイル, L: 文字列, P: プロセス識別子. write(S, L, P) -> lists:foreach(fun...

「Googleを支える技術」を読んで

Googleを支える技術 を読んでみた。Googleが出している論文を分かりやすく噛み砕いて説明している。基本的には論文を読めば分かることなのだが、それほど分量もなく平易に書かれているので、ざっとGoogleの技術を理解するのには良いと思う。 内容としては、Googleの歴史、Googleファイルシステム(GFS)、分散ストレージ(Bigtable)、分散データ処理(MapReduce)、運用コスト、開発体制について書かれている。GFS, Bigtable, MapReduceあたりは技術的な話で、まあ面白いのだが、大体予想していた通りであった。それに対して、運用コストの話は自分の視点からではほとんど考えない部分であり、Googleが如何に電力を少なくするかに注力しているかが良く分かり興味深い。また、開発体制については自分の考えている理想に近いものであった。 ここのところ、思ったよりも自分がGoogleに傾倒していると感じる。理想としては多種多様な技術をはまんべんなく吸収し使用していくべきだろうが、Googleをベータ版の頃から使っている自分としてはついついGoogleの技術に目が行ってしまう。自分のメイン言語がGoogleと一致していることも大きいのかもしれない。それでも、様々な技術を勉強する姿勢だけは忘れないようにしたい。

入門Luaプログラミング

入門Luaプログラミング を30分で読み終えて、一通り使える 気分 になった。確かに簡単に覚えられると思う。まだ、開発環境さえ入れてないので、実際は動かしていないけど。 PlayStation Home の開発言語にもなっているようで、今後が楽しみだ。 以下、メモ。 ・基本的に添字は1から。Fortranと同じ。 ・endで終わる。 ・""と[[]] ・関数はfunction ・配列は{} ・while~do, for~do ・偽はfalseとnilのみ。 ・+と.. ・io., os., string., table., math.など。

ビューティフルコードとmalloc/free論争

この ビューティフルコード (Beautiful Code)は悶絶するほど凄い本だ。著者には、カーニハンを筆頭に世界中のGuruたちが並ぶ。個人的には、高速ビットカウントやNumPy、MapReduceあたりに興味を覚えた。コードを書く人なら興味を覚えるテーマが一つや二つは必ずあるだろう。 しかしながら、私にとってはビューティフルコードの価値の1/3は、久野靖さんとまつもとゆきひろさんの対談にある。これは凄いよ。ずいぶん前、fj.comp.lang.c++で大規模なフレームがあった。 malloc/freeについての論争 である。mallocでメモリを確保した後にfreeをしなければならないのか、そうではないのかという、今でも時々蒸し返される定番の話題だ。 この当時、初心者にはmallocと対応させてfreeをすることを教えない方が良いとする意見がGuruたちの間では優勢であり、その中の一人にまつもとさんもいた。一方、久野さんは教えるべきだとの意見だった。前々からfjでの久野さんの意見はほとんど自分と一致していて、そして自分にとっては一々が説得力を持っていた。このときのmalloc/freeの意見でも完全に久野さんと同意見だった。malloc/freeについての主義や主張をここで繰り返しても仕方がないので、あとは C FAQ でも読んで欲しい。云いたいことは、自分にとってこの時期がプログラミングに対しての考え方を形成する上で重要であったということだ。 現在、自分はメインのLLとしてPythonを使っている。これは上記のフレームが影響しているのだ。malloc/freeについて自分と異なる考え方を持つまつもとさんはRubyの作者であったが、私がRubyではなくPythonを選んだのはまさにこの考え方の違いのためだった。個人的には、Rubyの方がよりオブジェクト指向としての完成度が高いし、短く書ける(内包表記はまた別だけど)ので、好みに合うように思うのだが、やっぱり作者の考え方が自分と違うことを知ってしまうと喜んで使うことができなくなるのだ。今ならもう少し柔軟な考えもできるが、当時はまだ若かったこともあってどちらも使うという選択にもならなかった。 そして、久野さんとまつもとさんの対談をあの当時の懐かしさと一緒に読んでみた。型に対する意見の違いなど、や...

世の中は常に混沌に向かっている

エネルギー危機とは云うけれど、エネルギー保存則で分かるように、世の中のエネルギーが失われることは無い。ある場所からある場所へ移るだけだ。なら、エネルギーによる危機など始めから存在しないのだと思われるが、そうは問屋が卸さない。エネルギーは変わらないが、そのかわりエントロピーが増加するのだ。これがエントロピー増大則である。仕事が行われる際(歩いたり、喋ったり、自動車を運転したり、テレビを見たりなど…なんでもよい)、価値の高いエネルギーから価値の低いエネルギーに移るが、それによってエントロピーは増えるのである。全体のエントロピーは決して減ることは無い。ある一部においてはエントロピーが減少しているように見えても、ほかのところでそれ以上にエントロピーは増えている。エントロピーとはすなわちカオスのことであり、世の中は常に混沌に向かっているのだ。なので、エネルギー危機とは正確ではなく、エントロピー増大の危機というのが正しい。 以上については、 『エントロピーと秩序―熱力学第二法則への招待』 に詳しく書かれている。エントロピーについて知りたい人には必読の書だ。

神のいない世界はすばらしい

リチャード・ドーキンスの 『神は妄想である』 を読んだ。ドーキンスは無神論者で有名だが、まさにそれを表す過激なタイトルの通り、内容は「神などまず存在しない」と云うものだった。自分も神などいないと思っているので多くの部分で共感を持てた。 特に問題となるのは、宗教・神を信じることが人間を不幸にしているということだ。これは自分も前々から感じていたことで、9・11のテロ事件も、イラク侵攻も、現在行われてる世界の様々な紛争も、古くは魔女狩りや十字軍も、そして日本ではサリン事件、すべて宗教に関わるものだ。聖書の内容も酷いもので、特に旧約聖書については目も当てられない。女性なんてその辺の石ころ並みの扱いだ。 また、宗教のせいで、科学が言われ無き迫害を受けている。聖書と矛盾する進化論や地球の年齢を端から間違っていると決め付け、「人間のような複雑なものが自然にできるわけが無い。つまり、神のみが人間を誕生させることができるのだ」と云う論調。大体、その全知全能の神はどうやって作られたというのか?全知全能なんて途方も無く複雑だろうに。 さらに、信者は神がいなかったらどうやって人間は道徳を身に付けるのかとまで云っているらしい。酷い話だ。宗教に入っている人たちは、もし神がいないとしたら(実際いないのだが)、道徳観念を捨てて悪逆非道を尽くすのだろうか。私は無神論者だが、良いことと悪いことは知っているつもりだ。 自分は物事を良く知ることこそ、世界から偏見をなくし、本当のことと嘘のことを区別する能力を与え、世界から争いを減らすことができる力だと思っている。それは、偏見や嘘にあふれている宗教の世界を無くす、もしくは形骸化させる力になる。勉強することにはこのように大変重要な意味があるのだ。巷でよく聞く、この勉強・あの勉強は、将来役に立つ・役に立たないという議論などまるっきりナンセンスだと思う。 最後に、ロシアの小学校で起こったテロの悲惨さを伝える秀逸なフラッシュ・アニメーション、 『未来はすばらしい』 を紹介しておく。これはチェチェンとロシアの紛争によるものだが、その背景には宗教が深く関わっている。因みに、フラッシュの右上に表示されるSubtitleをJapaneseにすると、字幕が日本語で表示される。

似非科学

スラッシュドット に お茶の水大、「ニセ科学批判」がらみで提訴される という記事が載っていた。ホント、世の中、似非科学に騙される人が多いこと、多いこと。マスメディアに踊らされた挙句、まったく効果がないものを買わされる。マイナスイオン、酸素水などなど。みんな有難がって買っていく。今の世の中、少し調べれは分かることなのに…。また、一般教養レベルの科学の知識があれば回避できることも多い。権威(たとえばどこそこ大学の教授など)が言うことには皆弱いのか。 ゲーム脳なんてのもあったな。これ、提唱者の実験結果にかなりの恣意性が入っていることは有名だ。ちゃんとしたところでゲームにおける影響を調査したが、結局、有意な悪影響は認められなかったそうだ。自分だけならこんなくだらないことに引っかかったりすることは無いのだが、驚いたことに自分の子供を預けている保育園担当の医師がゲーム脳になるからゲームはやるなと父母に力説していた。自分が子供のころ、海で陽に焼くと冬に風邪を引かないとか(実際には免疫力が下がって病気になりやすい)、歯を磨くときは歯ブラシを縦にして磨くほうが良いとか(実は歯茎を傷めやすい)、これらと同じように、将来になって今の子供たちが、ゲーム脳なんてでたらめなことが流行っていたなぁ、なんてことを言うのが今から目に浮かぶ。 カール・セーガンの「人はなぜエセ科学に騙されるのか」は随分前に読んだのだが、かなり役に立つことが書かれているので一読したほうがいい。…と思ったらもう絶版なのかな。いい本なんだけどなぁ。

なぜこの方程式は解けないか? - 天才数学者が見出した「シンメトリー」の秘密

なぜこの方程式は解けないか?―天才数学者が見出した「シンメトリー」の秘密 を読んだ。群論の基礎を築いたエヴァリスト・ガロアの波乱万丈の人生を中心に、群論にかかわる様々な出来事やそのすばらしい応用をわかりやすい例をとって語っている。軽く読める数学史と言ったところ。軽く読めるからといって内容が軽薄というわけではなく、できるだけ多くの専門外の人々にわかるように、数学、物理学、生物学、果ては音楽まで関わってくる群論の凄さと面白さを伝えている。 正直に言うと、自分は昔からあまり群論は好きではなかった。しかし、これを読んだあとは群論に強い興味を抱いた。もう少し群論について学んでみようかなぁ。やはり、好きこそ物の上手なれ、だ。

カオス - 新しい科学をつくる

「 カオス―新しい科学をつくる 」は15年も前に読んだ本なのだが、非常に面白かった。以前からマンデルブロ集合やローレンツアトラクタなどに興味を持っていたのだが、素人にもわかりやすく記述されており、世界にはなんて奇妙で不可思議な現象があるのだろうと素直に感じた。事実は小説より奇なりとはよく言ったものだ。こんなこと、事実を目の当たりにしなければ、到底信じられない。 例えば、x(next)=rx(1-x) という式がある。これは一見何の変哲もない式に見えるが、rのパラメータを変化させていき、xがどの値に落ち着くか観察してみるといい。とても奇妙な振る舞いが見られる。xの初期値を0.4としたとき、r=2.8ならばxの値は1つに落ち着くが、r=3.2だと2つ、r=3.5だと4つ、r=3.7だと無数になる。そうかと思えば、r=3.84だと3つに収束する。なんとも不思議だ。こういった予測できない振る舞いがカオスなのである。 上記のグラフはPython+matplotlibで描いたが、そのコードを書いておく。 from pylab import * def calc(r, x, n): values = [] f = lambda r, x: r * x * (1.0 - x) for i in xrange(n): x = f(r, x) values.append(x) return values if __name__ == "__main__": n = 1000 x = 0.4 for r in arange(2.8, 4.0, 0.001): plot([r for i in xrange(n-n//10)], calc(r, x, n)[n//10:], "b.", markersize=1) axis([2.8, 4.0, 0.0, 1.0]) text(2.9, 0.2, r"$x_\rm{next} = rx(1-x)$", fontsize=30) xlabel(r"$r$", fontsize=20) ylabel(r...

氷と炎の歌

久々に寝食を忘れて読める本に出会った。 氷と炎の歌 シリーズは、ジョージ・R・R・マーティンが著者のローカス賞受賞作だ。全7部作("A Game of Thrones" (1996), "A Clash of Kings" (1998), "A Storm of Swords" (2000), "A Feast for Crows" (2005), "A Dance with Dragons", "The Winds of Winter", "A Dream of Spring")の予定で、現在、原書で第4部まで刊行されており、日本語訳は第3部(「七王国の玉座(しちおうこくのぎょくざ)」、「王狼たちの戦旗(おうろうたちのせんき)」、「剣嵐の大地(けんらんのだいち)」)まで出ている。 内容は簡単に言えば、戦記もので第1部のタイトルにも入っているように、ある事件がきっかけで複数に分裂した王国の群雄割拠物語である。それだけに登場人物も非常に多い。北部では人外の者である「異形人(The Others)」、現在では死に絶えたと言われる「ドラゴン」、ある種の魔法など、いくつかのファンタジーの要素もあるにはあるが、物語を味付けするためのスパイスとして入れられているに過ぎず、それが主となることはない。この物語は、現実世界となんら変わるところはない人間の生き様や愛憎を扱った、ヒューマンドラマなのだ。それだけに、嫉妬や憎悪など人間の負の面が赤裸々に描かれており、所謂「綺麗な」話を望む人々や子供たちは読まないほうが良いだろう。 この氷と炎の歌で特筆されることは、明確な主人公がいないことである。それぞれの章で登場人物の一人が指定され、その主観で物語が綴られている。その人物が感じたこと考えていることで構成されいるので、同じ物事の描写も章によって大きく異なる。また、選ばれる人物は基本的に立場の弱い人々である。弱いといっても社会的弱者という意味ではなく、その環境で困難な状況にある人物という意味であり、身分としての弱者ではない。このマーティンという作家は弱者を描くのがとてもうまいと思う。 この物語では主人公がいないと書いたが、裏を返せば安全な...