ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Lispで書くテキスト処理コミュのK&RのLisp版

  • mixiチェック
  • このエントリーをはてなブックマークに追加
むかし会社で新人用の教材に、K&R(プログラミング言語C)の第一章をEmacs-Lispに焼直したテキストを作って渡したことがあります。書いてて結構面白かったのですが、これも当時のテキストを無くしてしまったので、また最初からやり直そうと思っています(笑)。

ちなみにその新人はまもなく会社を辞めてしまいましたが・・・ボチボチやってきますので、ツッコミよろしくお願いします。

コメント(20)

At Sun, 11 Feb 2007 20:15:00 +0900,
でゅえ wrote:
>
> とても興味深いネタですね!

そうでしょう(笑)。

> プログラミングの習得に練習問題を解くプロセスは必須だと常々感じてます。
> しかしながら、練習問題不足を感じずにはいられないのが現状かなあと思い
> ます。サンプルを打ち込んでるだけじゃあ物足りないですしね。

練習問題不足・・・たしかに探してもあんまり無いかもしれませんね。壮大な
コードを要求する問題は最初からやる気がしないし、かといって、ちょっとし
たものだとホントに簡単に出来てしまうので物足りない気がします。

私の理想は、A4ペーパー1枚(80カラム、66行)に印字出来るくらいの規模で、即
応性のある便利なコードです。それ以上大きいモノでも作れるとは思いますが、
それって結局書いた人のコードにしかならないんですよね。

K&Rをelispに焼き直していると、その人のバックボーンが見えてくるとような
気がするので、ホントはみなさんと分担したいのですが、まあなかなかむずか
しいでしょうね。
第0章はスキップします。気が狂いそうになるので(笑)。

こんな感じで良いですかね、ほとんど変えてません・・・コメントください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
第1章 やさしい入門

 まずは、Emacs-Lispを手短に紹介することから始める。われわれの目的は、細かい点や、公式の規則や、例外に深入りせず、現実のプログラムにかかわるEmacs-Lispの本質を示すことである。ここでは、完全あるいは正確であることは二の次とする(あげた例は正しいつもりだが)。読者には、できるだけ早く役に立つプログラムが書けるようになってもらいたい。それには、変数と定数、算術、制御の流れ、関数、基本的な入出力といった基本事項に注意を集中する必要がある。より大きなプログラムを書くために非常に重要なEmacs-Lispの特徴は、ここでは省くことにする。そういったものは、シンボル、構造体、豊富にある関数の大部分、いくつかの制御の流れの文、それに数多くのこまごました機能などである。
 もちろん、このやり方には欠点もある。最も大きなものは、特定言語の特徴について、まとまった話が一箇所にまとまらないことと、説明が舌足らずで誤解を招きやすいことである。それから、例だけではEmacs-Lispの全機能を使えないから、例は意図したほど簡潔にもエレガントにもなりえない恐れもある。われわれとしてはそうならないように努めたが、注意はしていただきたい。もう一つの欠点は、後の章で本章の一部を繰り返す必要性があるということである。ただし、この繰返しは、読者にとってわずらわしいものというよりは、一層役に立つものであることを望みたい。
 いずれにせよ、経験豊かなプログラマは、本章の材料から自分のプログラミングに必要なものをすぐに応用できるはずである。初心者は自分で規模の小さな類似のプログラムを書いてみるとよいであろう。どちらの方も、第2章から始まるもっと詳しい説明を学ぶための概論として本章を役立てていただきたい。
少し書き進めましたので、確認の意味でPDF化したものをリンクします。すごく中途半端なところで終っていますが、ファイルが壊れているわけではありません。2ヶ月もかかってこれだけ?と思われるかもしれませんね・・・実は一昨日あたりからチョコチョコっとやっただけなのです。

http://nobulign.way-nifty.com/Lisp/KREL.pdf
懐かしい本です。18年前に使ってました。今も現役で本があるんですね。
このEmacs-Lisp版、なかなかいいですね。これでワタシもLisp勉強できそうです。
tomokongさん

