「土台となる技術を身につける」を、もう少しちゃんと言い換えれば、「今の関心領域より下のレイヤーの知識も身につけよう」ということになります。 みなさんが使っている言語の下のレイヤーはなんでしょうか? Ruby、Python、PHPなど、多くのスクリプト言語はC言語で書かれています。node.jsはC++ですね。 ということは、これらの言語についてはC言語かC++が下のレイヤーといえるでしょう。

 それでは、C言語やC++のさらに下のレイヤーはなんでしょうか?よく言われるのはアセンブリ言語ですが、じつはアセンブリというのはC言語やC++より下のレイヤーのうちの半分でしかありません。 残りの半分は、オペレーティングシステム(OS)です。 つまり、プログラマーとして土台となる技術を身につけようと思ったら、OSの機能がプログラミング言語でどう使われるかも知っているべきだということです。

 例えば、ファイルを開くのも、メモリを確保するのも、ネットワークにアクセスするのも、すべてOSが提供する機能を利用します。 本連載では、OSが開発者にどのような機能を提供してくれているかを見て、それらを使う「システムプログラミング」の方法を学びます。 プログラミングを支えている下位のレイヤを、 プログラマの視点で 知ることが、本連載の目的です