Google
ブログ(iiyu.asablo.jpの検索)
ホットコーナー内の検索
 でもASAHIネット(asahi-net.or.jp)全体の検索です。
 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。
 例 中村(show) ki4s-nkmr

ウェブ全体の検索

JavaScript 1.72007年01月08日 19時11分30秒

ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 JavaScript 1.7があるんですね。

http://developer.mozilla.org/ja/docs/New_in_JavaScript_1.7
New in JavaScript 1.7

 JavaScriptは、CシンタックスのLispだと言い続けてきたけど、ますます
Lisp化しているな。\(^O^)/
 Generatorは、Lispだと遅延評価の無限リストでやるでしょうね。
 Schemeは遅延評価用の機構が入ってますが、Common Lispでもすぐ作れます。
 たとえば、
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#lazy
(delay と force を実装する)
で、オンラインでみられます。
 Common Lispによるdelay/forceの元ネタであるOn Lispは、
http://www.paulgraham.com/onlisp.html
にあります。その翻訳は、野田開氏によるものが、
http://user.ecc.u-tokyo.ac.jp/~t50473/#lisp
にあります。
 この野田さんの翻訳、もうすぐ出版だといって、2005年のLispセミナーで発
表まであったんだけど、まだ出てませんよね? どうなっておるのだ。原著者
のPaul Grahamがぐずぐずしているの?

 無限リストは、大体、SICPと略記される
http://www.amazon.co.jp/exec/obidos/ASIN/0262510871/showshotcorne-22/ref=nosim
Harold Abelson, Gerald Jay Sussman, Julie Sussman著「Structure and
Interpretation of Computer Programs」
と、その訳本の
http://www.amazon.co.jp/exec/obidos/ASIN/489471163X/showshotcorne-22/ref=nosim
Harold Abelson, Gerald Jay Sussman, Julie Sussman著、和田英一訳「計算
機プログラムの構造と解釈」
が元ネタになってますが、
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#infinite-list
(無限リスト)
にもSchemeによるものがありますね。
 それにしても、ここの文章のタイトルは、必ず ( と ) でくくられていて、
Lispに対するこだわりが字面に出てますね。\(^O^)/
http://www-128.ibm.com/developerworks/linux/library/l-lazyprog.html?ca=dnw-745
Lazy programming and lazy evaluation
にも、Schemeによる遅延評価と無限ストリームの例がありますね。

http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/index.html#perl.scm
Scheme で Perl っぽくスクリプトを書くためのライブラリ.
というのも、なかなかアレゲですね。
 Schemeもマクロが入って、こういうことがやれるようになって、かなり強力
になりましたね。
 S式を使っていながら、S式を自在に変形して構文拡張やプログラムの実行方
法を拡張できるマクロがないというのは、Lisp系の言語として許されませんか
らね。\(^O^)/
 あ、忘れていたけど、AIプログラミングとCommon Lispの詳しい解説がある
http://www.amazon.co.jp/exec/obidos/ASIN/1558601910/showshotcorne-22/ref=nosim
Peter Norvig著「Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp」
にも、Common Lispで遅延評価や無限リストを作る話があります。

 さ、やっと、JavaScriptの話だ(爆)。
 JavaScriptは、その昔、単にDOMやCSSを操作する程度にしか使えない言語だ
と思っていました。
 ある日、
http://rubycolor.org/takahashi/
高橋メソッド
で、授業をやってみようと思って(笑)、実装をいくつか試しているうちに、
http://la.ma.la/blog/diary_200504080545.htm
最速インターフェース研究会 高橋メソッドなプレゼンツール
に、オブジェクト指向バージョンというのがあって、
「JavaScriptでオブジェクト指向って、どういうこと?」
と思って、ソースをみたら、

var $_ = Presentation.prototype;
$_.takahashi = function(){ ... }

なんてのがあって、
「なんじゃ、こりゃ。ひょっとしてクロージャがあるのか」
「ひょっとしてひょっとこ。プロトタイプベースでオブジェクトを操作して動
的にメソッドを追加したり、あれこれメタプログラミングもできるのか」
と、そのとき、初めてJavaScriptを見直しました。\(^O^)/
 以来、JavaScriptは、CシンタックスのLispなどとわめいています。\(^O^)/

 JavaScriptがブラウザに組み込みの言語だと思っている人。ちゃんとコマン
ドラインからも使える実装もあるんです。けっこう、スクリプト言語としてい
けますよ。