分からないところがあれば聞いてくださいね。私以外の強者が教えてくれるかもしれませんので(笑)。
実は今またK&Rのelisp版に取り組んでいます。このトピで見れるpdfはググると出てきますね。公開したつもりはないんですが。

本は前居た会社に置いてきてしまったので、原典pdfをググる翻訳しながらチマチマ書いていますが、イライラが角ってきているのでブクオフとかで中古を買うかもしれません。

ちなみにpdf全体を眺めてみましたが、さほどカッコいいサンプルプログラムは載っていなくて、先に進むほどelispでは必要無いような内容が多くなっていくようです...なんてことを感じるということは、長く手元に置いていたものの、あんまりちゃんと読んでいなかったということですね。お恥ずかしい。

さて、書き方としてサンプルプログラムはelispのものだけを載せるのか、Cと並べるとか、またはここの皆さんが大好きなSchemeも巻き込む...とかとか、いろいろ考えています。別に誰かに頼まれてやっているわけではないので、その辺は自由に出来ます。

とりあえず、最初の思い付きでは、休みが多いので、9月末頃までに一通り書けるかな?と思っていましたが、なんか今日突然重要案件が舞い込んで、早くも計画が頓挫しています(笑)

ボチボチ書いていこうと思います。
第一章がもうじき出来上がります。演習問題はとりあえずパスしてますが...。前回よりは多生マシな標準入出力を書いたので、フィルター処理のようなelispスクリプトが書けるようになりました。書けたら章毎に照会したいと思います。
もうじき第1章が出来ますと言っておきながら、よく見たらまだ第1章の半分くらいのところでした。少しペースアップして、一応書き上げたので照会します。何かコメントがあれば遠慮なくどうそ(笑)

http://nobulign.way-nifty.com/Lisp/KREL2-01.pdf
>>[11] 今の職場はSE担当なのにこういう話題で盛り上がることは皆無です。もういい歳なので、ここらで頭の中にあるものを吐き出して、誰かの役に立てればいいなあと思っています。
ちょっと消化不良気味ですが、第2章が出来ましたので照会します。

http://nobulign.way-nifty.com/Lisp/KREL2-02.pdf
第3章制御の流れを書きましたので照会します。ただ、内容がどんどん怪しくなってきているので、まだ1/4しか進んでいないところですが、全部書き終わった段階で再構成する必要があると感じています。

http://nobulign.way-nifty.com/Lisp/KREL2-03.pdf
第4章 関数とプログラム構造が出来ましたので照会します。

http://nobulign.way-nifty.com/Lisp/KREL2-04.pdf
第5章 ポインタと配列が出来ましたので照会します。

http://nobulign.way-nifty.com/Lisp/KREL2-05.pdf
第6章 構造体が出来ましたので照会します。途中でUbuntuをアップグレードしたら、ちょっと設定がおかしくなってしまったので、途中からFedora 22に切り替えて続行しました。よって、pdfのフォントが以前とちょっと違うかもしれません。最終的にはどちらかに揃えます。

http://nobulign.way-nifty.com/Lisp/KREL2-06.pdf
第7章 入出力が出来ましたので照会します。相変わらず、かなり無茶なことをしています。

http://nobulign.way-nifty.com/Lisp/KREL2-07.pdf
第8章を書き始めて、内容的に繰り返しになりそうな気がしたので中止します。今のところ内容に関するコメントは何もいただいていませんが、内容の見直しに入りたいと思います。
今回の作業はこれで一旦完了とします。

http://nobulign.way-nifty.com/Lisp/KREL2-01-01.pdf
http://nobulign.way-nifty.com/Lisp/KREL2-02-01.pdf
http://nobulign.way-nifty.com/Lisp/KREL2-03-01.pdf
http://nobulign.way-nifty.com/Lisp/KREL2-04-01.pdf
http://nobulign.way-nifty.com/Lisp/KREL2-05-01.pdf
http://nobulign.way-nifty.com/Lisp/KREL2-06-01.pdf
http://nobulign.way-nifty.com/Lisp/KREL2-07-01.pdf

ログインすると、残り3件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

Lispで書くテキスト処理 更新情報

Lispで書くテキスト処理のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング