実践的には言語の仕様やSTLを学ぶというのは大切でしょう。情報科学としてはアルゴリズムとデータ構造、あるいは情報数学のようなものになるでしょうか。
もちろん言語・STLの仕様とは科学者工学者の英知の結晶でありますから、吸収できるものはたくさんありますし、アルゴリズム等を知ることは実装の幅を広げてくれるでしょう。しかしそのどちらもプログラミングの理論かといわれると、少し遠いように思えます。
Just let me code.
プログラミングは理論というより手を動かすものじゃないかと思っていたのですが、そんなときに「計算機プログラムの構造と解釈」(Structure and Interpretation of Programming)という本に出会いました。これはまさしく「プログラミングの理論」といえる内容の本です。
プログラムを実装するに当たってどう考えればいいのか、何を考慮しなければならないのか、良いコードとは何か。言語仕様等に依存せずに、抽象化、構造化、関数型プログラミング、オブジェクト指向、論理プログラミングといった考え方を学ぶことが出来ます。詳しい内容はAmazonのレビューに任せ、何故この本が良いのかに絞ってお話をします。
こういう洋書のいい所は、言葉だけで説明するのではなくちゃんとコードでも説明して、なおかつ練習問題を用意してくれることに思えます。(練習のためのコードはschemeですが、その文法を学ぶことを通じてソフトウェア工学を学べるというつくりになっています。)学術書一般において和書に比べて洋書が厚い・高いのはこういう寄り添った説明があるからでしょう。
この本はMITの一年生の1学期の教科書として書かれ、今は多くの大学でも初年時のプログラミングの教科書となっています。初年時の教科書ですからプログラミングを始める人も読めますし、プログラミング経験が豊富な方もこの本で理論を学んではいかがでしょうか。
ひたすらにコードを書くだけでは学べないものが学べます。特にプログラマを目指す人は必ず読むべきだと思います。
0 件のコメント:
コメントを投稿