http://www.mozilla.org/rhino/
JavaによるJavaScript実装 Rhino
http://www.mozilla-japan.org/rhino/
JavaによるJavaScript実装 Rhinoの日本語ページ

http://www.mozilla.org/js/spidermonkey/
CによるJavaScript実装 SpiderMokey
http://www.mozilla-japan.org/js/spidermonkey/
CによるJavaScript実装 SpiderMokeyの日本語ページ

をどうぞ。
 JavaScript 1.7といいつつ、ほとんどCommon LispとSchemeの紹介になって
しました。^^:
 すべてのプログラミング言語はLispの模倣、変種だからしょうがない。\(^O^)/

プログラミング言語D2007年01月08日 19時12分49秒

ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 プログラミング言語Dが1.0になるようです。
http://www.kmonos.net/alang/d/
プログラミング言語D
をどうぞ。
http://iiyu.asablo.jp/blog/2005/09/07/65944
プログラミング言語で考える「小泉改革とは何か」
で、Dの開発者Walter Brightさんのことを書きました。
 そこにあるように、Datalight Cが、グラフカラーリングでレジスタ割り当
てをやった最初のCコンパイラだと思うんですが、ほかに、その後、パソコン
向けのCコンパイラで、グラフカラーリングのレジスタ割り当てをやっていた
のを知っているコンパイラはLSI Cですね。書いたのは、森公一郎さん(日経
MIX時代のニックネームはkmoriさん)です。
 このこと書いたなと思ったら、
http://iiyu.asablo.jp/blog/2005/09/17/78194
「Practical Common Lisp」へのコメントから。
ですね。

 Dはいつのまにか、lazyといって、遅延評価といってるけど、実質、クロー
ジャのサポートだと思いますが、どうですか?
 Javaも次にはクロージャをサポートするらしいですから、世の中、みんなク
ロージャですか。^^;

Featherweight Java2007年01月08日 19時14分16秒

ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 そうだ、Javaといえば、Featherweight Javaという極小のJavaを考えて、そ
の型理論で、JavaのGenericsに大きな影響を与えた五十嵐淳さんが日本IBM賞
を受賞しましたね。受賞の報は、この前のLispセミナーの懇親会で湯淺先生か
ら聞きました。
 ともかく、刺戟の多い2日間でした。
http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/sf04w/
五十嵐淳さんの講義
resume6.pdf, resume9.pdfが、Featherweight Java。
http://www.eecs.umich.edu/~bchandra/courses/papers/Igarashi_FJ.pdf
も参照。

Rubyネタ2007年01月08日 19時14分53秒

ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 おれが勝手にALGOLシンタックスのLispだとわめているRubyネタ。

http://www.itmedia.co.jp/enterprise/articles/0612/22/news012.html
まつもとゆきひろ――第1回:オープンソースという「お仕事」
http://www.itmedia.co.jp/enterprise/articles/0612/28/news025.html
まつもとゆきひろ――第2回:Rubyを開発するということ
をどうぞ。
 Common Lispの仕様をよくみているんだ。やっぱり。\(^O^)/
http://itpro.nikkeibp.co.jp/article/COLUMN/20060825/246464/
まつもとゆきひろのプログラミング言語論 目次
も面白い。
 Plankalk?lという言語、知りませんでした。

 Ruby以前に、()だらけのS式じゃない文法をもったLispの有力候補として、
たとえば、昔、Appleが著名Lispハッカーに作らせていたDylanがあります。
 Appleが手を引いてからどうなったのかと思っていたら、ちゃんとあります
ね。
http://www.opendylan.org/
をどうぞ。
 本もオンラインで読めます。
http://www.opendylan.org/books/dpg/db_1.html
Dylan Programming
 この本、amazon.comじゃ見つからない。日本だと、
http://www.amazon.co.jp/exec/obidos/ASIN/0201479761/showshotcorne-22/ref=nosim
にあって、9300円以上します。
 原著の値段を知らないが、ひょっとして、言語オタクのコレクター向けにプ
レミアがついているのか。\(^O^)/ 物欲が刺戟されそう。^^;

 コード例をみると、DylanはほとんどLispだというのがよくわかるんだけど、
見た目はちょっとRubyっぽいでしょ。^^;
 でも、メソッドがクラスに属しておらず、総称関数(generic function)に属し
ているところは、まさにLispのオブジェクト指向システムであるCLOS(Common
Lisp Object System)的ですね。マクロもあるし。
 個人的には、Dylanより、やっぱりRubyのほうが普及する要因がいろいろあ
