[UP] Last modified: Sat Jun 14 08:13:49 JST 2008

お薦め?の本、Web Pageなど

講義のネタはここらの本などから出ています:p 入手がすでに難しいものもあるかもしれません。

Scheme/Common Lisp

学生のころ(1990年代)はEmacs Lispでいろいろ楽しく遊びましたが、lisp系はそれっきりでした。 Lispで快適に計算させられるハードウェアもなく、またC言語やAWKで十分と思っていましたが、もともと私にはLispにハマる要素はあったのかもしれません。

今は、常用する言語は Scheme と Common Lisp の2つです。 まずはSchemeをスクリプト用につかいはじめ、そのうち数値計算にもlisp系をと欲がでてCommon Lispをはじめたら、こんな快適なプログラミング環境はありませんでした。 またお手軽スクリプトとハードな計算を基本的にLisp系で統一できるのも嬉しい。

Scheme

私が一番つかっている言語Schemeの処理系はGaucheです。 次の引用は、このリンクからのものです。

Gauche(ゴーシュ)は、スクリプトインタプリタとしての使い易さに重点を置いて開発を行っているR5RS準拠のScheme処理系です。 日常業務の中でのちょっとした処理を行うスクリプトを気軽にSchemeで書きたいなあ、という願望のもとに、起動が速いこと、システムへのアクセスが組み込まれていること、最初から多国語対応を考慮していること、リスト処理ライブラリとして他のC/C++プログラムから簡単にリンク可能であること、などを目標としています。
プログラミングGauche:川合史朗 監修、Kahuaプロジェクト 著:オーム社
Schemeの入門書として一番手に入れやすいのは、これでしょう。でたばかりで内容も実践的です。
プログラミング言語Scheme: ケント ディヴィグ著(ピアソン・エデュケーション) 村上雅章訳
Schemeの入門書として一番手に入れやすいのは、これでしょう。 ただ、スクリプトとしての使い方などはこの本ではわからないので、 プログラミング言語Scheme、 Gaucheのマニュアルや Practical SchemeWiliki などやそこのリンクを見ると良いと思います。 日本語の入門書のおいてあるサイトもいくつかあります。

Common Lisp

ある程度の計算量のある計算をしたいときには Common Lisp を使っています。 訳本でも良書が増えてきていますね。 原著のホームページで無料で全文が読めます。 On Lispは訳者のページをのぞいてみてください。 でも、ぜひ訳書を買ってあげてください(別に知人ではないです)。

  1. ANSI Common Lisp:Paul Graham著:久野雅樹,須賀哲夫 訳:ピアソンエデュケーション: 原著のホームページ
  2. On Lisp:Paul Graham著:野田 開 訳 :オーム社:原著のホームページ訳者のホームページ
  3. 実践Common Lisp:Peter Seibel著:佐野匡俊・水丸淳・園城雅之・金子祐介 共訳:オーム社: 原著のホームページ
私はこの順で読みましたが(そのときは、2,3はまだ英文しかなかった。。。)、1,3,2、もしくは3,1,2の順番がいいかも?

次の2つは入門書ではなくて、Common Lispの規格です。debianならcltl, hyperspecというパッケージをインストールすれば、全文(英語)ダウンロードできます。

COMMON LISP第2版:Guy L.,Jr. Steele著:井田 昌之 訳:共立出版原著
Common Lisp Hyperspec:

Perl, Ruby などのスクリプト言語とScheme

コンピュータを使いこなすには、ruby、AWKやPerlなどのスクリプト言語を覚えるのが近道です。 私は最近は上述のgaucheを主なスクリプト言語として使っています(Gauche/Schemeはスクリプト専用の言語ではなく、フル機能を持った汎用言語です。念の為)

AWKを256倍使うための本: 志村拓、鷲北賢、西村克亘 (アスキー出版局)
私は以前はAWKを使わない日はない という人でした。 覚えやすいので、最初に使うスクリプト言語として一押しです。
MS-DOSを256倍使うための本 Vol.3: 福崎俊博、山田伸一郎 (アスキー出版局)
正規表現とsed、makeの入門書として一番なのはこの本。
Rubyプログラミング入門: 原信一郎 著、まつもと ゆきひろ監修(オーム社)
入門にはこの本が良いと思います。 rubyの特徴の一つのオブジェクト指向にも自然となじめるように書かれていると思います。 が、私は最近はほとんどrubyを使ってません。
Perlの国へようこそ: 前田薫、小山裕司、斉藤靖、布施有人(サイエンス社)
UNIX上での大概の処理がPerl一つでできてしまいます。この本なら、入門にも応用にも対応できるでしょう。
安岡孝一氏による、誰にでも使えるUNIXシリーズ
学生のころ、これでsed, awk, cshを勉強しました。

