Updated Date: 2019-06-17 14:40:27

SICP拾い読み

和田英一訳『計算機プログラムの構造と解釈 第二版』が全文Webで公開されています.

プログラムの要素(2)

SICPの1.1節の冒頭部分はプログラミングの本質について大事なことが示唆されています.初めて読むときには,すっと読み飛ばしてしまっても,後から必ずここへ戻って来ることになります.今は,大事なことが書いてあるということだけ覚えておけばいいでしょう.

プログラムする時,二つの要素: 手続とデータを扱う.(それらが実はそれ程違わないことはやがて分る.)早くいえば,データは処理したい「もの」であり,手続はデータの処理方法の記述である.強力なプログラム言語は基本的データと基本的手続きが記述でき,手続とデータを組み合せたり抽象化する手段を持たねばならない.

本章では手続きを構築する規則に注目するため,単純な数値データだけを扱う.後の章で同じ規則が合成データを扱う手続きを構築するのにも使えることが分る.

実は,にもさりげなく大事なことが書かれています.これも今は気にする必要はありません.後で何を言っていたのかが分るようになります.

註:数を「単純なデータ」というのはごまかしだ.事実,数の扱いはプログラム言語で一番怪しげ,かつ訳の分らないものである.(以下略)

(2011-09-07)

プログラムの要素(1)

プログラミング言語とはプログラムを書くための言葉です. プログラムを書くための言葉に備わっているべき機能が3つ示されています. この3つの機能はなにも人工的に作られたプログラミング言語だけの機能ではありません. わたしたちが日頃つかっている言葉にも備わっている機能です. この3つの機能はプログラミングの基本中の基本です. 特に最後の機能は名前(を付けるということ)が非常に大切なものであることを示唆しています. わたしたちの日常の言葉でも同じですね. ものの「名前」,ひとの「名前」,考え方の「名前」:どれをとっても名前はとても重要でかつ神秘的なものです.

強力なプログラム言語は,計算機に仕事のやり方を指示する手段以上のものである. 言語はプロセスに関する考えをまとめる枠組としても役立つ. 言語について語る時,単純な概念を統合して複雑な概念を構成するのに言語が用意している手段に特に注意しよう. これを達成するため,強力な言語には三つの仕掛けがある.

  • 基本式 : 言語が関る最も単純なものを表す.
  • 組合せ法 : より単純なものから合成物を作る.
  • 抽象化法 : 合成物に名をつけ,単一のものとして扱う.

(2011-08-24)

Lispによるプログラム(2)

SICPはプログラムとはなにかということを(Lispの方言)Schemeをつかってプログラムを書くことで教えてくれる教科書です.しかし,小難しいことを抜きにして,プログラムを書くことそのものが楽しいわけです.プログラミングにはつきることのない魅力があります.

その上何にもましてLispでプログラムを書くことは大いに楽しいことであるのだ.

(2011-08-17)

Lispによるプログラム

プログラムはプログラミング言語を使って書くのですが,SICPではLispというプログラミング言語(のSchemeという方言)を使います.

プロセスを記述する手頃な言語がいるが,それにプログラム言語Lispを使おう.日常の思考を(英語,フランス語,日本語のような)自然言語で表し,定量的現象の記述を数学的記法で表すように,手続的思考をLispで表す.

さりげなく大事なことが書かれています.手続的思考をLispで表す.つまりプログラムは「思考」を「言語」を使って書いたものということです.

(2011-08-11)

表紙の絵

左の絵はSICPの表紙にあるイラストです.左に立っているのが魔法使い,右にはその弟子でしょう.魔法使いは「λ」という精霊を手にした道具で操ろうとしています.その道具にはよく見ると「太極」の模様が描かれていて,「eval」と「apply」が二つ巴になっています.

「λ」は漢字の「入」ではないことに注意してくださいね.「λ」はギリシャ文字で「ラムダ」と読みます.これがプログラムの真髄です.「eval」は「エバル」「イーバル」と呼ばれる特別な関数で英語の evaluate(値valueを計算すること,評価)から来ています.「apply」は「アプライ」と呼ばれる特別な関数です。「作用させる,適用する」という意味の言葉 apply から来ています.

(2011-08-03)

書名「計算機プログラムの構造と解釈」

この教科書はもともと英語で書かれており,原書名は Structure and Interpretation of Computer Programs といいます.愛称 SICP はその原書名の頭文字です.

「計算機プログラム」は呪文であり,これはプログラミング言語と一般的に呼ばれている言葉で書かれます.このプログラムがどういうものであるかを「構造」と「解釈」という側面から考えるのだ,と書名で宣言されているわけです.ここで「構造」と言っているのはつまり,文法あるいは構文のことであり,「解釈」といっているのは,意味のことです.

英語(あるいは日本語)で書かれたもの一般を分析するとき,文法と意味という2つの側面から考えるのと似てますね.

(2011-07-26)

「1章 手続きによる抽象の構築」冒頭部分

この教科書の最初の部分です.何を学ぶための本であるかがちゃんと宣言されています.

計算プロセス(computational process)を勉強していこうと思う.計算プロセスは計算機の中に住む抽象的な存在である.プロセスは進行しながらもう一つの抽象的な存在,データ(data)を操作する.プロセスの進行は規則のパターン,プログラム(program)の指示に従う.われわれはプロセスに指示しようとしてプログラムを作る.いわばわれわれの呪文で計算機の霊に魔法をかけるのだ.

「手続き」とは何かは,この章で徐々に解き明かされます.また,「データ」とは何かは,次の第2章で解き明かされます.ともかく,プログラミングを学ぶこととはどういうことか.魔法を学ぶことと同じだというのです.現代の科学,工学としてプログラミングを扱う教科書だというのに,学ぶのは魔法だといっています.面白そうじゃありませんか.

(2011-07-19)

Editor: 山下 伸夫
Updated Date: 2016-06-11 21:38:33