てくにかる、にゃーと。

 

ジョブスの遺産にして、iPhoneの唯一の言語、Objective-Cがラテン語みたいになっちゃうのか(たぶん画像関係は、結局Cで書かないとダメなんだろうけれど)。ついにヒレガス爺さんも亀仙人ですなあ。そういえばヒレガス本は、ドット記法などけしからんっ!メッセージ式をつかうのぢゃ、みたいなこだわりがあって好きでした。思えばそのあたりからObjective-Cは、言語の見栄え的な意味での統一感を失っていたわけだ。

そして今回、いくとこまでいって、Swiftですとんっと簡素なシンタックスに転換する。HTML5陣営がiPhoneのインターフェイスをなぞってアップル帝国の防壁を乗り越えてくる一方で、アップルは新言語SwiftにJavaScript(+HTML5)の文法体系を取り込んで、スクリプト系のユーザーやノウハウを囲い込もうとしている・・・なんかすごい仁義なき言語戦争の只中にいるんだねえ。

さて、これを機会にObjective-Cの思い出を語っておこうか。この言語を勉強していて気持ち悪かったのはコードそれ自体じゃなくて、これを説明するターミノロジーが徹底していない点だった。特にsendとcallに関してがそうだ。Smalltalk由来のObjective-Cはオブジェクト間のメッセージの送受信を抽象化した言語体系で、オブジェクト●●●にメソッド○○○を送信する(send)というものである。けれども、そうであるにもかかわらず、定番の萩原本ですら「メソッドを呼び出す(call)」って書いている。ちょっと待て、それはC言語の世界の表現じゃないのか。

Objective-Cは、C言語とSmalltalkという、本来相容れないはずの言語体系が共存した言語だ。だから、別々のパラダイムである「送信する」(sennd)と「呼び出す」(call)の混在を許してしてしまう。さらに日本語のニュアンスにおいて、「送信する」と「呼び出す」では、なんだかメッセージの主客が逆転しているような感じがする。まあ、そもそもcallに「呼び出す」という訳を与えている時点で気持ち悪いのだが(「指令する」とか「要請する」とかがいい、あるいはそのまま「コール」でいい)。

また英語レベルで見ても、callは、あるシステム全体とプログラマの関係に基づいた用語だ(ほら「システム・コール」とかいうじゃない)。したがって、callにはメッセージを受けてこれを処理する「あるオブジェクト」が存在しないことになる。だから、「メソッドを呼び出す」という表現はすごく気持ち悪いし、そもそもあり得ない表現なんじゃないか? だけど、こんなこと誰も言わないんだよねえ・・・

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください