目次
書籍について
タイトル | コーディングを支える技術 成り立ちから学ぶプログラミング作法 |
著者 | 西尾 泰和 |
発行日 | 2013/05/25 |
ページ数 | 247ページ |
価格 | 2470円 |
Amazon | https://www.amazon.co.jp/dp/477415654X/ |
読了日 | 2017/02/14 |
メモ
- プログラミング言語の構成要素(演算子、条件分岐、関数など)について、「何故生まれたのか」「それは何を目的としているのか」「どんな種類があるか」を体系的にまとめた書籍
- プログラミング言語の誕生から現在までの歴史に関する読み物としても面白い
- コード例はC++/Java/Ruby/Perl/Python/JavaScriptに加え、それらの先祖である言語まで多岐にわたる
- と言っても、それぞれの言語を知らずとも雰囲気で理解できる上、コードに関する説明も十分されているので問題ない
- 読み物として面白いと思ったが、これを読むことで一気にコーディングの技量を高められるというわけではない
- 言語の構成要素の目的を知ることで、常に適した手段で実装できるようになるためのキッカケ程度にはなるかも
- 個人的にはプログラマの必読本とまでは思わない。言語に興味関心があれば読んでみようといった感じ
要約とか感想とか
演算子
プログラミングにおける文法とは一体何か。以下の演算子に関する文法を例に、プログラミング言語の歴史について触れる。
– 中置記法(1 + 2)
– 後置記法(1 2 +)
– 前置記法(+ 1 2)
条件分岐
アセンブリ時代の条件分岐方法を元に、何故if文のような分岐命令が必要になったのか、C言語のif分はどのようにアセンブリに変換されるのかについて考える
繰り返し
アセンブリには繰り返しに関する命令はなく、C言語で言うgoto文と条件分岐を組みわせて繰り返しを実現している。それの問題点と、そこからwhileやfor文がどのように生まれたのかについて
関数
ひとまとまりの、再利用性のある処理をどのように記述するのか、関数を呼び出した後、どのように呼び出し元に戻ってくるのか
例外処理
例外処理の歴史、何故必要になるのか、言語ごとの例外処理に対する考え、実装及びそれぞれの問題点
識別子
データに対する名前付けはどのように行われているのか、何故名前付けが必要になったのか
スコープ
名前の影響範囲について。名前が常にグローバルな世界、動的スコープと静的スコープの違いなど
数値
コンピュータでは数値をどのように扱っているのか。固定小数点数と浮動小数点数など
型
データは全て0と1で構成されるが、同じバイト列でも型によってそれがどのようなデータなのかが異なる。型とは何か、データと合わせてどのように型を管理しているのか
配列/リスト
ひとまとまりのデータはどのように表現されているのか。配列とリストの違い及びそれぞれに対するデータの削除、追加時の計算量など
文字
文字コードの世界について。文字コードとは何なのか、何故文字コードは複数存在するのか。ビット列から文字への変換方法など
文字列
言語による文字列の表現方法の違い
並行処理
一つのCPUで複数の処理を同時に行う原理。リソースの競合に対する対策など
オブジェクト指向
そもそも「オブジェクト指向」とはなんなのか、オブジェクト指向の先祖であるSimuraから影響を受けたC++とSmallTalkでは、オブジェクト指向の定義がまったく違う。
継承
継承に関する言語ごとの様々な考え方。多重継承を許すのか、インタフェースやMIX-INによる擬似的な多重継承など