«前の日記(2004年03月08日) 最新 次の日記(2004年03月10日)» 編集

Matzにっき


2004年03月09日 [長年日記]

_ [Ruby]breakとreturnのバグ

先日も悩んでいたバグだが、予想以上に厄介だ。

問題点は、breakとreturnで飛び先が違うので(breakはブロック付きメソッドの継続、returnはブロックを囲むメソッドの継続)、有効範囲も違うのだが、 今までは(1.8では)returnの有効範囲しかチェックしていなかったので、 まれにbreakで正しくないところにジャンプする可能性があることだ。

で、考え出すといろいろなところが絡み合って面倒なことになる。 こちらを直すと別のところが動かなくなったり。 しょうがないので、デバッガで追いかけ、 動作を理解し、紙の上にメモを書きながら、Rubyのあるべき挙動を洗い出す。

で、洗い出した挙動からテストケースを作り、失敗するケースを またデバッガで追いかけ、コードを直して試してみる。 試した結果から「あるべき挙動」の間違いが見つかったりもする。

ああ、面倒な。

こういう時、無闇に複雑なRubyの実装を恨んだりする。 自分で書いたものだけど。優秀なプログラマならこんなに試行錯誤しなくても、 ばしっと解法を見つけたりするのだろうなあ。

しかし、一方で「言語のあるべき姿」を考えるのは、 私にとって最高の楽しみであったりする。 そっちばっかりやって実装に手を抜いているから、 今のRubyがある(良い意味でも悪い意味でも)と言えよう。

バグの完全退治にはもうちょっとかかりそう。

_ [言語]AIR

「スクリプト言語AIR」だそうだ。

スクリプト言語AIRは、新しく簡潔で自然なスクリプト言語です。

ここで「自然」という意味は、日本語や英語といった人間の話す自然言語に似 た構文をもつことを意味するものではありません。

日頃からコンピュータのプログラミングやシステム管理等を行っている人々

− 特にUNIXやC言語に日頃から親しんでいる人々 −

に違和感を感じさせないと言う意味の自然です。

と紹介されている。特徴は

AIRのソフトウェアとしての特徴を幾つか上げてみますと、

  • オープンソースであること。(GPL)
  • スクリプト言語であること。
  • 開発者が日本人であること。

等があげられます。

一方で、スクリプト言語としての特徴は、

  • 構文がシンプルで直観的なスクリプト言語であること。
  • 各種UNIXツールやC言語の考え方を、そのまま素直に発展させていること。
  • 実行速度が速いこと。

等があげられます。

だそうだ。ここのところ毎日のようにリリースされている。

言語仕様を見てみると、パターンマッチなしのAWKみたい。 あまり冒険はしていないように思える。 それが良いのか悪いのかは分からないけれども。 言語の良さは「生き残ることができるか」で決まる部分が多いので、 長い目で見守っていきたい。


«前の日記(2004年03月08日) 最新 次の日記(2004年03月10日)» 編集