Turing Complete FMはRui Ueyamaによるプログラミングについてのポッドキャストです。
Rubyの文法
Rui (笑) あとなんか着目すべきゴルフの問題ってあるんですか?
Hamaji どうなんでしょうね。僕が好きなものとかいっぱいあるし、なんというか答えを見たときにこれは凄いと思ったやつとかは結構いっぱいあるんですけど、あんまり長い歴史があるような問題みたいなのとかはちょっとパッと思いつかないですね。あと口頭で説明できる気がしないものが多いので。僕が好きなのは、いつも言ってるんですけど、中置記法を後置記法に直すっていう問題で。A+BだったらAB+って出力する。逆ポーランドにするっていう問題で、なんかRubyだけ異様に小さくて、どうやってやるかって言うとmethod missingを定義すると、Rubyって中置記法をサポートした言語なので、method missingが呼ばれる度にその呼ばれた要素を出力していけば勝手にそうなる。
Rui Rubyって記号っぽいやつは自動的にメソッドとして解釈されるんでしたっけ。
Hamaji +とか*とか全部そうなります。+って名前のメソッドだったり、*って名前のメソッドだったりするので。
Rui Rubyは文法難しくってよくわかんないんですよね。
Hamaji そうなのかもしれないですね。lexerとか凄いイメージがありますね。:とかが未だにたまに間違える。
Rui Rubyの:って?
Hamaji ::とシンボルの:fooとかいうやつ。と、あと三項演算子の?:ってあるじゃないですか。それがいろいろ交じるので、三項演算子の例えば最後のところに:fooをつけようとすると怒られたりとかして。
Rui 実際にそれはどう解決されるんですか?
Hamaji えっと、:が2つ揃っているとモジュールの中を見るみたいな、A::BみたいなC++みたいなやつとして解釈されちゃうから空白1個入れなきゃいけないとか、そういうのが難しくてたまに今でも忘れて間違えますね。
Rui シンボルはコロンから始めなければ良かったんではないかという気もする。
Hamaji でももうRubyは記号結構がっつり使ってるから、記号の空間がわりと枯渇しつつあるんじゃないかっていうか。
Rui Unicode使えば良いんじゃないですか?
Hamaji そういうのはあまり良くないと思いますけどね(笑)。
Rui (笑) Goだとパッケージと変数名の区切りが中点になってるじゃないですか。
Hamaji なんか見たことある気がするけどそれはなんかエイプリルフールとかじゃなくて本気なんですか?
Rui 本気で。ただユーザには見えない。というのもコンパイルするときにパッケージ名とユーザ定義の識別子がユーザプログラム中に現れない記号で連結されるみたいなふうになっているだけで。
Hamaji なるほど。ある種のmanglingみたいな。
Rui そうそう。よく数学にありがちじゃないですか。ここにはない記号で連結するみたいな。
Hamaji $とか使う処理系結構ありますよね。
Rui $は普通に識別子としてGNU Cとかだったら使えるんですよね。
Hamaji 多分EiffelとかCに変換する系のものが$を含んだ識別子をどんどん出しててびっくりした記憶がありますね。
ゴルフ場のセキュリティ »