Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Matzにっき(2005-01-20)
[go: Go Back, main page]

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

Matzにっき

<< 2005/01/ 1 1. 新年会
2 1. 松江
3 1. 年始
4 1. Adding Optional Static Typing to Python
5 1. Python Is Not Java
2. 米子
6 1. Playing with Ruby
2. The Evolution of an Extension Language: A History of Lua
3. MS、ソフトのコンパイル・編集に関する特許を取得
7 1. Optional Static Typing -- Stop the Flames!
2. Typing Ruby - Ruby言語型チェックプログラム
3. 会議
4. “特許テロ”と戦う手段
5. PHPが「2004年のプログラミング言語」に〜TIOBE Index
8 1. The Guido van Robot Programming Language
2. A New Linux Business Model
3. Alan Ver0.08
9 1. 岡山
10 1. The design of the Inferno virtual machine
2. DSL Design Considerations
3. Free Money for Rubyists!
4. YARV: Yet Another RubyVM 0.1.0
11 1. IBM、500件の特許をオープンソースに「寄贈」
12 1. Sun CEOが語る「Javaをオープンソース化しない理由」
2. PostgreSQLをメインストリームに推すPervasive
3. 新年会
13 1. 私はなぜXMLを愛していないか 〜 言語屋の視点から
2. Looking for Japanese allies
14 1. 知識共有を基盤とした高度造船CIMの開発研究
2. Famous and not so famous programming quotes
3. Python in What's Ruby
4. 10代男の子の『なりたい職業』第1位は、プログラマー
15 1. マイクロソフト平野氏「特許は新製品を生み出すドライビングフォースとして無視できない」
16 1. 出雲
2. 誕生日
17 1. ミクロマンマニアックス
2. Linux Magazine 3月号
18 1. Matz's diary:マイクロソフトは、オープンソースソフト陣営にどこまで接近できるのか
19 1. ビジター(訪問者)
2. 『C++の設計と進化』
20 1. Python Optional Typechecking Redux
2. 人材不足と慢性的残業の悪循環を断ち切る : Hotwired
3. Ta-da list
21 1. OOPSLA 2004 Proceedings
22 1. 今日のハック
2. 水鳥ウォッチング
23 1. 松江
24 1. 文法の意味
2. Transmeta、経営再建へ - 知財と技術ライセンス重視へ
3. 知っておきたかったこと --- What You'll Wish You'd Known
4. [ANN] Ruby 2.0!
5. Ruby-on-Rails Effect
25 1. 見直しがすすむGPL
26 1. 米サン、基本ソフト特許1600件を無償公開
2. accident attempt
27 1. Developers Summit 2005
28 1. 三ヶ月目
2. Ten Things Every Java Programmer Should Know About Ruby
3. OOP Is Much Better in Theory Than in Practice
4. ふたば祭
29 1. 『ハッカーと画家』
30 1. 松江
31 1. 「本当にオープン?」、米Sunの特許無償提供に民間団体が異議
2. FSFは将来のGPLに対してフリーハンドか
>>
Dr.Web 予測するアンチウイルス 持ち込み PC 対策でお悩みの方にオススメです。
ウイルス・スパイウェア検査・駆除 用ツール Dr.WEB CureIt! を無償配布中!

2005-01-20 [長年日記]

_ [言語]Python Optional Typechecking Redux

GuidoのBlog、第4段。

「Redux」は(後置して)「帰ってきた」という意味だから、訳すと 『帰ってきたPythonのオプショナルタイプチェック』というところだろうか。

要旨は、以下の通り。

Pythonの型指定の新文法

def foo(a: t1, b: t2) -> t3:
  "your code here"

の意味を

def foo__(a, b): # The original function
  "your code here"

def foo(a, b): # Typechecking wrapper
  a = __typecheck__(a, t1)
  b = __typecheck__(b, t2)
  r = foo__(a, b)
  r = __typecheck__(r, t3)
  return r

にしてはどうか。この場合、__typecheck__()はモジュール作者が自分で定義できる。

うーん、第一弾第二弾に比べて、 ずいぶんおとなしくなってしまった感はぬぐえない。

  • コンパイル時の型チェックが完全になくなってしまった。
  • Python標準の型チェックがなくなり、モジュール作者が型チェックを導入できる余地が用意されただけ。
  • adapt()は面白いと思うのだが、それも(すくなくともデフォルトでは)使われない

なんか、がっかり。

