«前の日記(2005-01-06) 最新 次の日記(2005-01-08)» 編集

Matzにっき


2005-01-07 [長年日記]

_ [言語]Optional Static Typing -- Stop the Flames!

以前紹介した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でも採用できそうな気がしないでもない。

_ Typing Ruby - Ruby言語型チェックプログラム

先日のエントリが引き金になってできたページらしい。 静的解析によりRubyプログラムの型不整合を発見するツール、と考えたらよいのか。 これも面白そうな試み。 完璧は無理でもデバッグの助けにはなりそう。 どこまでチェックできるのか注目したい。

_ [会社]会議

取引先との打ち合わせに参加。なにが出てくるか事前に予想できなかったので、同席したが、 実際には出番はなかった。これは、つまり、保険みたいなものか。「出番がなくてよかったね」と。

_ [特許]“特許テロ”と戦う手段

センセーショナルなタイトルだが、内容はあんまりない。要するに「特許ゴロ」のような企業がいくつもあり、それらを退治する根本的な方法は(まだ)ない、ということのような気がする。結局は現在の特許制度の限界と破綻の可能性を暗示しているということか。

_ [言語]PHPが「2004年のプログラミング言語」に〜TIOBE Index

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

本日のツッコミ(全8件) [ツッコミを入れる]
_ じろう (2005-01-08 14:52)

はじめまして。<br><br>SASは本当に言語かな?と思いますがRPGはAS/400で使われる例のRPG言語のことだと思いますので特に問題はなさげな・・。ABAPはSAP用言語ですね。

_ ゆきち (2005-01-08 15:24)

ABAPやっている人です。ABAPというのは、SAPというERPのシステムで稼働する言語で、構文はCOBOL似と良く言われます。要するにERPでデータを処理するために作られた特殊な言語で、構文中にSQLを混ぜることができます。が、その文法は、おそらくまつもとさんが見たら、卒倒するようなものでしょう。是非一度感想を聞きたいと思っている位なのですが、まあ、普通は、一生使うことはないと思います。<br><br>恐らく、その評価はSAPの世界的な需要に応じたものと思われます。

_ yoosaki (2005-01-08 15:27)

> TIOBE Indexでは、Google、MSN、Yahoo!の各サーチエンジンとGoogle Newsgroupにプログラミング言語の名前を入力して、検索結果の件数によって毎月のレーティングを決めている。<br><br>そうなので、<br>プログラミング言語としてよりも別の意味の単語としてカウントされているということですかね。

_ Orca (2005-01-08 16:48)

RPG (RPGII, RPGIII)はパソコン用にも出てたです。<br>こことか → http://t-kun.sakura.ne.jp/fo/room03/mz09.htm<br>IBM 5550用のヤツとか

_ じろう (2005-01-08 16:55)

>yoosakiさん<br>あ・・・、なるほど。全然行間を読めてなかったです。;--<br><br>SASも調べてみるとSASマクロ言語ってのがあるようですが、で、これも、例えばSAS(英国特殊部隊)と混合している可能性もあるということですね。

_ まつもと (2005-01-08 19:10)

そゆことです > じろうさん<br><br>SASはスカンジナビア航空の略称でもありますね。

_ (2005-01-09 00:51)

TIOBE Indexは「+"<言語名> programming" -tv」という検索クエリを使ってるとのことですので、航空会社や特殊部隊やサザンオールスターズ;-)が混じる可能性は低いかと。<br>SASは何十年も前からある統計パッケージで、最近ではGUIもありますが、もともと大型計算機上でSAS言語のスクリプト書いて実行するものでした。いまでもちょっと凝ったことをやろうとすれば、SAS言語でスクリプト書く必要があります。<br>統計関係では業界標準的なパッケージで、大学で教わることも多いと思うので、個人的には12位でもおかしくない気がします。ただユーザーはいわゆるプログラマではなくて、統計屋さんなわけですが。

_ (2005-01-09 01:06)

あ、蛇足ですが、医療統計用のシステム開発案件とか請け負うと、統計処理にはSAS使って……ってことになりがちなので、プログラマがSAS言語を使う場合も、もちろんありますです。

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

«前の日記(2005-01-06) 最新 次の日記(2005-01-08)» 編集

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