演算子

いまさらではあるが、スラッシュドットジャパンの2003年のエントリ「まつもとゆきひろ 答える」を読んでみた。プログラミング言語Rubyの生みの親である、まつもとゆきひろ氏へのインタビューである。

この記事は、いま読んでも非常に面白い。まつもと氏がしっかりしたポリシーを持ってRubyという言語を作ったのだなぁ、ということがよくよく読み取れる。刺激を受けること間違いなしだ。

で、その記事中に演算子についてのツッコミがある。文字列の連結に使うべきは+じゃなくて*なんじゃねーの?というもので、どうも代数方面のルールが元になっているらしく、実際にそういう書き方をする言語もあるという。それについてのコメントの中に「代入演算が=であることの方が気持ち悪いのでは」というものがあって、何を言っているのか分からず、30秒ほど考え込んでしまった。

・・・確かにそうだ。=って演算子は、その左辺と右辺が同義であることを表している。その間にデータの流れなど無い。それが、多くのプログラミング言語では代入というデータを変数に流しこむ操作に使われている。

あまりに使い慣れているから、全然違和感が無かった。言語によっては代入に:=を使うやつもあるけど、もしかしてそういう理屈が背景にあったのだろうか。

文字列の連結演算子も、本当にいろいろあるみたいだ。JavaRubyでは+だが、Perl.だ。Adaは*であるらしく、他にも||だったり^だったり&だったりする。いくつも言語扱っていると、こりゃ混乱するわ。正規表現になるとまた意味が変わってくるしね。

言語の設計者ごとにいろんな思惑があってそれぞれの形に落ち着いたのだろうが、俺はだんぜん+が使いやすい。付け「足す」んだから、足し算でいいじゃん、と思う。面倒な理屈は知らないが、直感的だ。だからExcelで文字列連結しようと思うたびに苦戦してしまうわけなのだが。

何気なく使っている演算子もつっこむと奥深そうではあるが、あまり追求すると数学の世界に行ってしまいそうなので、このへんにしておく。