Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2007-12-03

Practical Common Lisp (1)

| 01:05 | Practical Common Lisp (1) - わだばLisperになる を含むブックマーク はてなブックマーク - Practical Common Lisp (1) - わだばLisperになる

Common Lispの優れた入門書として、評判のPractical Common Lisp

以前、著者のPeter Seibel氏が、Googleの検索キーワード「lisp tutrial」で首位を奪取したいキャンペーンを実施していた時には、このブログでもリンクを貼ってみましたが、めでたく、首位を奪取されたようです

お蔭様で何の関係もないこのブログが「lisp tutorial」で検索するとウェブ全体検索で4位、日本語のページ検索で1位になりました。(引っ越す前のブログ)

どういう仕組みで浮上してしまうのかは謎ですが、何でアクセスも非常に少ないこのサイトが浮上してしまうんでしょうか。

それはさておき日本語訳はまだ出版されておらず、読むとなると英語なので英語が苦手な自分はスルーしてましたが、スルーするのも勿体無いので、自分も読んでみることにしました。

ちなみに、現在、翻訳にTOP PAGEさんが取り組んでいて、10章まで作業は完了しているそうです。

出版されるとすると、本にするというのは何だかんだ大変そうなので、2009年春とかその位でしょうか。

これが出版されればOn Lisp以上にヒットし、Common Lispのユーザが増えて、その影響で日本語環境も整ってさらに快適で身近にCommon Lispでプログラムできるようになるに違いありません!

さて、読み進める方針ですが、英語が苦手ということもあり、コードがあったら、文章よりも先に例示されているコードを暗記して写経してみることにしました。

そのプロセスを通じて何が問題になるかがより明確になるんじゃないかと勝手に考えています。また、英語のハンデも若干補えるんじゃないかと思います。

では早速第一章。

文字だけの章なので、読みながらこのブログにメモとることにしました。以下非常に適当なメモなので、勉強する方は、原書を参照して下さい。

<<>>内は私のツッコミです。

1. Introduction: Why Lisp?

なんでCommon Lispなのかのまえに、著者がLispを使うようになるに至ったお話。

父ちゃんの話。

プログラマだった。

難航していたFortranを機軸にしたプロジェクトに関わった。

時は1980年初頭。AIブームの折、父ちゃんは困難の解決にLispが福音にならないかしらと思った。

Lispの本場の一つであるCMUに相談に行って色々訊いた。

Lispを使ってみることにした。

成功しちゃった。

おれ、息子の話。

そういう父ちゃんの話は知ってはいたが、高校/大学ともに、Lispを学ぶことはなかった。

<<とはいえ、プログラマにはなってるわけで結局似た者親子だな。>>

大学を出てからは、Perl->Java、C、C++という感じで仕事していた。

そんな折、生産性の高い言語について興味が湧いて来た。

というわけで、Lispはどうかと使い始めてみた。

そしたら予想外に生産性が高かった。

例えば…

昔Java初心者の頃に作ったことのある囲碁ゲームをLispで作ってみたが良い感じにすぐできた。

数年の経験を経たJavaで再実装するより生産性は高いと思った。

かつCommon Lispでは、全くの初心者であることを勘案するとグっと来た。

だからみんなもきっとそう感じるに違いない。

Why Lisp?

現場でメジャーに使われている言語との比較が色々。

Lispなら〜が〜よりできるという主張

<<Lisp好きな人が良く言う煽り文句が色々>>

「Lispはそれ自身をプログラム可能なプログラム言語である」ことがミソ。

開発も楽で良いよ。

柔軟性も高くて、拡張も楽で良いよ。

CLOSの例。

もしAOPが今後大流行するとしても何の変更もなしに取り入れることもできるよ。

Where It Began

Lispの歴史の話。

McCarthyの話。

1980年代のAIブームでは、Lispは専ら前人未踏の困難な問題に取り組む研究者の間で重宝された。

自動で問題を解析して問題を解くプログラムなど。

そして冷戦真っ只中であり、国防のためのシミュレーション等需要もあった。

AIバブルだったよ。

しかし、1980年当時にそういう問題は、マシンの能力の制限等でかなり厳しかった。

でも、がんばりました。

そんな努力のお蔭でCommon Lispはパフォーマンスについても良く考えられているよ。

Cと同程度のパフォーマンスもだせるよ。

そうそう、当時、Lispマシンってのもあったよ。

Lisp向きのチップの上にシステム全体もLispで記述されていて、その上は何でもLispで動いてたよ。

それで、1981年頃にLisp方言を纏めようという動きが現われたよ。

そんなこんなで、1986年にCommon Lispの最初の実装が登場したよ。

それで、ANSIでも、1996年にANSI Common Lispとして規格がまとまったよ。

このときには、CLOSとコンディションシステムが規格の範疇に入ったよ。

でもGUIとかマルチスレッド制御とかTCP/IPソケットについては範疇外だよ。

今じゃ、オープンソース関連の人々等が各自必要なものを作って補って使ってるって感じだよね。

Lispは、教科書に載るような非常に古典的な言語といえるかな。一方、実際的な問題を可能な限り効果的に解決できるモダンな言語でもありつづけているよ。

Lispにはインタープリタの実装しかなくて、遅くて、その上、何でも再帰で書かなくちゃいけないっていうのは、70年代始めのことでもいっているのかな。

But I learned Lisp Once, And IT Wasn't Like what you're describing

Schemeとの比較。

Who This Book Is For

Common Lispに興味がある人へ。

学校の勉強で、Lispに触れたけどいまいちだった人へ。

Perl, Python, Java, C, C#を使ってる実際家の人にもCommon Lispは「使える」ことを示したい。

この本は、文法とか言語の機構の説明に終始してないつもり。

最初のパートでは、ちょっとした実践的な例をまじえて言語の説明をして、残りでは、他の本がカバーしてないようなところを実践的な参考にできる例題を載せたよ。

スパムフィルタ、バイナリファイルのパーズ、MP3のカタログ、MP3のストリーミングと、それにウェブのインターフェースをつけたりとか。

この本をマスターしたなら、主要な言語機能には親しんだことになると思うし、Common Lispで些細でないプログラムを作れるようになる筈。

その先は各自探究して下さい。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20071203