[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: [emacs-w3m:00057] Re: Google search



At Mon, 05 Mar 2001 01:22:23 +0900 (JST),
Shun-ichi GOTO wrote:
> 
> 適用しました。(rev. 1.51)
> ただし、make-local-variableではカレントバッファにしか有効でないので
> ダメでして、make-variable-buffer-localとしました。

おっと、失礼。なんか短かいと思いました・・

> > うーん、最近 Scheme ばかり使ってるもので、lambda が自然と馴染んでるので
> > した・・。ダイナミックに S 式を eval するなんて気持ち悪くて ;)
> 
> そのへんの気持ちもわかるのですが、dynamic bindingを活かしたEmacs流という
> ことでは良くある手口ですよね。
> 
> # 私はSchemeを始めてそれほど長くないのですが、
> # やればやるほどEmacsLispとの間の近いようで遠い、
> # 似て非なるところにジレンマを感じます。

全く。最初は本当、プログラミングの考え方が全然違っていて戸惑いましたが、
今では Scheme 流の lexical binding の方が正しいと思ってます。とはいえ、
Emacs のようにコントロール変数が膨大にある環境では dynamic binding が
便利に使えることも確かで、やはり言語の選択は環境に大きく依存するの
だろうなと・・

今は Scheme と ML との間で static v.s. dynamic typing の論争が起こって
ますが、これからは ML 風の static typing が勢力を伸ばしていきそうな
予感がありますね。OCaml のこの性能にはただただ驚き。

  http://www.bagley.org/~doug/shootout/

GCC に匹敵する性能、Emacs Lisp と比べたら 10〜100 倍は高速。
今の Guile はめちゃくちゃ遅い・・

結局のところ、プログラムの種類が動的になるほど、言語の方も動的なものが
相応しくなるのだなと。Emacs Lisp なんてのは対話的プログラミングの極地
だから、とことん動的な言語が相応しい。そうでなくとも、インタラクティブ
な開発が望ましいときには、dynamic typing の方がやりやすいと思う。ソフト
ウェアが巨大になって、綿密に設計された完全なプログラムを作りたいときに
は、static typing を導入して極力バグを減らすことが望ましいと。

これを考えると、将来的なプログラミングのモデルも見えてきそうだな。
日常的に使って頻繁に変更するエディタコマンドやスクリプトプログラム
などは、動的な言語を使って手早く仕上げるのが理想。ライブラリとか
巨大なシステムなど、長く使われて保守の必要なものは静的な言語を使って
確実に仕上げる。プログラマはそれらを使い分けることで効率的な作業が
望まれると。

そして言語処理系の方では、それら複数の言語をうまく仲介するインター
フェースを提供する必要があると・・。Scheme と ML の共存は可能だろう。
でも Emacs Lisp は難しい・・dynamic binding は捨てるかなぁ。

> ### guile-emacsは期待してたんですけど。。。(^^;

ははは・・しばらく取り組んでみた結論として、Scheme で今の Emacs を
拡張するのは *かなり* 面倒です。言語の特性が違い過ぎる。そこで今の
方向(Scheme から Emacs をコントロールする)で進むのはやめにして、
Emacs Lisp から Scheme で書かれたプログラムを呼び出すように変更
しようと思ってます。これなら簡単。プログラマは Emacs Lisp を
捨てることなく、Guile のライブラリの恩恵を受けられるわけですな。
(elisp で GTK のウィンドウ作って遊ぶとか :)

また、しばらくして「Guile のソースレベルデバッガを Emacs から
呼び出そう」とかいうことになったときには、上の修正を加えようかと
思ってます。その頃には GNU Emacs 21 も出てるだろうから、それに
対するパッチにするかな。でも、まずはその前に、低レベルのデバッグ
サポートを組み込まねばだ・・(でも、まずはその前に、学校の宿題を
仕上げねばだ・・・・)

-- Kei