2021.11.30追記: 最近知った衝撃の事実,ポールの友達が苫米地さんと動画で言っている. 苫米地さん,うさんくさいスピリチュアルの人かと思ったら伝説レベルのLisp使いとは…

ハッカーと画家を読んだ.

エッセイの随所で、ハッカーの気質について語られている.

本記事では、その箇所の抜粋と要約、それに対する自分の考えをメモする.

記事を読むたびに、自分はハッカーとは程遠い存在なのだと悲観してしまう.

メイド・イン・ USA

コードは、ピラミッドみたいに、慎重に計画をしてから苦労して組みくものではない。一気に集中して手を動かしながら、常に気を変えていく、木炭スケッチのようなものだ.

ソフトウェアの腕のよさは、素早い仕事を意味する.

そこでは大胆さが酬われる.

車や都市はそうはいかない. あまりに物質的すぎるからだ.

とにかくやる、という方法は、確かに利点がある. 速度がその理由だと思う. 誰でも作れる日用品を作ることで富を成すのは難しい. 価値は新しいものにある. そして最初になにかを作り出したいと思うならば速くやることは重要だ.

ハッカーの気質というものを、ソフトウェアや映画と都市や車の対比によって説明している.

  • ハッカー気質 … 速さ、新しさ
  • 職人気質 … 精密さ、成熟さ

アメリカ人は、日本に比べて車をつくることは下手だけれども、ソフトウェアをつくるのは得意、それはハッカー気質をもっているから.

ハッカー気質、自分には存在するか?今のところ、ない. 一気呵成に自分の頭に浮かんだアイデアをコードに落とすことができない. それは、気質の問題なのだろうか?才能の問題なのだろうか?

ハッカーと画家

ハッカーと画家に共通することは、どちらもものを創る人間だということだ。

ハッカーと数学者は科学をやっているわけではないんだ。

科学者は、まず完璧な仕事から始める. つまり、 誰か他の人が既にやったことを再現することから始める。そうしているうちに、独自の仕事が出来るレベルに達するのだ。一方、ハッカーは、最初から独自の仕事をする。ただ、最初はへたくそだろう。ハッカーはオリジナルから始め、上手になってゆく。 科学者は上手になることから始め、オリジナルになってゆく。

ハッカーと科学者の対比によって、両者の違いを示している.

ハッカー気質 科学者
美しいデザインで評価される 独創的な論文で評価される
実践重視 理論重視
独自なものから上手になる 完璧なものを再現して上手になる

ハッカーと画家は*ものを創る*という点において共通していると述べている.

  • 昼間の仕事をもち、美しい創作の時間は別の時間にもつ。
  • 自分で書く(描く)ことによって学ぶ。ハックしながら学ぶ。
  • 技法を模倣することで上達する。
  • 次第に詳細化しながらものを創っていく(細部から全体へ)
  • 偉大な作品は到達すべきゴールのさらに上をいっていなければならない
  • 美に対する熱狂的な没頭を要求する。見えない細部にもこだわる.
  • 他の人と共同で作品をつくる。共感能力が必要。
  • 絵画同様に、ハッキングもクールな時代がやってくる.

自分は、ハッカーというよりも科学者に近い. 自分の学習スタイルは、本を買って読んでいる。つまり、完璧なものを模倣することで上達を考えている。これは、ハッカー気質からは遠いことだ。

ハッカー気質とは、下手でもいいからなにかを創り上げながら上達していく. なにかをつくりあげて、github に公開したこともない.

The Word Hacker

一般的には、ハッカーとはコンピュータに侵入する人物のことを指す。プログラマの間では、優れたプログラマを指す。プログラマにとって"ハッカー"は文字通りその道の達人であることを意味しているんだ. つまり、コンピュータに、よいことであれわるいことであれ、自分のやりたいことをやらせることができるもの、と言うことだ.

名詞の"ハック"には二つの意味がある. それは賞賛にもなるし、侮辱にもなる. 醜い解答と独創的な解答には、共通点がある。どちらもルールを破っているということだ.