ったと思いますし、そういう言語を設計・実装した松本さんもすごいし、育て
たコミュニティも立派ですよね。
 あ、Rubyの特異メソッドがとても評価されているようだけど、あれ、メソッ
ドがクラスに属してしまうオブジェクト指向だからああいうのが苦肉の策とし
て必要になったんじゃないかと思うんですよね。実は、同じものがCLOSにはあ
るけど、メソッドがクラスに属していないから、そんなにありがたい気がしな
いんですよね。この話は、改めて書ければ。

 Rubyにほしいのは、あとはやっぱ、マクロとネイティブコンパイラですかね。
あまりにLisp的色眼鏡でみた希望でしょうか。
 それとも、Oz/Mozartのような細粒度スレッドと並列・分散を言語に取り込
むことですかね。そこまでいっちゃうと、別の言語にしたほうがいいのかもし
れないが。
 そういえば、
http://iiyu.asablo.jp/blog/2006/06/01/389616
のコメントに、かすたさんから、ライブラリで提供するほうがいいという話が
ありましたが、おれはいい計算機構は、いいことがわかったら、ライブラリよ
り言語そのもの、さらにいえばハードウェアでサポートすべきという考えの持
ち主なんです。
 たとえば、クロージャなんてRubyはうまくイテレータやブロックという形で
くるんで言語の中に入れちゃってるでしょ。あれでクロージャだと知らずに使
っているRubyプログラマってとっても多いと思うんですよね。あれがライブラ
リだったら、こんなにRubyが流行っただろうかと思うんですよね。
 Oz/Mozartの細粒度のスレッドや並列・分散なんて言語でサポートしているか
ら、楽に使えるわけですし。
 昔、おれも、PascalとCを対比してみたとき、Pascalは入出力も言語仕様の
中にあってなかなか改訂されないから進化が遅いんだなと思ってました。そう
いうアカデミックな停滞を、標準がどうのこうのは知らんケンシュタインじゃ
けん、勝手に拡張しちゃうもんねで大ヒットしたのが、Turbo Pascalなんです
よね。
 その点、Cは言語仕様が小さめで、入出力などはライブラリ任せだったんで
す。それで、あ、この方法のほうがいいなと思っていたんだけど、そんなのは
おれがバカだったゆえの錯覚でしたね。
 Cのライブラリにお任せ方式がうまくいったのは、Unixというリファレンス
の実装があったからで、Unix以外の世界にCを移植しようとしたら、途端にラ
イブラリの互換性やらの問題が出て、標準化するとなったら延々と時間がかか
る話になっちゃいましたからね。
 いま、何をもって言語仕様と呼ぶかは、かなりあいまいに思いますね。
 Common LispやSchemeなんて言語仕様といっても、シンタックスはS式なんで
ほとんどないし、大半はマクロや組み込み関数の仕様と意味論なんですよね。
 いい計算機構でいえば、スタックだって、大昔のCPUにはなかったんですも
ん。おれらが昔の人はどうやっていたかと演習でやらされた1970年ころのNEC
のミニコンのアセンブラプログラミングだと、ブランチ&リンク命令なんてい
って、戻り番地を飛んだ先にメモリを用意して埋めておいて、それで元に戻る
んですよね。
 メモリに関しては、ガベージコレクション(GC)もなんでOSがサポートしてな
いのかと思うし、それをサポートする命令があってもいいんじゃないかと思う
し、仮想記憶はなんとかそれ用の命令もあるし、OSもサポートするようになっ
てますが、なぜ、GCもやらないのかなんて、つい、思っちゃいます。
 昔はLispマシン、Prologマシンなど高水準言語マシンの研究や実装もいろい
ろあったし。
 ま、そういう思いがいろいろあるわけです。

 Rubyに比べて、Lispのコミュニティって、頭が抜群にいい連中が多いせいか、
あるいは、アスペルガー症候群的な連中が多いなんていわれるせいか、みんな
で支えあって伸びていこうという雰囲気がないみたいに思いますね。出てくる
奴は勝手に出てくるんだから、ほっとけみたいな。それだと、おれみたいなバ
カは困る。^^;

http://ja.wikipedia.org/wiki/アスペルガー症候群

 こういうのは、普及にはよくないんだけど、Lispは死なないのが決まってま
