HOME総合情報概要・基本データ刊行物教養学部報615号(2020年1月 7日)

教養学部報

第615号 外部公開

<本の棚>森畑明昌 著 『Pythonによるプログラミング入門 東京大学教養学部テキスト』

加藤恒昭

プログラミングの『教養英語読本』である。
教養英語は、「知的な内容をきちんと読んで理解することが、大学で学ぶべき英語の根幹である」(引用は『東京大学教養英語読本I』Prefaceより。以下同様)との理念に基づく。そこでは、「外国語のリーディング体験」を「単語の意味を調べ、文法をたよりにいちおうの『直訳』を頭の中に描く」ことに始まり、それに続いて「頭の中でそのような第一段階の粗い『直訳』を作成・咀嚼し、文脈にはめ込んで考え、それを別な形で自分流に表現し直して」「意味」を理解するプロセスだと捉えている。そして、後者をこそ鍛えるべきものとして、読本では、バランスを考えた様々な分野のテーマで、狭い意味での学術論文ではない、一般の教養書からの文章を取り上げている。
プログラミングはリーディングではなくライティングであるので、プロセスは逆となる。まず、プログラミングを通じて解きたい問題の理解から始まり、それをアルゴリズムへと落とし込み、その後、それをあるプログラミング言語を用いてプログラムに「直訳」していくという順序になる。巷に溢れるプログラミング入門と称する書籍が最後の「直訳」についてしか述べられていないのに対し、本書は、そこまでのプロセスに重点を置く。読者は、ちょうど「なぜサバンナへの偏好やら安楽死やらを議論しなければならないのか」と訝るのと同じように、「なぜプログラミングを学ぶのに、物理学の拡散方程式やら統計学のp値やらを理解しなければならないのか」と不満を漏らすかもしれないが、そのような「知的な内容をきちんと」プログラミングできることが大事なのである。
そして、本書で取り上げられている問題は、いわゆるアルゴリズムの教科書に多いダイクストラやボイヤー・ムーアの方法など、(少なくとも私にとって)面白いけど、使わないものではなく、多くの人が(その全てにとは言わないが)今後出会うだろうものとなっている。そしてそれらが、あらゆる問題を解く時に意識しなければならない、計算量と誤差の議論を巧みに導いている。学術論文ではなく教養書から、と通じる精神のように思う。本書「まえがき」でも「情報科学の教養」に言及されているが、「教養」への道は様々な分野に共通するのかもしれない。
一方で、プログラミングには、英語のリーディングにないしんどさがある。「直訳」もそれなりに難しいのである。a=a+1から始めると「直訳」を身につけてもらうのも容易ではない。中学校高校六年間の英語教育を前提にできる大学英語教育では必要のない(はずの)配慮が求められる。本書ではこの問題に、ほとんどのプログラミング言語で利用でき、それらだけで多くのプログラムを構成できる基本要素をまず解説し、その後に、対象となる問題解決と並行して、必要もしくは便利なものを導入していくという形をとることで対応している。このアプローチはかなり成功していると思う。
それでも伝えるべきことは多い。range関数などは、難しいけれども導入しなければならない。正直なところ、初学者の独習では厳しいかと思う部分もある。しかし、前半三分の一、六十ページ余でこれだけの内容を伝えられていることは驚きである。特筆すべきは、この少ないスペースでも、「テストによる結果の確認」という重要な過程がきちんと述べられていることで、その大事さは本書の全体を貫いて伝えられている。
不満もないわけではない。ローレル係数の式など、数式の記述はスラッシュを使って一行でa/bとされるのではなく、括線を使ってa−bとしていただきたかった。意図してプログラム中と似た形式を取られたのかもしれないが、a−bcをa/b*cとしてしまうのは、最初の躓きの石であったりする。もうひとつ、配列などが関数の引数になった時、関数内でのその要素の変更は関数の外にも影響が及ぶことを明示していただきたかった。他書でもあまり言及されないが、「普通」に考えると変数のスコープの説明と矛盾するし、本書では配列とコピーについて丁寧な説明があるので、惜しい気がしてならない。
「オタク」が盛り上がっていると誤解されるのは本意でないのでここで止めよう。現代において必須の教養を身につけるための多くの人に向けた本書なのだから。

(言語情報科学/英語)

第615号一覧へ戻る  教養学部報TOPへ戻る

無断での転載、転用、複写を禁じます。

総合情報