«前の日(06-14) 最新 次の日(06-16)» 追記

Matzにっき


2003年06月15日 父の日

_ [教会]米子ワード大会

今日は父の日だが、母の日に続いてたまたま今日も米子に訪問する責任だった。 統計の数字上は優秀な成績に見える人々が実際には問題に悩んでいるとか、 いろいろ考えさせられることもあった。

なかなかに忙しい日であった。


2004年06月15日

_ U-20プログラミングコンテスト

募集のページができたらしい。

我と思わん若者は是非。

_ セキュリティキャンプ2004

昨年の「セキュリティ甲子園」騒動から生まれたもうひとつの企画、 セキュリティキャンプもページができたらしい。

こっちも面白そうだなあ(年寄りは参加できません)。


2005年06月15日

_ [OSS] バージョン番号の衰亡

おおげさな表現だが、気持ちは分かる。

Rubyでは、いつのころからか「1.8.3のような各数字はすべて1桁」というルールに統一している。 1.9からは「2桁目が奇数は開発版」というのは止めてしまった。

現在のルールは

  • 各数字は全て1桁
  • 3桁目の数字が0のものは開発版

かな。もっとも「2桁目が奇数は開発版」のルールがまだ生きているときに発生した1.9シリーズが、 将来の2.0仕様のテストベッドになってしまったので、実際に上記のルールを適用したことがないのだけど。

昔はひどくて

  • 0.93a, 0.03bのような数字の後ろにアルファベットを付けたもの

    マイナーな修正でrepackageしたものに適用していた

  • 0.99.4-961224のような日付を付けたもの

    バグ修正などは日付で、文法や大きな仕様の変更はバージョン番号で対応していた

のような全然統一されてなかった。ちょっとは学習しているらしい。


2006年06月15日

_ [Ruby] Pickaxe監修

ピッケル本ことProgramming Ruby第二版、日本語訳のチェックを行う。 もう出版が近いというのに、まだまだ修正箇所が多い。

が、おかげで原著の間違いなども見つけており、それだけ質の高いものになる ...のだといいなあ。

7月上旬から中旬が発売予定。二分冊。

表紙はRubyKaigi2006のスライドで見ることができる(10枚目)

_ [Ruby]Unicode対応

ruby-talkでふたたびRubyのUnicode対応、およびM17Nについて話し合われている。

しかし、今回はAustin Zieglerをはじめとして、 私のアイディアに理解を示してくれる英語圏の人が増えたので、 以前よりもずいぶんと楽。

それと、こうしてアイディアを文章にしてみると まだM17Nで具体的に決まってないところがあちこち残っていることが 明らかになる。まあ、前から気づいてたけど。

特にコード変換まわりが鬼門だ。できるだけコード変換をしたくない、 というのが基本的な設計原理だが、とはいえやらなくてすむものでもない。

_ [Ruby] ":"とblock by indentation

ずいぶん以前からifやらwhileやらにdoやthenの代わりに":"をつける、 というPython風味の文法をこっそり入れていたのだが、 今日、とうとう外すことにした。

if foo % 2 == 0:
  puts "even"
else
  puts "odd"
end

elseの後ろの括弧は許してなかった。誰も使っていなかったと思うけど。

しかし、Haskellで得られた知見によれば、 「対応する括弧を用いる文法との相互変換を許すなら、インデントによるグループ化は有効」である。

ということは、「コードブロックの先頭が":"であれば、 そのブロックはインデントでグループ化する」という文法を導入するのは ありえる選択肢かもしれない。

if foo % 2 == 0:
  puts "odd"
else:
  puts 

[1,2,3].each do: |x|
   puts x

なんとPython風味。 レイアウトを使うパーサーを書くのが面倒なので、 単なるアイディアだけ。

これもエイプリルフールねたレベルだなあ。


2007年06月15日

_ 傍聴

ひょんなことから裁判の傍聴をすることになる。 私の知らない世界を見た気がした。

ドラマとかとはまた違う。

_ [言語] Katahdin

Katahdinは言語の文法や意味が実行時に変更可能な言語。 文法や意味が揺らがないことを目指したRubyとはある意味対極の言語である。

作者がイギリス陸軍に入隊するため開発が継続できないという事情も珍しい。 「パブリックドメインだから好きにして」とのこと。 Mono上で動作する。

_ Trickles protocol

ちょっと読解に自信がないのだが、 プロトコルに継続を含めることにより状態のないサーバで トランザクション/セッションを実現するプロトコル。

が、リクエスト/レスポンスに継続を含めると 継続の書き換えが問題にならないかな。 適当に暗号化すれば問題は回避できるかな。

_ Google-perftoolsを使ってCPUプロファイリングをとる - PS3 Linux Information Site

Google-perftoolsなんてのがあるって知らなかった。

プログラムを書き換えることで一部分だけプロファイリングできるのは 便利かもしれない。


2010年06月15日

_ [Ruby] Ruby2.0の新機能(かもしれないもの)(1) argument delegation

ひさしぶりのポスト。

なんだか1.9.2のリリースが現実的になってきて、 長い長いRuby2.0のためのモラトリアム期間も終了の気配。 そろそろ真面目に2.0について考えねばならないかも。

いや、考えてきてたのだよ、実際。そこで少しずつリークしておくことにしよう。 私が、万が一にもトラックにはねられた時のためにも。

注意。このエントリはRuby 2.0に入るかもしれない機能について述べていますが、本機能が本当に2.0に採用されるかどうかは、未定です。

Rubyのブロックは「暗黙の引数」なので、通常の引数リストに入らない。 ので、あるメソッドが受けとった引数を他のメソッドにすべて引き渡す時、

def bar(*args)
  foo(*args)
end

とやってもブロックが渡らなくて悲しい、ということになる。正確には

def bar(*args, &blk)
  foo(*args, &blk)
end

としなければならない。が、考えてみると「引数を全部渡したい」というひとつのコンセプトを実現するために、複数の「もの」を渡さねばならないのはめんどくさい。

もっとも、いちばんひんぱんに発生しそうなスーパークラスのメソッドの呼び出しについては、

super

と呼べば、全部渡ることになっているので、問題は少ないのだが。

というわけで、「メソッド引数を全部渡す」文法を追加することを漠然と考えている。

文法はこんな感じ。

def bar(*args)
  foo(...)
end

つまり「...」のみが引数に登場した時には、それは「渡された引数を(ブロックも含めて)全部転送」という意味に解釈しようということだ。あるいは、

def bar(*args)
  foo(:bar, ...)
end

のように、先頭に引数を追加することができてもよいかもしれないが、 たぶん、それはやりすぎだろう。

それから、今までのsuperは

super(...)

の省略形であると解釈する。

実装は、現状のsuperの引数渡しの部分をそのまま流用すればよいはずだから、そんなに難しくないはず。


«前の日(06-14) 最新 次の日(06-16)» 追記