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にっき(2006-02-28)
[go: Go Back, main page]

«前の日記(2006-02-27) 最新 次の日記(2006-03-01)» 編集

Matzにっき

<< 2006/02/ 1 1. 『よくわかる現代魔法
2. ActiveState To Spin Out
2 1. Rast高速化パッチ
2. レノボ、Core Duoを搭載したThinkPad X60 / T60を発表
3 1. ruby_class削減
2. Rastが遅いわけ
3. 英会話
4. 雪
5. コンピュータは難しすぎて使えない
4 1. 参観日
2. 『コンピュータ技術者になるには』
3. Ruby温泉ミーティング2006春
5 1. 断食安息日
6 1. 日経Linuxとオープンソースマガジン 2006年4月号
2. るびま 13号
7 1. 日経Linux
2. 日本国民全員にプログラマになってほしい
8 1. 妻の誕生日
2. 日本政府はさっさとオープンソース振興から手を引いてしまえ
3. 良書
9 1. デベロッパーズサミット
10 1. デブサミ2日目
2. 「サミット」
11 1. 実家へ
2. 『i』
12 1. 松江
2. バリアフリー
13 1. Why Ruby?
2. WebプログラマはRailsに乗るべきか?
3. Language Design Is Not Just Solving Puzzles
4. 第7回アジアOSSシンポジウム
14 1. バレンタインデー
2. 機械は人狼を見つけられるかな
3. C#への期待。アンダースからの返答
15 1. オープンソースマガジン・ゲラ
2. 小人さん
3. 「仕事でオープンソース・ソフトを開発したければ有名人になれ」,Seasar2開発者のひが氏
16 1. 日経Linux・ゲラ
2. Otaku, Cedric's weblog: Python going extinct?
3. 競争に打ち勝つための最新武器--オープンソース
17 1. ご当地バカ百景
2. OSSにとってどのような支援策が必要か?
3. 定数探索ルール変更
18 1. 掃除
2. 多重継承言語としてのRuby
3. Rails' Ridiculous Restrictions, a Rant
19 1. 娘のお話
2. バプテスマ会
20 1. お客さま
2. るびマっ 13号
21 1. 「Matzにっき」が壊れた
2. 「有名」になること
3. テレビ出演
22 1. reddit.com日本語版
2. 「有名」になること(2)
3. 風邪ひいた
4. private問題
23 1. 体調不良・スライド
2. 父親の誕生日
24 1. 平成17年度上期未踏ソフトウェア創造事業 千葉PM 成果報告会
2. 『Joel on Software
25 1. 次女誕生日・買い物
26 1. 定例集会・監査
27 1. private問題、その後
2. 復刊ドットコム
28 1. Joelが腹立たしいわけ
2. Ruby2.0への一歩
>>
迷惑メール対策なら Dr.WEB
『Dr.WEB メールデーモン』、MTA 用迷惑メール対策製品です!


2006-02-28 [長年日記]

NEW!_ Joelが腹立たしいわけ

2月24日のエントリに「書いてあることはどれも正しいし、この本は一読の価値がある。しかし、読めば読むほど気分が悪くなるのはなぜだろう。」と書いたわけだが、もうちょっと考えてみた。

あの時にも考えたように「正しいことを指摘されると腹が立つ」というのが一つ。もうひとつは彼の文章にはプログラミングに対する愛が感じられないのがもう一つ。彼自身もプログラミングする人のはずなんだけどな。

そして、最後にもっとも大きな理由は、私自身が彼に揶揄される立場だということだろう。たとえば、私は彼の言うアーキテクチャ宇宙飛行士のあらゆる属性を備えているし、オープンソースに対するややナイーブな立場もそうだ。

してみると腹が立つのも当たり前か。

感情は制御して、良いことを学ぶことにしよう。

NEW!_ [Ruby] Ruby2.0への一歩

Gimiteさんにもらったアイディアが当初思ったよりも有意義かもしれないと思えてきた。

