以前紹介した「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のこのエントリが参考になる。なんか昨年後半に急激に下がっているような。