特に良くないと思うのは、「新文法」の持つ「意味」が、 __typecheck__()関数の定義によってさまざまに変化することだ。 あるモジュールではisinstanceof()チェックが行われ、 別のモジュールではまったく同じ外見でadapt()が行われ、 また別のモジュールではsignatureによるDuckTypingチェックが行われるかもしれない。

このような「多様性/柔軟性」は私の視点からは悪である。 「文法の意味は変化しちゃいけない」というのが私の信念である。

他人を批判するばかりでは生産的でない。 もし仮に将来のRubyに型チェックを導入するとしたら、 どのようなものにするか、と問われると、今すぐに具体的な答えは出ないのだが、 現在Cエクテンションが使っているようなものに近いものになるのではないだろうか。

RubyのCエクテンションでは、構造体の型が一致している必要があるため、 DuckTypingではすまないケースが多々ある。そのような場合、

  • 要求するT_XXX型か
  • そうでなければ特定のメソッドを呼び出す(例: 文字列ならto_str)
  • そのメソッドの戻り値が要求するT_XXX型か(違えば例外)
  • そうであれば戻り値で置き換え

という手順で型チェックを行っている。RubyでTypeErrorを見かけるのはだいたいこのような状況である。 ところがRubyレベルでは(DuckTypingが容易なので)このような仕組みがないので、 型の違いはメソッドがない(NoMethodError)によって検出される。 この辺を統一する「なにか」がほしいなあ、とはずっと思っているのだ。

具体的なアイディアはないんだけど。

_ [会社]人材不足と慢性的残業の悪循環を断ち切る : Hotwired

ソフトウェア開発の生産性の話。

しかし、不思議なことにソフトウェア産業では、この「怠け者」に一人前の報酬を支払っていることが多い。場合によっては「怠け者」の言い分を真に受けて、「怠け者」の方が報酬が多くなることもある。なぜなら、他の人より長時間働くことになり残業手当が多くなるからである。この業界を知らない人にとっては信じられないことかもしれないが、これは事実である。

そうそう。時間で働くのは間違っているよね。 だから、8年前、うちの会社ができる時、 「残業手当はなしにしましょう」と提案した。 おかげでうちの会社は今でも残業手当がない(正確には「みなし残業手当て」が全員に支給されている)。 おまけに完全裁量労働制だから、仕事をこなしている限り、 何時間働こうが自由である。厳密には労働基準法がどうこうとかあるけど、 少なくとも運用上は完全に自由である。

じゃあ、従業員は怠けるか、というとそうでもなくて、 むしろ一生懸命働いている。時には私生活まで犠牲にして。 かえって上司が止めないといけないくらい。

つまり、本当のプログラマは面白い仕事には寝食を(忘れて)没頭するということなのだろう。 良い環境と良い仕事を提供することこそが鍵であると思う。

_ [Ruby]Ta-da list

共有可能なTodoを実現するWebアプリケーション。 まだ使ってないんだが、便利だという声も聞く。

しかし、もっと驚くべきことはRubyOnRailsを使って実装された、 このWebアプリケーションは、わずか579行しかないという点だ。

ちょっとRails勉強してみようかなあ。

本日のツッコミ(全3件) [ツッコミを入れる]
_ 還暦の男 (2005-01-22 11:10)

良い環境はともかく、良い仕事(面白い仕事)ばかりではないので
多いか少ないかはともかく面白くない仕事に立ち向かわねば
ならない人々が少なからずいるわけです。
特にプログラマには多いと思います。さらに言えば現代の方が
多くなってるような気がします。大昔私が仕事していた頃は
未知のことが多かったので何をやっても楽しかったです。
今考えるとまったく大したことじゃないんですがね。

_ i (2005-01-23 01:35)

> むしろ一生懸命働いている
微妙な表現です、一生懸命でもダメな例を山ほど見てきたし「私生活まで犠牲にして」やった仕事は全て雑なものばかりだったような...

_ まつもと (2005-01-24 16:05)

「長時間働かなくても大丈夫な制度になっても極端に労働時間が減るわけではない」って話をしているわけですから、ここでの「一生懸命」は「怠けてない」って意味であって、「一生懸命ならなんでもOK」って話ではないんじゃないかと。

ちゅーか、そもそもそういう話なら「裁量労働制」とか「残業手当なし」とかいうことは出てこないと思います。

お名前:
E-mail:
コメント:
本日のリンク元
検索

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

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