以前、リニューアル直後の『日経バイト』に書いたものがWebで掲載された。
一般的な言語論についてまとめて書く機会はなかなかないので面白かった。〆切はきつかったけど。 で、結果としては、歴史的正確さはいまいちだが、読み物としての出来はまあまあではないかと自画自賛。
Citrus Projectの人たちにも聞いてみてはという提案をいただいた。
とりあえず、私の理解ではCitrus Project当面の目標は「正しい」localeシステムの実装にあると思っていたので、 RubyのM17Nはより上位層であって参考にはならないのでは、と考えていた。 それはそれとして、とりあえずもう一度調べてみようと思ったのだが、 このCitrus Projectの現状は私にはさっぱりわからないのだった。
Googleで検索して得られるページは、 かなり古そうだし、メーリングリストアーカイブを見てもSpamばっかりだし。
一応、目標の中に「マルチスクリプトフレームワークの設計/実装」とかあるんで期待したんだけど。
以前紹介した「Adding Optional Static Typing to Python」に関連してフレームウォーが発生しそうなので、Guidoが火消しに回った記事。整理するとともに、より現実的な案を提案している。
Argument and return type declarations
以前のエントリの通り。文法は
def foo(a: t1, b: t2) -> t3: ...body...
ただし、前回は紹介されなかった「意味」が定義されている。
def foo(x: t1, y: t2) -> t3: ...body... is more or less equivalent to this: def foo__(x, y): # original function ...body... def foo(x, y): # wrapper function x = adapt(x, t1) y = adapt(y, t2) r = foo__(x, y) return adapt(r, t3)
全体にPEP-246(Object Adaptation)を採用している。
Attribute declarations (maybe)
型のついた属性。
class C: x: t1
を以下のように解釈する。
x = typedAttribute(t1)
Interface declarations
interfaceを導入する新文法の提案。PEP-245(Python Interface Syntax)よりimplementsが要らないなど簡略化されている。
Design by contract (maybe)
function decoratorでpre, postを明示的に指定するというスタイルが目新しい。具体的にはこんな感じ。
def _pre_foo(self, a, b): # The pre-condition has the same signature as the function assert a > 0 assert b > a def _post_foo(self, rv, a, b): # The signature inserts the return value in front! assert rv > b @dbc(_pre_foo, _post_foo) # design-by-contract decorator def foo(self, a, b): return a+b
型システムとしてはgeneric typeがなくなったりとかなり後退している。とはいえ、なんか、いきなり現実的になった感じ。Object Adaptationとかdbcとかは興味深いし、Rubyでも採用できそうな気がしないでもない。
先日のエントリが引き金になってできたページらしい。 静的解析によりRubyプログラムの型不整合を発見するツール、と考えたらよいのか。 これも面白そうな試み。 完璧は無理でもデバッグの助けにはなりそう。 どこまでチェックできるのか注目したい。
取引先との打ち合わせに参加。なにが出てくるか事前に予想できなかったので、同席したが、 実際には出番はなかった。これは、つまり、保険みたいなものか。「出番がなくてよかったね」と。
センセーショナルなタイトルだが、内容はあんまりない。要するに「特許ゴロ」のような企業がいくつもあり、それらを退治する根本的な方法は(まだ)ない、ということのような気がする。結局は現在の特許制度の限界と破綻の可能性を暗示しているということか。
Internet Watchより。
プログラミング言語の人気度を推測するために毎月ランキング情報を提供している「TIOBE Programming Community Index」が、「2004年のプログラミング言語」にPHPが選ばれたと発表した。この賞は、同インデックスにおけるレーティングの増加率が最も大きかった言語に与えられる。
だそうだ。おめでとうございます。
インターネットでしばしば使用されるスクリプト言語では、Perl(2.14%減)が6位、Python(1.72%増)が8位となっているほか、Rubyが29位に入っている。
と、とってつけたようにRubyが取り上げられているのが、嬉しいやら悲しいやら。
もっとも、このTIOBE Indexはかなりいいかげんな測定のようで、あんまり参考にはならないかもしれない。 ランキングを見ても、今日現在の1位であるCや、2位のJavaはともかく、「SAS(12位)」や「RPG(20位)」などは「違う単語が入ってるんじゃない?」って気になる。また、「ABAP(14位)」のような聞いたことのないものも含まれているな。
TIOBE IndexにおけるRubyのランキングについては、Premshree’s Personal Weblogのこのエントリが参考になる。なんか昨年後半に急激に下がっているような。
山陰地方は大雪。少々高台にあるわが家は一面雪に被われた。
今日は、私の実家に行こうと思っていたのだが、 先方が風邪でダウンだそうで、中止。
子供たちと妻が玄関先を雪かきしている。 ガレージの辺り、かなり広くなっているのだが、 ここが低温で凍ると車の出し入れが面倒になるからだ。
次女は積み上げた雪で「かまくら」を作って楽しんでいた。 うーん、かまくらなんて子供の時に見て以来だなあ。
で、しょうがないんで、路地の入り口からガレージまで2,30メートルほど、 私が雪かきをした。息が切れた。あんまり電池の保ちが良くないんで。
ぐったり。
昨日のスケートで張り切りすぎたのか次女が体調が悪い。 自宅で休ませる。
聖餐会。いろいろな人が話してくださり、 またビショップが年頭の挨拶(兼、今年のワード目標の披露)。
ちょっと時間が押してしまったので、 あと何分で誰が話して...と気にしてしまったのは秘密だ。
次女が心配なので早めに帰る。 セミナリー補習の予定もあったのだが、延期。