書籍購入:SchemeとUNIX、理論と実践の狭間にて

計算機科学にしろソフトウェア工学にしろ、正規の教育を受けたことは殆どない。

「殆ど」というのは、職業訓練で半年ほど情報処理の勉強をしたことがあり、その時の講師陣の多くが職業能力開発短期大学校の情報技術科の指導員だったからだ。ごく短い時間だったけど「情報科学基礎」といった講義に近い内容のことを学ぶことができた。あと指導員の大半が元エンジニアで、以前の専門だった分野についての話を聞けたのもよかった。

とはいえたった半年、週5日、朝から夕方までの数時間という非常に短い期間に、基本情報技術者試験の対策やプログラミング言語の勉強*1や様々な実習を並行して行っていた訳だ。その手の学部生が受ける教育には足元にも及ばない。

職業プログラマとして働く時、このことはデメリットにもメリットにもなる。

デメリットとなる理由は分かりやすい。計算機科学やソフトウェア工学のカリキュラムで学ぶ内容には、プログラミングの実践で役に立つものが結構含まれているからだ。もちろん全てが役に立つ訳ではないし、学んだ内容をアレンジして適用する必要がある場合もある。即効性に欠けるものも多い。それでも、基本情報技術者試験の午前試験の内容程度であっても、キッチリとその背景込みで学んでおくと実務に応用できるものだ。

体系的に学べる所もよい。実務で学べる内容はピンポイントだったり偏り気味だったりする。全体像込みで網羅的に学んでおくと、偏りすぎて失敗する可能性が減る。

あとは、若くて柔軟で体力がある時期に時間をかけて学べる所だろう。社会人になると自由になる時間が少なくなるし、年齢を減るにつれてどうしても頭の柔軟性や体力は落ちてくる。

メリットは何か? 実務経験者の視点で目的意識を持って学ぶことができる所だ。

……とまあ長々と書いてきたが、私の場合は趣味以外の何者でもない。

暫く前から『Scheme手習い』の勉強を中断していて、そろそろ再開しようと思ったら続編が出ていたので購入。

Scheme修行

Scheme修行

再帰の次は継続と代入のようだ。

Schemeを学ぶことや、再帰・継続・代入といった計算における概念を学ぶことは、間接的に実務に役立つ*2。難しいことを扱おうとすればするほど、より抽象的に考えるためのツールが必要になる。そのツールとなる要素なのだ。

まあしかし「間接的に実務に役立つ」と書いたとおり、直接的に役立つわけではない。

例えばシステムプログラミングする場合は、そのOSのシステムコールや使用するライブラリ等の知識が必要だ。その点は覆すことができない。実務よりの勉強は必要だ。

UNIXシステムプログラミングの本が『ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道』しか持っていないので、もう一冊買ってみた。こちらは業務都合だ。

*1:JavaCASL IIだった。

*2:まあGaucheあたりをキッチリ使いこなせるレベルまで学べば、普通にテキスト処理に使える(=直接的にも実務に役立つ)と思うけど。