プログラミング道への招待

プログラミング道への招待

著者名 竹内 郁雄
発行元 丸善出版
発行年月日 2017年01月
判型 四六 188×128
ページ数 254ページ
ISBN 978-4-621-30133-3
Cコード 3055
NDCコード 421
ジャンル 電気・電子・情報工学 >  情報・コンピュータ >  言語・プログラミング
電気・電子・情報工学 >  情報・コンピュータ >  アルゴリズム/データ構造

内容紹介

本書は、大学初年生や、プログラミングに興味のある高校生、プログラムが動く仕組みを独習したい大人、プログラマなどを対象にした、「プログラミングへの招待」のような一冊。 具体的なプログラミング言語の説明はせず、プログラミングの話をするように工夫されており、横書きで書かれた「プログラミングのココロ」的な内容になっている。序盤では、現在のコンピュータの構造からすると、とても単純化したコンピュータの仕組みを紹介し、プログラミングのココロを理解するための土地勘・あるいは地に足のついた理解をするための関門のような構成とした。最後の6章のタイトルが「プログラミングは楽しい」となっているように、「プログラミングを楽しむ」ことが本書の通底といえる。

目次

第1章
コンピュータの仕組みの簡単入門
コンピュータというブラックボックス/ソフトウェアは腐りやすい/コンピュータはただの箱?
1 オートマトン
機械仕掛けで動く人形/オートマトンの図式化
2 2 進数
2 進数とビット/ 2 進数はコンピュータと相性がいい
3 なんでも2 進数
アナログとデジタル/標本化/量子化/アナログからデジタルへ
4 コンピュータの原理に向かってそろりそろり
オートマトンの復習/ 3で割り切れるかどうかを判定するオートマトン/今赤き糸むすばれ,はずむ吐息が甘い
5 コンピュータの原理
メモリ階層/チューリングマシン/万能チューリングマシン/ CPU の働き/チューリング完全/「語」というメモリ単位
6 もう少しリアルなコンピュータ
フィボナッチ数列の計算/逐次実行/ジャンプ命令/無限ループ/条件付ジャンプ/条件分岐/並列実行
コラム 現代のコンピュータに似ていて最も古いものは?

第2章
プログラムとは? プログラミングとは?
1 そもそもプログラムとは?
プログラムの語源/さまざまなプログラム
2 そもそもプログラミングとは?
プログラムとプログラミングの違い
3  おばあちゃんに「プログラムって何?」と聞かれたら?
料理のレシピ/竹内流ホタテとワカメの煮物/レシピのプログラム分析
4 もう少しプログラムらしい比喩はないの?
ゲームのルールもプログラム/カルキュレーションのルールのプログラム分析/後入れ先出しと先入れ先出し
5 アルゴリズム,プログラム,ソフトウェア
アルゴリズムの語源/アルゴリズムとプログラムの違い/げに恐るべきはアルゴリズム論/プログラムとソフトウェアの違い
6 アルゴリズムをもうちょっと深く
探索アルゴリズム/整列アルゴリズムは重要
7 国際コンテストに出たアルゴリズムの問題
通信網の構築問題/通信網構築問題の本番/巧みな解法
8 物語とプログラム
オペラプロジェクト/物語学/物語プログラミング
9 文章とプログラム,作文とプログラミング
文系の人にもプログラミングの才能がある/
プログラミングの流儀
コラム ネーミングはセンスの見せどころ その1

第3章
プログラミング言語
1 機械語とアセンブラ言語
2進数でもプログラムが読める?/アセンブラ/名前を付けることの重要さ
2 言葉を定義する
語彙の豊かさはどこから?/抽象化のありがたさ/サブルーチンという抽象化
3 リッチーのホワイル言語
ホワイル言語の5 種類の文/局所変数の使いどころ/足し算しかないのに引き算に挑戦/条件分岐を定義できるか?
4 コンパイラ
自動プログラミング?/ライブラリという知恵袋/コンパイラ技術の発展
5 再 帰
再帰と繰り返し/分身を使った迷路探索/もう少しプログラムっぽく/再帰は伝家の宝刀/竹内関数
6 オブジェクト指向
2種類の抽象化/オブジェクト指向の基本/クラスによる抽象化/エージェント指向/まとめると
7 自然言語とプログラミング言語
プログラミング言語をコミュニケーションに使う/プログラミング言語に代名詞や形容詞はある?/日本語は論理に弱い?/日本語と英語の違い/語順/第3 外国語としてのプログラミング言語
8  どうしてこんなにたくさんのプログラミング言語があるの?
未完のバベルの塔/プログラミングパラダイム論/私の母国語はアセンブラ語

第4章
いろいろなプログラミング
1 算数で頑張ろう
カッコのつけ方で劇的に式の意味が変わる/算術式でプログラムを書く?
2 アミダクジの仕様変更
アミダクジの仕様/仕様変更をお願いします
3 与えられた仕様からプログラムを作る
えっ,そんな関数あるの?
4 カレンダープログラム
言語の好き嫌いを超えて/カレンダーのそもそも論/週,曜日,元年に至っては…/火星人にカレンダーを売る/地球でもいろいろあります/プログラムを生み出すメタプログラム
5 ロボカップサッカー・シミュレーション
仮想ピッチでのサッカー/マルチエージェントシステム/右も左も分からぬところからの出発/無言のチームでどこまで行ける?/人間らしいコミュニケーションへ/身体性制約と創発
6 ライフゲーム
人工知能ではなく,人工生命/ライフゲームのプログラミング/神様プログラミング
7 3 人の賢者
情報がないことが情報になる?/解いてみよう/ソルバを使って解く
8 隠れ多角形の問題
確率ゼロの現象に対処する
9 ゴールポストの形
読み書きプログラミング
10 言葉(API)を使いこなすこと
コラム ネーミングはセンスの見せどころ その2

第5章
プログラミングの美学
1 美学とは?
美学書3 冊読み比べ
2 美学の対象となり得るのは?
3 いくつかのパロディ
まずプラトンに学ぶ/アリストテレスはいかに?
4 芸術とアート,そして美
アートとプログラミング/そもそも「美しい」とは?/背景知識と技術能力を必要とする美の理解
5 プログラミングの美学
武士道に通ずるプログラミング/モーツァルトのようなプログラミング/竹内流,一粒で二度美味しいプログラミング
6 プログラミングのセンス
コンピュータを非機械的に扱う
7 プログラムの美学
短く書けるということ/形の美,理論の美
8 塑像的プログラムと彫像的プログラム

第6章
プログラミングは楽しい
1 抽象化の進展
どんどん捨象していく/ソフトウェアでも抽象化が進む/並列処理も抽象化できれば
2 時間軸を空間に射影・転換する
プログラムの動作を「見る」/宣言型プログラミングのココロ
3 プログラミングとユーモア
Taoとの馴れ初め/Taoの影響力/無為自然/Taoに学ぶプログラミングの極意とは?

問題の解答
あとがき
索 引

定価:本体1,800円+税
在庫:在庫あり