先日も悩んでいたバグだが、予想以上に厄介だ。
問題点は、breakとreturnで飛び先が違うので(breakはブロック付きメソッドの継続、returnはブロックを囲むメソッドの継続)、有効範囲も違うのだが、 今までは(1.8では)returnの有効範囲しかチェックしていなかったので、 まれにbreakで正しくないところにジャンプする可能性があることだ。
で、考え出すといろいろなところが絡み合って面倒なことになる。 こちらを直すと別のところが動かなくなったり。 しょうがないので、デバッガで追いかけ、 動作を理解し、紙の上にメモを書きながら、Rubyのあるべき挙動を洗い出す。
で、洗い出した挙動からテストケースを作り、失敗するケースを またデバッガで追いかけ、コードを直して試してみる。 試した結果から「あるべき挙動」の間違いが見つかったりもする。
ああ、面倒な。
こういう時、無闇に複雑なRubyの実装を恨んだりする。 自分で書いたものだけど。優秀なプログラマならこんなに試行錯誤しなくても、 ばしっと解法を見つけたりするのだろうなあ。
しかし、一方で「言語のあるべき姿」を考えるのは、 私にとって最高の楽しみであったりする。 そっちばっかりやって実装に手を抜いているから、 今のRubyがある(良い意味でも悪い意味でも)と言えよう。
バグの完全退治にはもうちょっとかかりそう。
「スクリプト言語AIR」だそうだ。
スクリプト言語AIRは、新しく簡潔で自然なスクリプト言語です。
ここで「自然」という意味は、日本語や英語といった人間の話す自然言語に似 た構文をもつことを意味するものではありません。
日頃からコンピュータのプログラミングやシステム管理等を行っている人々
− 特にUNIXやC言語に日頃から親しんでいる人々 −
に違和感を感じさせないと言う意味の自然です。
と紹介されている。特徴は
AIRのソフトウェアとしての特徴を幾つか上げてみますと、
- オープンソースであること。(GPL)
- スクリプト言語であること。
- 開発者が日本人であること。
等があげられます。
一方で、スクリプト言語としての特徴は、
- 構文がシンプルで直観的なスクリプト言語であること。
- 各種UNIXツールやC言語の考え方を、そのまま素直に発展させていること。
- 実行速度が速いこと。
等があげられます。
だそうだ。ここのところ毎日のようにリリースされている。
言語仕様を見てみると、パターンマッチなしのAWKみたい。 あまり冒険はしていないように思える。 それが良いのか悪いのかは分からないけれども。 言語の良さは「生き残ることができるか」で決まる部分が多いので、 長い目で見守っていきたい。