«前の日記(2006-06-14) 最新 次の日記(2006-06-16)» 編集

Matzにっき


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風味。 レイアウトを使うパーサーを書くのが面倒なので、 単なるアイディアだけ。

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

本日のツッコミ(全5件) [ツッコミを入れる]
_ 一見さん (2006-06-22 23:42)

やらなくて”済む”、ですよね。それはともかくユニコード系の話は複雑ですね。うまい解決策があるといいのですが。

_ まつもと (2006-06-22 23:54)

ご指摘、ありがとうございます。直しておきます。>誤字<br>Unicodeはお化けのように複雑ですし、文字コード変換はそれと同じくらい大変です。もう泣きそう。

_ ブレス嫌い (2006-06-23 09:15)

 ブロックの先頭が ':' の場合、一行で記述するのに使えると嬉しい気がします。<br><br>if foo % 2 == 0: puts "odd" else: puts<br><br>これは、三項演算子の方がいいかも(^^; 逆に三項演算子がお嫌いな方にはお勧め?<br><br>[1,2,3].each do: |x| puts x<br><br>これは、個人的にはかなり嬉しいです。

_ まつもと (2006-06-23 09:45)

「endなしの1行」の方がうれしいことは多いかもしれませんね。

_ 通りすがり (2006-06-25 11:55)

実は end 書かなくとも済み、インデントでの構造が明確と言う理由で python を使うことがありました。標準クラスや 添付ライブラリの作り、日本語処理のやりやすさはRuby の方が良かったと思いました。それでも 2次元レイアウトの見渡しの良さの方を取る形になってしまったのでした。<br>ああっ あの時は Ruby も 二次元レイアウトに対応していればと、思うばかりでした。

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

«前の日記(2006-06-14) 最新 次の日記(2006-06-16)» 編集

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