«前の日記(2008-08-21) 最新 次の日記(2008-08-27)» 編集

Matzにっき

迷惑メール対策なら Dr.WEB
『Dr.WEB メールデーモン』、MTA 用迷惑メール対策製品です!


2008-08-26 [長年日記]

_ 航空券手配

LONE STAR RUBY CONFERENCE 2008へ 出席するために航空券を購入。マイレージプログラムでもらったJALの 国際線アップグレード券を使おうと考えたが、残念ながら私の購入したチケットでは 対象にならないとのこと。このためにわざわざPEXチケットにしたのだが、 それでもまだダメだったらしい。

相当高いチケットでないとアップグレード券は使えないみたい。 「クラスY」なら使えると聞いてこれは出来ると思ったんだが(他社ではいつもクラスYに乗ってる)。

生涯初のビジネスクラスかとワクワクしたんだけどなあ(貧乏性)。 どうやら縁がないらしい。

_ [言語]シーケンス述語

実践CommonLisp』を読んでいる

11.9 シーケンス述語(p.133)によると、CommonLispには every, some, notany, noteveryの4つのシーケンスがあるらしい。

Rubyとは

  • every → all?
  • some → any?
  • notany → none?
  • notevery → ?

という対応になるようだ。noteveryに相当するものは不要なんだろうか。 使いみちが思いつかないけど。必要だとすると名前は?

_ [言語] Lisp, the Universe and Everything: Re: An Acceptable Lisp

「Universal High-level Languageが欲しい」という話。 で、Python, Ruby, C#, Erlang, Haskell, Forth, Scheme, CommonLispときて、 どれもその域には到達していないという結論。

とはいえ、Rubyを「clean Perl」と断言しちゃうのはどうかと。

しかし、この文章はもうちょっと深読みが出来る。

Pythonに始まる「非Lisp系」言語についてはいろいろと足りないことを列挙しているのだが(その批判が正当かどうかは置いとく)、 Lisp系言語については

  • Scheme → 真のマクロがない
  • Arc → 判断するのは尚早
  • CommonLisp → 近いがUniversalに受け入れられてない

と明らかに態度が違う。

どうやら筆者にとっては「Universal High-level Language」とは

  • Universal → 広く一般に受け入れられている(人気がある)
  • High-level → Lisp

という「定義」が、おそらくは無意識のうちにできちゃってるんだろうな。

しかし、いみじくも筆者本人も書いているように「過去の歴史を振り返る(has been proven by history)」と Lispの持つある種の特性は、「一般人」を遠ざける効果があるように感じられる。 一般人に受け入れられずにどうやってUniversalになることができるのかと。

ということは、このふたつはお互いに矛盾するということではないか。

Lisper(またはLisp wannabe)の態度としては、

  • 他人が受け入れられなくともLispは良いものだ(Universalを捨てる)
  • LispのHigh-levelさのうちいくらかをあきらめてUniversalな言語を目指す

のいずれかではないか。いや、純Lisperは後者を目指さないのかもしれないけど。

それでも(Lisperであるというより単なるwannabeである私の視点からは)後者の方が 望みがあるように思える。 もちろん、どのHigh-levelさを受け入れて、どれを受け入れないかは かなり恣意的で設計者の好みや思想を色濃く反映するだろう。

が、ArcにしてもRubyにしてもそういう試みで、そのようなアプローチの先にこそ Universal High-level Languageがあるんじゃないかな。 もっとも「Universal High-level」の定義は筆者の人とは違っちゃうかもしれないけど。

_ ぎっと

『Pirates of Carribean: The World's End』を見てたら、 Jack Sparrowが「git」と仰せられてた。発音は「ぎっと」

辞書を引くと「ろくでなし」とか「ばか」とかいう意味らしい。 そういえばgit登場当時、自分の作るツールに反語的に悪い意味を付ける伝統について 語る記事を読んだような気がする(gawk(朴念仁)とか)。

というわけで、やはりgitは「ぎっと」と発音すべきなんだろう。 でも、stg(stack git)とか「すたっくぎっと」とは発音しにくいなぁ。

本日のツッコミ(全6件) [ツッコミを入れる]
_ ライアン (2008-08-28 04:35)

自分でも解りにくいので、ネットで調べました。この例を見つけました。<br><br> (every #'characterp "abc") => true<br> (some #'= '(1 2 3 4 5) '(5 4 3 2 1)) => true<br> (notevery #'< '(1 2 3 4) '(5 6 7 8) '(9 10 11 12)) => false<br> (notany #'> '(1 2 3 4) '(5 6 7 8) '(9 10 11 12)) => true <br><br><br> (notany predicate sequence*) == (not (some predicate sequence*))<br> (notevery predicate sequence*) == (not (every predicate sequence*))<br><br>noteveryはただeveryの否定形ではありませんか?ならばifとunlessの同じ様ににしてみたら、any?の反対としてnever?はいかがでしょうか?<br><br>* every → all?<br>* some → any?<br>* notany → none?<br>* notevery → never?<br><br>お邪魔しました〜

_ kosaki (2008-08-28 14:05)

linusは何かのインタビューで僕は自分のソフトに自分に関した名前をつけるようにしている。だからLinuxとつけて今度はgitとつけた。<br>とか何とか言っていた記憶があります。<br>余談ながら

_ eed3si9n (2008-08-28 15:26)

Universal language ってのは scheme とか C のように自身のインタープリタ/コンパイラを書ける言語って習った気がするのですが,それを支持するソースが見つかりません。つまり,世間一般の universeじゃなくて言語空間の universe を自分で記述でき(勝手に拡張でき)る。http://en.wikipedia.org/wiki/Self-interpreter に関連したことが書いていますが,universal という言葉は出てきません。<br>High-level に関しては「ガベコレ,コレクション,その他便利なライブラリ」だと解釈すれば,言語拡張が十八番の Ruby は "Universal High-level Language" だし,Lisp の受け入れられがたい文法を使いやすくしてくれた Ruby は an acceptable Lisp って言ってる Kidd氏の記事にあれこれ言ってる Vsevolod氏はポイントを外してるのではないでしょうか。<br>言語で頑張らなくても仮想機械で統一化できる現代では universal っていうこと自体が古い考えのような気もしますが。

_ eed3si9n (2008-08-28 16:36)

"What is a Universal Higher-Order Programming Language?" http://www.cs.rice.edu/CS/PLT/Publications/Scheme/ によると,A programming language L is universal for domain D iff the language can express all the computable elements of D and all the computable functions over D.<br>とありますので変域あっての universality みたいです。

_ みみこ (2008-08-28 17:02)

「42」という言語はないのかな。

_ なかだ (2008-08-29 09:32)

noteveryは「真でないものがある」ですが、neverでは「すべて真ではない」(=notany)でしょう。<br><br>不要というより、noteveryに相当する平易な単語が自然言語にないということなのでは。

お名前:
E-mail:
コメント:
[]

«前の日記(2008-08-21) 最新 次の日記(2008-08-27)» 編集

RSS feed meter for http://www.rubyist.net/~matz/ track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.