すからね。
 なぜなら、仏教哲学でいえば、Lisp=ブラフマン(梵)であり、プログラマ=
アートマン(我)であり、梵我一如である以上、宇宙と人類がなくならない限り、
Lispは死なないんです。\(^O^)/
 これが我々の宇宙の数理構造として決まっているんです。\(^O^)/
 もし、Lispが死んでいたら、おれが56億7千万年後に弥勒として復活して
Lispも復活するんです。\(^O^)/

 はいはい。中村さーん、煩悩吐き出すのはそれくらいにして、おむつ替えて、
おっぱい飲んで、ねんねしましょうね。
 あーい。\(^O^)/

Lispネタ2007年01月08日 19時15分51秒

ASAHIネット(http://www.asahi-net.or.jp)のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。
---
 あれこれ探していたら、たまたま
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/
Allegro CL Family 情報

http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/script-lang
黒田さんの記事 Script Languages
にぶつかった。
 ここにある
--- ここから ---
Lisp の不幸の1つに、
Lisp を使わない奴に限って Lisp について語りたがる
というのがあるんですが、今回もう1つ加わったのは、
Lisp を知らない奴に限って Lisp を他のもの、なかでも自分の自慰行為の結
果と比べたがる
Lisp の評論をとうとうとやるわけです。
--- ここまで ---

 これ、Perl, Python, Rubyなどの信者を皮肉っているわけですが、でも、い
やーん、まさにおれのことだな。\(^O^)/
 おれはLispを使ってないのに、Lispについて語る語る。仏教哲学まで持ち出
して語る語る。それをこの前のセミナーで黒田さんの目の前でやるわけだから、
おれも大物だね。\(^O^)/
 それをやった資料は、LLRingのときと同じですが、
http://www.asahi-net.or.jp/%7Eki4s-nkmr/lisp20061121/lisp.html
Lispとは何か: Lisp - 流転するプログラミングユニバース
にあります。高橋メソッドで108画面あります。
 すなわち、おれさまのLispに対する108の煩悩をぶちまけています。\(^O^)/
 黒田さん。Lispの普及に微力ながらがんばっておりますので、許してくださ
い。

http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/scheme
About Scheme
 おれは言語は割と博愛主義者なので、Schemeも好きです。ミソとクソじゃな
くて、おれ的には、八丁味噌と麦味噌みたいな雰囲気なんですけど。^^;
 Gaucheで初めてほんとに実践的な言語としてのSchemeという気分になりまし
た。
http://www.shiro.dreamhost.com/scheme/gauche/index-j.html
Gauche
をどうぞ。

 今のSchemeは、下でGaucheの作者のShiroさんが解説しているように、マク
ロが書けます。
http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Scheme%3A%E3%83%9E%E3%82%AF%E3%83%AD%3ACommonLisp%E3%81%A8%E3%81%AE%E6%AF%94%E8%BC%83
Scheme:マクロ:CommonLispとの比較

 個人的な慣れの問題だけど、Common Lispのマクロのほうがしっくりきます
ね。
 ちなみに、Common Lispは、オペレータが環境に影響を受けるから、'<' を
変更したら、CMUCLだと文句を言わずに、POSを返すという話があるので、現実
逃避でちょっとやってみた。\(^O^)/

 ACL 8.0 Free Express Editionでも、インタープリタだと同じ。コンパイラ
はCOMMON-LISPパッケージにあるものを変更しようとしていると文句をいって
きますが。
 LispWorks Personal Edition 4.4.6は、インタープリタで評価?だと同じ結
果でPOSが出ます。コンパイラは、何もいわず、結果も出ない。なぜ? って、
いうか、コンパイラはコンパイルだけで実行しないということ? よーわから
ん。
 Corman Lisp 3.0も同じ結果。POSが出ます。ちなみに、Corman Lispはコン
パイラしかありません。インタープリタがありません。

 これも古いというか20年、30年前のLispの常識しかない人は、Lispがインタ
ープリタだと思っているんですよね。むしろLisp(Common Lisp)はコンパイラ
のない実装のほうが珍しい。Corman Lispみたいにコンパイラしかない実装も
あるしね。Schemeはインタープリタが多いみたいですけどね。
 これに付随して、Lispは遅いと思っている人がいるが、ネイティブコンパイ
ラだから、スクリプト言語に比べれば10倍、30倍、100倍とか速い。
C++とそんなに遜色ないし、Javaより2、3倍速い気分。
 これについては、後日、書くかも。