はじめに

本書は忙しいときや復習するときは太字だけ読めばよいように構成してある。

はじめに

プログラミングとはコンピュータに対して命令を下し、人間の意図した通りにコンピュータを制御する技術および理論のことである

現代では高性能なコンピュータが容易かつ廉価に入手でき、1990年代のスーパーコンピュータに匹敵する性能を持つ端末を、スマートフォンとして個人が所有する時代になっている。その他にも家電、自動車、電車、工場といったあらゆる場所でコンピュータは使用されている。電気で動くものはとりあえずコンピュータが制御するとまでいえる時代になった。

プログラミングの技術や理論を学ぶということは、潜在的にそれらすべてのコンピュータに対する影響力を獲得することに等しい。この事実を前にして、どれほど真剣にプログラミングを学びたいと思うかはあなたの自由である。

その一方で、プログラミングを学習するに当たっての敷居の高さが学習者を遠ざけているのも事実である。あなたがいま仮に真剣にプログラミングを学びたいと考えていたとしても大抵は挫折するだろう。通常、入門書は「プログラミングは簡単だ」と甘言で誘うものだが、私はプログラミングが簡単だとは思っていない。読者にぬるま湯だと思わせておいて飛び込ませたら実は釜茹で地獄、という事態は避けたいので少しおどかしておこう。

プログラミングは複雑で難しい。本書が提供するのはプログラミングについてのなるべくわかりやすく丁寧な説明だけであり、プログラミングに関する技術や理論そのものの複雑さを軽減する役割はない

プログラミングを簡単だと思えるようになるのは、コンピュータの複雑極まる機構への理解が深まり、最初は苦痛にも感じるコーディングの作業に慣れてからの話である。子どものころ自転車に乗る練習をして何度も転び怪我をしたこと、料理の練習をして包丁で手を切ったり火傷したりしたことが記憶に残っている人がいるかもしれないが、それと同じことをこれからやるのだと覚悟を決めてほしい。高度な作業を苦もなくこなせるようになるには勉強、練習、そして習熟。近道はない。才能の多寡で習熟までにかかる時間の差はあるが、同じ道を駆け抜けるか歩いて進むか、それだけの違いである。

自分の習熟が遅いときにも悲観してはならない。また習熟の遅い他者を見下してもいけない。一口にプログラミングといっても分野は多岐に分かれており、どの分野に適性があるかで習熟までにかかる時間は大きく異なる。プログラミングの中でも何度チャレンジしてもうまくいかない分野もあれば、一度ですんなり理解できる分野もある。特に初学者にとって適性のある分野から学び始められるかどうかはほとんど運である。あなたや他の誰かの勉強がうまくいかないならそれは運が悪かっただけの可能性が高い。

他の誰かが3日で理解できることを、あなたは1ヶ月以上かけて理解せねばならないかもしれない。もしくは逆に、他の人が何年も手をこまねく分野でもあなたにとってはいとも容易くたった半年で理解できるかもしれない。ただの向き不向きの問題であり、自分の適性を理解するには長い時間がかかる。

もしもあなたがプログラミングに向いていたら、その知識と技術を他者を助けるために使うこと。あなたが一度プログラミングを始めれば、無料で使えるツールの多さと無料でアクセスできる情報の多さに驚くことだろう。また、質問したときに信じられないほど丁寧な回答が返ってくることに頭が下がることを度々経験するだろう。現代のプログラミングは、他の数多くのプログラマの好奇心と善意と努力の上に成り立っている

コミュニティに貢献することは義務ではないが、名誉であり、数多くの貢献をした者に尊敬と仕事とお金が集まる。また、プロダクトやサービスの価値はどれだけ他者の生活を豊かにしたかで決まるものである。一流の開発者は自分を含めたみんなが何に困っているか、どんなものを求めているかを考え、解決策を提供する。目標や目的は人それぞれだが、もし道に迷いそうになったらこのシンプルな原則にしたがって行動するとよい。

Last updated