アルゴリズムとデータ構造について

データ構造とアルゴリズム: A.V. エイホ、J.E. ホップクロフト、J.D. ウルマン著 大野義夫訳(培風館)
基本的なデータ構造とアルゴリズムに加え、計算機を科学計算で利用する上で重要な計算量の求めかたなども丁寧に書かれた名著です。 この本ではアルゴリズムをPascalという言語を使って表現していますが、この本の範囲ならPascalからCへの書換えは簡単です。
定本Cプログラマのためのアルゴリズムとデータ構造: 近藤嘉雪(ソフトバンク)
話題が豊富なので、後々まで役に立ちそう。
アルゴリズムとデータ構造: N. ヴィルト (近代科学社)
旧版が、著名な「A+D=P」(アルゴリズム+データ構造=プログラム)です。
C言語による最新アルゴリズム事典: 奥村春彦 (技術評論社)
いろいろなプログラムが載ってます。手元にあると結構たのしめます。

C関係

最近はほとんどまったくCではプログラミングしていない。。。
Cプログラミングの秘訣
とりあえず参考書に載っているようなプログラムは書けるんだけど、、、という人に。
プログラミング言語C: 第2版: カーニハン&リッチー(K&R)
講義で指定のテキストです。とりあえず通読しましょう。
プログラミング言語Cアンサーブック
K&R の解答集です。副読本として持ってると便利。
C実践 プログラミング: 第三版、Steve Oualline 著(ソフトバンク)
K&Rは他の言語を知っている人向けなところがありますが、この本は初めてのプ ログラミング言語がCでも大丈夫。
GNUjdoc
gccのinfoの日本語訳などGNU関係の和訳を行っているプロジェクトへのリンクです。
C言語を256倍使うための本: 福崎俊博、梅原系、山田振一朗(アスキー出版局)
アスキーの256倍本シリーズの一冊。文章はとても軽いけれど、内容はハード(^_^; 入門者向けではない。DOS/Windows上の話に偏っているところもあるけれど、一読して損はない。

プログラミング全般

プログラムを書くには言語の文法を知るだけでは全く不十分です。 プログラム設計に関する知識の収集を心掛けたいものです。
珠玉のプログラミング: ジョン・ベントリー(ピアソン・エデュケーション)
より良いプログラムを書くにはどうすれば良いかに頭を悩ましている人に一読を勧めます。下で紹介しているプログラミング作法と同じ説明をつけたい。
プログラミング作法: カーニハン&パイク (アスキー)
期待の新刊(原書1999年刊)で、期待通りの面白さです。 言語のことをどれだけ勉強してもプログラミングが上達してこないし、 アルゴリズムの本を勉強してもそれが自分のプログラムに繋ってこない気がする。そんな人にとっておきの本だと思います。 プログラミング実践において何を考えれば良いのかを著者達の豊富な体験の裏付けに基づく話が載っています。
ライト、ついてますか? - 問題発見の人間学: ゴース&ダイクストラ(共立出版)
プログラミングそのものの本ではありませんが、読んでおいて欲しい本です。図書館で借りればいいでしょう。
プログラム書法: カーニハン&プローガー(共立出版)
言語にはちょっと古めのFortranやPL/Iを使った本だけれど、書かれている考え方はすぐに古びてしまうようなちゃちなものではない。
ソフトウェア作法: カーニハン&プローガー(共立出版)
500ページと厚めの本だが第1章と第2章あたりを読むだけでも、プログラミングに関する考えかたが変わるだろう。 言語はRatforという構造化Fortranが使われていますが、CやFortranを知っていれば読むのに困ることはありません。 Ratforの処理系は、LinuxやFreeBSD などならどこかにパッケージがあるでしょう(Debian GNU/Linuxにはあります)。 この本の最後の課題が、RatforのプログラムをFortranのプログラムに変換するプログラムをFortranで書くことです。
UNIXプログラミング環境: カーニハン&パイク(アスキー出版局)
これも500ページと厚め。 UNIXでの能率的な仕事の方法が書かれてます。 また後半ではCとUNIXのプログラミングツールをうまく組合わせてプログラムを書く方法が紹介されています。

小栗栖 修
メールアドレス: ogurisu[AT]kanazawa-u.ac.jp ([AT]を@におきかえてください)

[UP]