- 森畑 明昌, 2019: Python によるプログラミング入門 (東京大学 教養学部 テキスト) — アルゴリズムと情報科学の基礎を学ぶ。東京大学出版会, 224 pp. ISBN 978-4-13-062458-9.
2019年にでたA5判 横書きのペーパーバック。
わたしは気象学をまなぶ学生にプログラム言語 Python をつかって計算をしてもらうことにしたので、その参考になる教材をもとめている。2024年8月、東京大学出版会の出版目録を検索したら、東大の学生が専門にわかれるまえの教養課程の授業の教科書としてつくられた本をいくつかみつけたので、まとめて注文した。本書はその1冊めである。
題名のように、読者にとってはじめてまなぶプログラム言語が Python であるばあいを想定して、プログラミングのかんがえかたと Python とをいっしょにまなぶ教科書だが、本書はどちらかというと Python の操作にくわしい。
Python 言語のバージョンは version 3 系列を前提とし、version 2 ではちがいがあることを注意している。実行環境として Anaconda を想定している。ただし Anaconda の使用条件やインストールのしかたにはふれていない。起動のしかたは、Windows では Anaconda Prompt から、Mac では「ターミナル」から、「idle」 または 「jupyter notebook」によっている。ライブラリとして、Anaconda では常備の Numpy と Matplotlib のほか、ita を追加している。ライブラリ追加の方法は「pip install ita」である。(わたしは2021年以後につかいはじめたので Anaconda Navigatorをつかうところだが、2019年には pip がふつうだったのだろう)。
第1章はプログラミングとはどんなことかの概論。第2章では対話モードで Python の文をうちこんで、数値の演算式の書きかたなどを習得する。第3章ではプログラムを書いてそれを動かす形にうつっていく。早い段階で「関数をつくって、それをよびだす」ことをやっている。第4章は、(中学かなにかの試験点数の集計を例として) 合計、平均、最大・最小を計算したり、条件をみたす事例を抽出したりしながら、配列変数、if 文、for ループなどの文法要素を習得していく。
第5章以降は応用編で、かならずしも順にやることを想定していないようだ。
第6章は力学の運動方程式の計算、第10章は拡散方程式の計算で、いずれも微分方程式の差分近似にもとつく計算であり、それには誤差にあることもふれている。すこしだが図による可視化もしている。わたしの想定する気象学むけの教材としても入れたい内容だ。(わたしは自分が理解していない ita をつかいたくないので、プログラム例をそのままつかうわけにはいかないが。)
第9章は統計学でいう直線回帰、あるいは 最小2乗法による直線のあてはめだ (この2つの概念を区別していないようだが)。この章の重点はむしろそこでつかわれる技術としての連立1次方程式の解をもとめる方法にあるようで、そこは統計処理をしない人にも有用だ。
第12章は、データ解析の手法としてのクラスター分析 (多次元空間の点とみなせる要素の集合をクラスターにわけること) だ。
第7章は、統計学的解析にやくだつ基礎をねらっているにちがいないのだが、組み合わせの数を計算する方法、ことに要素数が大量になったときに能率よく計算する方法が中心になっている。
第8章は、データ配列の要素を検索したり整列したりする技術をあつかう。項目の数が多くなるとどうすれば効率よく計算できるかが問題になり、計算機科学としては重要な分野なのだ。すこしだけ文字テキストへの応用をあつかっている。第11章はゲノムの解析となっているが、長い文字列のなかから同じ文字のならびを検出する話なので、技術としては第8章のつづきなのだと思う。
第5章は「ライフ ゲーム」である。2次元の格子のそれぞれのます目の値が、そのまわりの値を一定の関数形で反映してかわっていく。平面のディスプレイ装置で可視化できるし、わりあい簡単なルールなのに人の頭では予想しきれない結果になることもあるので、おもしろいと思えればおもしろい教材なのだとおもう。(わたしは、実際の気象の式を2次元に単純化したモデルによるシミュレーションにであうほうがさきだったせいだろうとおもうが、このようなあきらかに仮想的な世界のシミュレーションをたのしめなくなってしまったのだが。)
折りかえしのあとに目次をつける。ただし、第2章から第11章までの各章末にある「練習問題」は省略した。
Continue reading