いくつかツッコミをもらいました、どうも。
まず、ゆあいさんのツッコミから。
アイデンティティが重要なのは、アイデンティティがあるオブジェクトと無いオブジェクトでは、 コピー時の動作が大きく異なるからではないでしょうか?
まあ、そういうこともあるでしょうが、 私が重視している理由は「アイデンティティがないものはオブジェクトではないだろう」ということです。
「オブジェクト指向」というからには「オブジェクト」を意識しないといけないわけで、 そのために最低限必要なものはなにかと考えた時に行き着いた概念が「アイデンティティ」です。
アイデンティティという観点からプログラミング言語(というか計算モデル)を分類すると
と分類できますが、オブジェクト指向するにあたって、(1)は問題なし、(2)はアイデンティティがないものも「その値がアイデンティティである」と考えて(1)に準じる、とすることができて、(3)ではちょっと無理だろう、というのが私の仮説です。
最上さんのツッコミでは、
というC++のサブセットを考えておられるとのことです。 私はこの言語におけるプログラムがどのようなものになるのか想像できないのですが、 実際のところどうなんでしょうね。この言語には本当にアイデンティティがないのでしょうか。
実際には、暗黙のポインタによってアイデンティティが導入されてそうな気がします。
さて、最後にともさんのツッコミです。
アイデンティティが無くて、メンバーはあるけど単一代入で、メッセージ送信はマルチキャストがデフォルトな言語ってどうでしょうか?割と実用的に書けるんじゃないかという気がするんですが。アイデンティティが必要ならそのためのメンバーを書けば利用者がアイデンティティのようなものを使うことはできるし (現実世界ではアイデンティティはそんなに自明じゃなくて、代用品でまにあわせている気がするし)。
これは難しい。
なにが難しいって、おそらく非常に高度な概念を短い言葉で記述してあるので、全体像が想像しにくいことです。
アイデンティティがない
参照がないという意味なのでしょうか。 そもそもアイデンティティがない言語というのが(古い)FORTRANのような 低レベルのものか、純粋な関数型言語くらいしか思いつかないのですが。
メンバーはあるけど単一代入
「単一代入」は分かりますが、メンバーの単一代入というのはどういう意味でしょうか。 初期化時にメンバの値を指定してその後は変えることができないということかな。 Pythonのタプルとかのようなimmutableなオブジェクトを想像しちゃいます。
メッセージ送信はマルチキャスト
これが一番分かりませんでした。複数のレシーバに同時にメッセージを送るという意味だと思うのですが、 「複数のレシーバ」という概念にすでにアイデンティティが含まれていると思うのですが。
ということで、もしよければこのアイディアについていろいろ聞かせてください。
ちなみにこういう場合、「アイデンティティがある」ことになるんでしょうか?個人的にはオブジェクト指向するのに必須かどうかで議論した方が良い気がするんですけど。
すでに述べたように「オブジェクト指向という考え方の最低限」がアイデンティティだと思っています。 アイデンティティのない言語でもオブジェクト指向はできると思っていますが、 そのためにはユーザレベルでなんらかのアイデンティティを導入する必要があると思います。
一つの例としてTclがあります。Tclにはデータ型として文字列しかありません。 数値やリストなどは文字列として表現します。少なくとも表面的には。
で、Tcl上のツールキット(Tk)には「ウィンドウ」とか「ボタン」とかいったような「オブジェクト」が 登場するのですが、どのオブジェクトが明示するために「パス」というものを使います。 たとえば「.frame.panel.button1」のような感じですね。これはTcl的には文字列に過ぎないのですが、 Tkにとってはあるオブジェクトを指し示す参照でありアイデンティティです。
朝から東京に移動、U-20プログラミングコンテスト の審査委員の一人として参加するためだ。
審査会は10時から始まるのだが、少し遅刻してしまった。東京10時は早すぎる。
個人部門で41件、団体部門で34件の応募があった。ちょっと少ないか。
これらの中から各地方のソフトウェアセンターで一次審査が行われ、 選抜された個人部門8件、団体部門9件が我々の審査対象となる。
審査委員は以下の通り。
石田 晴久(委員長)多摩美術大学 小泉 力一 東京都立墨田川高等学校 田丸 忠夫 株式会社アルゴ21 新部 裕 独立行政法人産業技術総合研究所 西村 宜起 東北芸術工科大学 古堅 真彦 岐阜県立国際情報科学芸術アカデミー まつもと ゆきひろ 株式会社ネットワーク応用通信研究所 吉岡 弘隆 ミラクル・リナックス株式会社 浅井 宗海 財団法人日本情報処理開発協会
10月1日に発表が行われるまで、私から詳細を出しちゃいけないだろうけど、 気がついたところ。来年応募を考えている人は参考にしてほしい。
追記:
よしおかさんもプログラミングキャンプについて書いている。 来年あたり、本気でどうだろうか。
参加する人には、まず前もって4839912653と、 4894712741は読んでもらっておくとして。
午前中くたくたと準備し、家族で新見へ。
年に二度あるステーク大会なのだ。これの日程が急に変更になったせいで、 Lightweight Language Day and Nightにいけなくなったのだった。
まあ、今月は出張があんまり多いんで、正直助かったところもあるけど。
新見までおよそ100Km。赤子をつれての移動はやや不安だったけれども、 とくにトラブルはなし
2時半から神権会。懐かしい人に会えた。
7時からの一般大会では、上の子が末娘の面倒を見てくれたので、 話を聞くことに集中できた。
運転で疲れて睡魔と戦わなければならなかったことを除けば、 恵まれた環境で参加できた。
先週のことになるが、松江の教会員の人の知人という方が、 「息子のおみやげ」ということで南極の氷をもってきてくださる。
「しらせ」が定期的に持って返ってくれるもののおすそわけだそうだ。 教会では有効な使いみちを思いつかない(オン・ザ・ロックにするとおいしいそうだ)ので、 県教育委員会で教材にしていただけるように手配する。
しかし、なかなか引渡には手間がかかりそうで、実はまだ教会の冷凍庫に鎮座しているのであった。
千葉県は出席番号が誕生日順であるという話。
しかし、私の小学校は誕生日順だった。私は4月生まれなので、 妙に早かった覚えが。
ということは、千葉県ではないもう一県とは鳥取県? それとも、昔はもっと多かったってことなのかな。
Scheme R5.97RSにおけるUnicodeの取り扱いが「壊れている」という 話。
もっとも、(1)はshouldをmustと読み違えたもののようだ。 あと、(2)は後方互換のためのAPIであるということだ。
それ以外の、(3),(4)は間違いではないけど、 そこまで実装にコストをかける必要があるのかなあ。 この調子だとFactorは「世界一正確にUnicodeが扱える処理系」になるかもしれない。
(Common) Lispの最大の問題は「コマンドが作れないこと」という分析。 ライブラリは簡単に作れるんだけど。
ここでコマンドとはコマンドラインから実行できるもの、 あるいはexecシステムコールで呼び出せるもの(Windowsならstartか)。
いや、もちろん作れるんだけど、イメージをまるごと含む形になるため、 ほんの小さなプログラムでも巨大になりがち。 これでは「伝統的な開発モデル」にはうまくはまらない、 ということ。
Smalltalkでも似たような状態なんだけど、 とはいえ、これはLisp(やSmalltalk)の最大の利点でもあるわけだし。 利点と欠点が表裏一体ということか。
PerlのArtisticライセンスが、裁判所により 「著作権仕様許諾」ではなく「契約」であると見なされた、という話。
もっとも私にはそれがどう違うのかよくわからないんだけど、 スラッシュドットのコメントを読んでると、なんだか大きな違いがあるらしい。 少なくともアメリカ法の下では。
さらなる情報が(できれば日本語で)ほしいなあ。
東京に移動。
NaCl東京支社で、 技術者の転職情報誌である「エンジニアType」から取材を受ける。 スペシャリストであることについて。
いろいろ話したが、それはそれで実際に雑誌に載るまでのお楽しみということで。
私のほかには、よしおかさんのところに話を聞きに行ったらしい。 CTOからプログラマへ転身した希有な例として。
しかし、考えてみれば、前々回や前回の転職には、 転職情報誌が参考になったけど、 今後、仮に転職をするとしたら、きっと就職情報誌は使い物にならないだろうなあ。 実はその辺がスペシャリストなのかもしれない。
で、エンジニアType 2008年10月号をいただいたが、 眺めてみると仕事内容やスキルにRubyが載ってることが意外に多くて (とはいえ、数件だし、みんな名前を聞いたことある企業だけど、それでも)ちょっとびっくりした。
あとは「ゆく技術・来る技術トップ10」で、「来る技術」の3位がRubyだったのとか、 Most Valuable Engineerとしてdropdbさんが載ってたこととか。
GitHubスポンサーの収入がありそうな気がしたので(注文時点では未取得)、デスクトップPCを購入することにした。
意外かもしれないが、初デスクトップ。今回はサイコムというところで注文した。自作という選択肢もあったが、自分の不器用さをよく承知しているので(最近では液漏れで止まった時計を修理しようと分解して、再起不能にした)、BTOに。スペックは、
で、先週届いて、早速Linux (Mint XFCE)をインストールしたのだが、しばらく使っていると突然落ちる。どうもグラフィック関係らしく、sshでログインして使っていると落ちない。GPUのベンチマークプログラムglmark2を実行すると即死。
で、購入先に相談したら、グラフィックボードの不良の可能性がありますね、と交換品を送ってくれた。慣れないなりにケースを開けて交換したら(思ったよりもずっと簡単だった。はまりそう)、問題は改善しなかった。ナンデ?
どうもハード不良ではなく、ドライバーに問題があるらしい。AMDからダウンロードしたドライバーも使ってみたのになあ。で、あきらめて近所のパソコン工房で購入した RX570 に交換。こっちはちゃんと動いた。私としては(若干損した気はするけど)ちゃんと動作するPCが入手できたので満足。
手元にはおそらく不良品ではない RX560 が2枚。これを購入先に送り返せばいいのかなあ。問い合わせ中。
サイコムから返事来た。送料着払いでボード2枚を返却したら、ボードぶんの代金を返金するとのこと。やさしい。