«前の日記(2004-10-24) 最新 次の日記(2004-10-26)» 編集

Matzにっき


2004-10-25 [長年日記]

_ [言語]LogoはLispじゃない(当たり前)

そういえば、土曜日には市立図書館で新しくLOGOの本を借りてきたのだった。

『Logo - 人工知能へのアプローチ』(ISBN 4-8443-0150-0)

昭和59年の本だからもう絶版だろう。図書館でも閉架になってたし。

この本によれば、Logoでは制御構造も自分で定義できる。 たとえばwhileの定義は以下の通りである。

to while :cond :comm
  if not run :cond
    [stop]
  run :comm
  while :cond :comm
end

ちょっとだけ解説すると、toからendまでが関数定義。 stopは関数実行を停止する手続き、runはevalに当たる。 今回はループを末尾再帰で実現している。 この本が使っているLogo処理系(Gourd Logo for PC-98)では、 末尾再帰の最適化は行っていないらしく、 「条件がなかなかfalseにならないと「**複雑過ぎて実行できません**」というエラー・メッセージが出る場合がある」のだそうだ。

この例を見て、ちょっと違和感があった。ひとつはスコープの問題である。 すでに述べたようにrunはeval相当なのだが、評価される環境(or 束縛)が与えられていない。 とすると、ローカル変数などはどうやって参照されるのか。 グローバル変数しか存在しなければスコープの問題は存在しないが、 再帰が許される(かつ本質的な)Logoではそれはありえない。

数分悩んだ後、ひらめいた。「そうか、ダイナミックスコープか」。

最近、ダイナミックスコープの言語にお目にかかることは滅多にないので(例外はemacs lispか)、 存在そのものを忘れていた。歴史的にはLispは(少なくともインタプリタ処理系では)、 ダイナミックスコープが当たり前だったのだが、SchemeやCommonLisp以来すっかりスタティックスコープの言語になってしまっている。 ダイナミックスコープなら外側のローカル変数もごく自然に見える。 変数名の重複にだけ気をつければ良い(そういう意味ではcondやcommのようなありふれた引数名は良くない)。

もうひとつ気になったのは、評価のタイミングである。 whileは制御構造を実現する関数なので、引数を事前に評価しては意味がない。 一方、「to」は普通の関数定義方法であり、 特別に「この関数は引数を評価しない」などと指定していない。

これは関数の呼び出し方で解決されていた。whileの条件式や本体は [ ] でくくる必要があり、 LogoではこれはLispの (quote ) と同じ意味であった。 Lispがspecial-form, macro, fsubrなどで実現されいたものを、 明示的にリストとして渡すことで実現していたのだった。Tclと同じだな。

例外は少ないが、決してユーザに優しいわけではないような気がする。 これも時代を反映していたのだろうか。

_ [Ruby]Ruby講習会初級コース前半1日目

今回のRuby講習会は

  • Ruby体験コース(半日) 10/18, 10/30(浜田), 11/27, 1/7
  • Ruby初級コース前半(全日2日 または夜間4日) 10/25-26, 11/11-12+11/18-19
  • Ruby初級コース後半(全日2日 または夜間4日) 11/8-9, 12/9-10+12/16-17
  • Ruby中級コース(全日2日 または半日4日)) 11/29-30, 1/24-25+1/31+2/1

になっている。

今回は初級コースの1日目。プログラミング経験の全くない人はいなかったが、 それでもかなりばらつきがあり、なかなか難しい。 体験コースでの経験に基づき、例題を多めにしてみたが、 それでも難しすぎる例題や、逆に面白くない例題などがあり、 「完璧」とは言えなかったように思える。 簡単な問題だと人によっては瞬殺されちゃうし、 アルゴリズムから考えないといけないような問題ではフリーズしちゃうし。

それでも、10時から16時まで、昼1時間の休憩をはさんで5時間のコースをよく耐えたよなあ、みんな。 お疲れさまでした。

正直、講師もすっかり疲れてしまって、夜お風呂に入りながら寝てしまった。 息子と一緒に入っていたのだが、気がついた時には湯船で取り残されていた。 起こしてくれよぉ。

明日は、かずひこくんが講師で私はヘルプに回るの予定なので、 もうちょっと楽かな。

_ [知財]「300年ぶりの著作権のパラダイム・シフトが起きている」−経済産業省 村上敬亮氏

関西オープンソース2004の講演から。

村上氏は,もともと著作権は,著者ではなく印刷業者などの流通業者を保護するために作られたと指摘する。

<中略>

しかし,これまで流通業者が所有してきた大量複製の手段がインターネットにより万人に開放され,著作物を届けるために必ずしも資本や流通業者が必要ではなくなった。そのため,現在様々な矛盾が発生している。例えば,音楽家は自分の演奏を自由にインターネットで配信することはできない。流通業者が “既得権者”となり,著作物の配布を妨げるような状況が起きている。村上氏は「300年にわたる著作権制度のパラダイム・シフトが進行している」と表現する。「このような状況下でいたずらに知的財産権を強化することは既得権者を保護することになる」(村上氏)

そーなんだよー。でも、既得権者は権利を持っている強い存在だけに、 発言力も影響力も政治力も持ってるんだよー。彼らに新しい状況への適合を「強制」するにはどうすればよいか。

日本でもNoSoftwarePatents.comのような活動を開始すべきか。いや、特許だけじゃないけど。

_ 検索メールリーダー

ヤフー、メール検索を手がける企業を買収--デスクトップ検索に本腰 - CNET Japan

以前、話題になった検索ベースのメールリーダーBloombaを作っているStata LabsがYahooに買収されたと言う話。 検索メールリーダーが注目されているという点では嬉しいニュースだが、

Yahooにとって、買収の目的はあくまでもStata Labsの基本技術を手に入れることのようで、同社はBloombaの販売を継続しないとしている。

というのは、Bloombaユーザにとって嬉しくないニュースだろう。

いや、いつまでたってもmorqをリリースできない私には偉そうなことは言えないんだけど。

Morqの現状

  • 私(だけ)は日常的に使っています。
  • 現在7万通弱のメールをアーカイブしていますが、快調に動いています。
  • 検索はあまり速くないのですが、それでも数秒以内に返ってきます。
  • でも、分かち書きが狙った通りに行われないことによる検索漏れが散見されます。
  • でも、諸般の事情で公開は遅れそうです。主にスポンサーの意向です。大人の事情って奴かしら。
本日のツッコミ(全4件) [ツッコミを入れる]
_ ago (2004-10-26 21:14)

Ruby初級コース前半を受講したagoです。<br>会場ではお世話になりました。<br>Perlとは違う「本物のオブジェクト指向」(?)に触れられて感激しています。<br><br>あと残り、Ruby初級コース後半、Ruby中級コースとお世話になると思いますが、よろしくお願いします。

_ 還暦の男 (2004-10-27 02:07)

著作権云々かんぬんより、大人の事情とやらの方が問題だよ。<br>身近なところから問題解決できなきゃいかんよ。

_ まつもと (2004-10-27 07:55)

はあ、ただ、こっちの方の「事情」は時間がたてば解決することが分かってますから。<br>今後むしろ悪化する懸念がある知財と一緒にはできないんじゃないかと。

_ (2004-10-30 22:24)

perl5のlocal(perl6のtemp)はdynamic scopeですね。<br><br>P.S. おめでとうございます( ++子供 )

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

«前の日記(2004-10-24) 最新 次の日記(2004-10-26)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.