ハッカーは規則に従わない。それがハッキングの本質なんだ。

トマス・ジェファーソンはこう書いている。『政府への慣行の精神は、ある種の状況では非常に価値のあるものだ。だから私は、そのような精神が常に保たれることを望む』

ハッカーの気質、それはルールを破ること。ルールを破ることが富と力の源であり、アメリカ人の気質ではなかったかと。

自分は、日本人だし、とりわけルールを破ることに臆病だ。この点においても、ハッカーには遠い。

普通のやつらの上を行け

エリック・レイモンドはエッセイ「ハッカーになろう」の中で、他のいろいろなアドバイスに混じって、ハッカーになりたい人はどんな言語を勉強すべきかを述べている。まず Python と Java から始めよ、学ぶのが容易だから。真剣なハッカーはさらに、Unix をハックするために C を学び、システム管理と CGI スクリプトのために Perl を学ぶべし。そして本当に真剣なハッカーは Lisp を学ぶことを熟慮すべきだ、と。

技術を選択するときは、他の人がどうやってイルカなんて無視して、何が最適かを見極めることだけを考えるべきだ.

プログラミング言語は、その力において差がある。アプリケーションを書くならば、手に入るなかで最も力の強い言語を使うべきだし、そうでない選択は、機械語を使うことが間違いであるのと同様で、間違いなのだ.

私は、Lisp が一番上にくると言おう。なぜなら、マクロがあるから。

ハッカーは Lisp を学ぶべきと、Lisp を熱く語る文章.

自分は、Lisp ができない.

素晴らしきハッカー

難しいのは、問題を解くことではなく、どの問題を解くかを決めることだ。創造性を測るのは難しい。が、現実にはそれはコードの行数で測られるような生産性をはるかに陵駕するだろう。

スーパーハッカーを特徴づけている資質は、プログラミングを本当に愛しているということだ。普通のプログラマは生活のためにコードを書く。素晴らしいハッカーにとっては、コード書きは楽しみのためにするもので、それにお金を払ってくれるというひとがいれば大いに喜ぶものだ。

ハッカーはよい道具が好きだ。悪い道具をつかうことに耐えられない.

素晴らしいハッカーはオープンソースを使うことを主張する。そのほうが良質だというだけでなく、自分で多くをコントロールできるからだ。

ハッカーにとって、ソフトウェアの次に大事な道具は、おそらく仕事場だ。

ハッカーは、よい道具とともに、面白いプロジェクトを好む. 新しい技術的な挑戦があれば、どんなアプリケーションだって面白くなれる。

良いハッカーになる鍵は、たぶん自分がやりたいことをやることだ。何かをうまくやるためには、それらを愛していなければならない。ハッキングがあなたがやりたくてたまらないことである限りは、それがうまくできるようになる可能性は高いだろう。

ハッカーはとりわけ好奇心が強い。集中力について、他のすべてのことを頭から追い出せる能力。

自分を素晴らしいハッカーにすることができるとしたら、退屈なプロジェクトの仕事は一切しなくてよい、その代わり、絶対に中途半端な仕事はしないと誓うことだ。

この文章では、よいハッカーの特徴について乱雑にかかれている.

  • よい道具を愛する
  • よい職場を愛する
  • 面白いプロジェクトを愛する
  • やりたいことをやる
  • 好奇心と集中力が強い

自分は、いやいやながら、どんな仕事でもしてしまう。それは、自分はプログラムを生活のために書いているからだ。生活のためではなくて、楽しみのために書くほど実力がない。

プログラミングすら、今の自分には愛せないでいる.

まとめ

ハッカーに憧れてきた。しかし、ハッカーとは程遠い自分を再認識した.

自分の嫌になるほどの、慎重さ、臆病さが、ハッカー気質を妨げる。

自分は本当に、この道を選んで正解だったのか?

ハッカーになりたければ、もっと大胆に考えて、行動しなければいけない.