StudyCS.log

CSを勉強している人が、学習の足跡を残すための手記

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

f:id:HoriK:20210405183908j:plain 

 ハッカーと呼ばれるような優れたプログラマがどのような気質やコーディングスタイルを持っているか。そして、そうした人々に作られるソフトウェアのデザインはどのような要素を満たしているか、に言及した名著。

 本書ではプログラマの最も重要な能力の一つとして開発スピードの速さが紹介されている。開発が早ければ士気を保つことは容易になるし、何よりも短時間で多くの価値を創出できる。手法としては、主要な目的を果たすだけのプロトタイプをすばやく開発して、あとはそれを徐々にブラッシュアップしていくというもので、これはちょうど画家がスケッチをしたり、絵の具を塗り重ねながら完成を目指すのに似ている。

 こうしたスタイルを取るためにハッカーたちは、重要な部分に集中できてかつタイプ数の少ない抽象的な言語、そして必要時にはソフトそのものを改変できるオープンソースソフトウェアを好む。

 良いソフトウェアのデザインというのも、ハッカーたちが好むソフトウェアに通ずるところがあって、シンプルで柔軟、そして目的の問題を正しく解決するのが大前提だ。新たにソフトを作る場合はそのソフトウェアが革新的である必要もある。これはタブーとされていることや困難とされているような問題に注目してみると、良いアイデアが発掘されることがあるようだ。開発の形態はベンチャー起業が理想的だ。ハードワークが前提になるし、ソフトの改変も圧倒的に早い。開発の対象は現在はWeb一択と考えて良さそう。

 この本を読んで僕のコーディングスタイルがあまりに時代遅れであることに驚愕した。僕は紙で問題を解いてからプログラムを書き始めるが、これは現代主流となっている高級言語の良さを殺している。問題に集中できるように抽象化が進んだのだから、その言語を使って、エディタ上で思考を重ねるべきだ。

 そして高級言語の中でもより高級な言語に移行する必要性も感じた。僕はいつもCでプログラムを書いているが、Pythonに移行しようと思う。移行しない理由がもう殆ど無い。

 という具合に、本一冊でコーディングへの考え方が大きく変わった。

参考文献

 「Paul Graham:著 川合史郎:監訳『ハッカーと画家 コンピュータ時代の創造者たち(Hackers and Painters: Big Ideas from the Computer Age)』オーム社 2005/01/25」