localというvisibilityを導入して、関数形式でメソッドが呼ばれたときは「localメソッドを探索(そのクラスのみ)→見つからなかったらその他のメソッドを探索」というのは…効率が悪くなるから駄目でしょうか?

基本的な部分は「private問題」で行った実装と共通なので、そのまま流用する。割と簡単に実装できた。

試してみる。

ふむ、なかなかいい感じだ。後方互換性も高い。ちょっと試してみよう。

また、以前検討していたBasicObjectも導入してみた。こちらもちゃんと動いている。以前試した時にはあまり使えない印象だったが、最近、定数の検索順序を変更したのが、うまくいったみたい。

ただ、まだバグが残っているのでもうちょっと試してからコミットしたい。

本日のツッコミ(全14件) [ツッコミを入れる]
_ ささだ (2006-03-01 20:31)

名前規則なりなんなり(prefix が local_ ... かっこわるいな)だと、コンパイル時に解決できて嬉しいな、と思います。

_ まつもと (2006-03-01 23:39)

ささだくんの立場だとそうでしょうねえ。
さて、うまくコンパイル時に解決できる方法があるかな。
local手続き用のよいprefixがあれば良いのですが。

「良い」の基準

  * 長くない
    小さな手続きに分割することは抽象化の観点からも推奨するべ
    き習慣で、それをじゃましないためには長いprefixは良くない

  * 既存のコードへの悪影響が少ない
    「_」はどうかなと思ったのですが、標準添付の範囲内だけで
    も既にかなり使われているようです。

うーん、思いつかない。

_ Yugui (2006-03-02 09:38)

Yacc的には「&」はそこなら曖昧にならなそうな気がしますが、どうでしょう。

Perlerの感覚として手続きに&を付けるのはそれほど違和感がないでしょうから、その連想で自然に覚えられそうな気がします。

_ まつもと (2006-03-02 09:43)

ふたつの理由から「&」はあまり良くないように思います。

  * あまりにPerl的。Perlですら最近は捨てつつある記法を今さら
    導入するには抵抗がある。
  * 引数リストの中での「&local」はブロック引数と衝突する

もう、記号が残ってないですねえ。^^;;;

_ tyz (2006-03-02 11:26)

_privatefunc() -> .privatefunc() ('self' 無し)なんてどうでしょう。

_ まつもと (2006-03-02 11:31)

確かにドットはprefixには使ってませんねえ。

_ Gimite (2006-03-02 11:45)

プレフィクスをつけなくても、(localメソッドが優先的に探索されるなら)「クラス内にその名前のlocalメソッドがあるか」でコンパイル時に判定可能な気がするんですが…。

_ まつもと (2006-03-02 12:05)

Rubyはあまりにも動的なので、defがifの中にあったりする可能性がありますので、コンパイル時に決定することは無理ですね。ただ、最初のアクセスでlocalメソッドであることが分かれば自己書換することは...あ、undefされることがあるからダメか...。

_ Gimite (2006-03-02 19:26)

あ、なるほど…。

_ Tets (2006-03-02 20:34)

def /.private() みたいに、
スラッシュドットはどうでしょう。

_ まつもと (2006-03-02 23:37)

残念、正規表現と重複します。

_ かりやん (2006-03-03 22:40)

スラッシュ2つ、とか、後はドットくらいしか思い付かないですね。__privatefunc()ならぎりぎり許せそうな気が。

_ まつもと (2006-03-03 23:02)

「スラッシュ2つ」もなかなか面白い外見なのですが、これも(空の)正規表現と重複しますね。
__privatefunc()ですか。標準添付の範囲内だとRuby/Tkで使っているんですが、それくらいなら調整できるかもしれませんね。

_ かりやん (2006-03-06 14:57)

ふと、_/privatefunc() もいいかな、と思いました。

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

«前の日記(2006-02-27) 最新 次の日記(2006-03-01)» 編集

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