[Book review]ハッカーと画家

Book

Hello there.

また、1冊読み終えたので、防備のメモを残しておきます。

かなり昔、タイトルと表紙の絵画が気になってたんですが、ついぞ読むことがなかったものをたまたま近所の本屋さんで見かけたので、買って読みました。

原題が、「Hackers and Painters: Big Ideas from the Computer Age – Paul Graham」ってやつです。

結果、個人的にもっと早く読んでおけばよかったです。

2005年に(日本語訳が)発売されてますが、当時から見るとほぼ未来予測みたいなことが書かれてます。

著者、Paul Graham氏 は Lisp の天才プログラマと称されていますが、文章を書く技術も抜群です。

全16+1章からなり、基本的には著者の Webサイトで公開されているエッセイの日本語訳集となります。 (例えば、https://paulgraham.com/hp.html)

メモ(だいたい個人用)

がっつりコンピュータの分野の内容かと思いきや、意外と身近に「こういうのよくあるよね〜」みたいに共感できる小話が出てきます。

例えば、「人は、自分よりも下の階級だと “思う” 人々を貶めて足場を固めようとする。」
学校でも職場でもよくあるやつです。

「作家や画家や建築家(などの芸術家)は、創りながら作品を理解していくが、プログラマはプログラムを書きながら理解するべき」 とあります。また、至る所で「早すぎる最適化」についての言及があり、なにごとに関しても言えますが、最初から仕様を細かく煮詰めすぎないよう、警鐘を鳴らしています。
まぁ、仕事でもどんな立派な計画立ててもその通りに行くプロジェクトなんてないですし。それよりも、走らせながら理解していくことの重要性を著者は説いています。

『計算機プログラムの構造と解釈』の冒頭にある引用があり、「プログラムは人が読むために書かれるもので、たまたま計算機が実行できるだけ」とあります。この辺りは、リーダブルコード に通じるところがあります。(特に高級言語になればなるほど)

「口にしたがために騒ぎに巻き込まれるようなことの多くは、真実である可能性はそれなりにある」
これは、偉い人が言ってるのを聞くことがありますが、やっぱり個人的にも真実だと思ってます。結構正確に現実を言い表している。

「職種によって、時間の単位は異なる。」 
これは、もっと具体的にいうと、やっている作業の内容によります。例えば、顧客へのメール返信は途中で同僚に話しかけられて中断してしまってもさしたる影響はありませんが、プログラム組んでる時にやられたらたまらないです。著者が言いたいのもまさにそこです。

「富こそが欲しいものであり、お金ではない」
お金は欲しいものを手に入れるための中間段階でしかなく、「富」≒「人々が欲しがること・もの」。そして、富という観点から見たときに、現代は決して貧しいわけではない。(100年前より確実に進歩している)

会社において、「そもそも表向きはあなたはすでに可能な限り頑張って働いていることになっている。」
これは笑いました。確かに完全な個人事業でやっていない限りは、短期で見ればどの程度頑張ったとこで結果(収入)は変わらないので、あくまでも短期かつ個人で見た場合、「頑張ったふりをする」ことで費用対効果が上がったようには見えます。
ここは、日本の悪くなりがちな点が見え隠れするようです。

「会社はさあなたの仕事の価値を測る(正確な)手段を持っていない」
この著書が発刊されてから20年ほど経ってますが、ここはそんなに進歩していないように思います。少なくとも、もっとデジタル化する余地はあるんじゃないかと。(プライバシーとかの問題もあるとは思いますが)

「第8章 スパムへの対策」
この章は、かなり具体的なコンピュータ関連の内容となっています。具体的にスパムフィルタで使われ値得る「ベイジアンフィルタ」の考え方についての説明です。(なんなら最初に考案したのが著者)
なぜこの形式のスパムフィルタが有効なのか?について、誤検出、コストやスパム業者との競争の観点から説明されています。一読の価値ありです。
スパムフィルタの仕組み自体がかなり統計学寄りのものだと思うので、2024年現在では、同じく統計学と親和性の良いAI系のシステムと組み合わせた発展とかしてそうです。

「科学者、音楽家、画家などは、『美しい』という形容詞を良い仕事を表すために使ってきた」
第9章では、美しさについて、十数個の切り口から述べてられています。著者は、絵についても学んだようで、絵画やプログラムを含む「美しい仕事」が成立する要件や美しさの性質(正体)についての説明は読んでいて腑に落ちるものがあります。特に著者の言語での表現力が際立ってるなと思う章です。

「プログラミング言語は単なる技術ではない。プログラマはそれを使って思考する」
「言語は思考を規定する」って格言があったはずです。ここに通じるものがあるかと。なんなら、Ted talks でも似たようなスピーチがあります。要するにこういうことです。How language shapes the way we think | Lera Boroditsky | TED
ある言語(自然言語でもプログラミング言語でも) で考えることができない概念は考えようがないよね、ってことです。

「プログラミング言語は半分は技術で、半分は宗教なんだ」
ここも抜群に面白い表現です。ただ、こういう見方ができると、なぜ至る所でプログラミング言語論争が起きていて、そしてなぜ決着がついていないのか、が理解できます。

「プログラムの形は、それが解くべき問題のみを反映すべき」
これはなんとも言い難いです。どうしてもシステムプログラミング系になると(ハード寄りの)その他の処理が多くなるように思います。逆に、Python とかの高水準言語を使える場合、余計なこと考えなくても適切なライブラリが適切に処理してくれます。

「良いハッカーが細かい問題を避けるのは、ファッションモデルがチーズバーガーを避けるのと同じ理由だ」
最高にユーモラスですね。ファッションモデルがチーズバーガーを食べないのは、余計な脂肪をつけないためですが、ハッカーが細かい(つまらない)問題を考えたくないのは、頭が鈍るからってことです。

まとめ

他にも山ほど現実を明確に描写した表現や、面白い表現はありますが、この辺で。

何冊か、いわゆる天才プログラマと呼ばれる人が書いた本を読んでの主観的な印象ですが、プログラムを書く人は、文章を書く力が高いように感じます。
簡潔に要点をまとめ、論理を通して、時にユーモラスに、っといった感じ。いつもコードを書く際にやってるからなのだろうと思います。

良いデザインをするのは難しい。 素晴らしい仕事をした人々を見ると、彼らに共通するのは並外れた努力であることがわかる。

ハッカーと画家 – コンピュータ時代の創造者たち p.142, Paul Graham

誰もが知っているけどなかなか難しいこと、です。

個人的に気に入ったとこだけささっとまとめてますが、この本が気になった方がいれば幸いです。

それでは、この辺で。
また新しい本を読んだら更新していきます。

コメント

タイトルとURLをコピーしました