音読のススメ

プログラムやコマンドの使い方を言葉で、たとえば電話越しで説明しないといけない状況に陥ったときにハタと困ったんですよ。「これ、どう発音すれば相手はわかってくれるのか‥?」と。プログラムと言えば、{}だの、^だの、なんとも言い表しがたい記号があちこちに散在しています。調べてみたら、こんなブログがありました。英語のネイティブスピーカでもけっこう困っているんですねぇ。

» Coding Horror

冒頭には
"I responded with a single line of Ruby to do the same, and a single line of Lisp."
"He wrote back: "Underscores, pipes, octothorpes, curly braces -- "、、、"What the heck is an octothorpe?"
とあり、笑えます。

このブログ本文はもちろんすばらしいのですが、ここにはものすごい書き込みがあって、面白いものがいくつもあるので一読の価値があり、です。例えば、Rubyではおなじみの"<=>(comparator method)"や"=>(operator)"はどう読むのか、とか。書き込みによると"<=>"は"spaceship(UFOみたいな形だから)"で"=>"は"hash rocket(hashへの代入に使うし、形がロケットみたいだから)"だそうです。(spaceshipという読み方は PickAxe本にも出ています) Rubyは他にも、<=(hash rocketの逆)や===(equal記号が3つ)などなど、読み方ナゾの記号が多くて音読には苦労します。

ちなみに、Java言語では"=>"を"fat arrow"と読むことになるはずです。この記号はJDK 7で導入される予定のClosuresで使うのですが、Closuresの仕様作りにかかわっているNeal Gafter氏がそう読んでました(Considering Closures for Java)。C++など、他の言語では"goes to"と読む場合もあるらしく、"t=>t.Name"は"t goes to t.Name"と読むようです。

中でも、"#"の読み方は意見が分かれる記号のようでした。"#"はプログラミングでは一般的に"hash"と読むといっていいようですが、ふつーにその辺で見かけたら"number"です。電話のキーパッドの話だったら"pound"ですね。"octothorpe"は難しすぎ(発音しずらい)、"tictactoe"は笑いました。確かにその形をしています。 でも、"C#"書いてあったら"see sharp"ですね。

"^"はRegular Expressionのドキュメント関係では"circumflex"と呼ばれていることが多いですが、"caret"もよく聞くような気がします。

また、英語では"() parentheses; left parenthesis, right parenthesis"、"{} (curly) braces; left brace, right brace"、"[[ ] brackets; left bracket, right bracket(bracketははてなのブログでは解釈されてしまうのでちゃんと表示されていません ;_;)"が一般的ですが、日本語直訳ふうの"() small brackets"、"{} middle brackets"、"[[] big brackets(ここも、bracketが表示されていません)"という呼び方をするという書き込みもあるんです。これでもわかってもらえるのかも、、???さらに、"<"は"less than"か"left angle"、">"は"greater than"か"right angle"が一般的な読み方ではないかと思うのですが、

< - left quack
> - right quack<> - quack quack!

なんていう書き込みもあり、while(<>)だったら"while left parenthesis quack quack right parenthesis"らしく、笑えます。

いやぁ、プログラムの音読って難しいですねぇ。言語仕様を作るときには読み方仕様も一緒に作ってもらいたいものです。


ええっと、1000000.times { puts "Thank You!" } は"a million dot times left brace puts double quote thank you bang double quote left brace"で、# python -c "print 'Thankyou' * int(1e6)" だったら、"hash python negative see double quote print single quote thank you single quote asterisk int left parenthesis one eee six right parenthesis double quote"だから、、、この場合はRubyの方が短くていいかも。


書き込みの中に、"the Victor Borge 'Phonetic punctuation' sketch"に触れている方がいるのですが、これはかつて、http://journal.mycom.co.jp/column/en/005/index.htmlの回で引用させていただいたものではないかと思われます。すでに、削除されてしまって見れないので残念です。どこかにないかなぁ、、、