«前の日(08-26) 最新 次の日(08-28)» 追記

Matzにっき


2003年08月27日

_ [OOP]続々アイデンティティ

いくつかツッコミをもらいました、どうも。

まず、ゆあいさんのツッコミから。

アイデンティティが重要なのは、アイデンティティがあるオブジェクトと無いオブジェクトでは、 コピー時の動作が大きく異なるからではないでしょうか?

まあ、そういうこともあるでしょうが、 私が重視している理由は「アイデンティティがないものはオブジェクトではないだろう」ということです。

「オブジェクト指向」というからには「オブジェクト」を意識しないといけないわけで、 そのために最低限必要なものはなにかと考えた時に行き着いた概念が「アイデンティティ」です。

アイデンティティという観点からプログラミング言語(というか計算モデル)を分類すると

  1. すべてのデータにアイデンティティがある
  2. あるデータにはアイデンティティがあり、あるものにはない
  3. すべてのデータにアイデンティティがない

と分類できますが、オブジェクト指向するにあたって、(1)は問題なし、(2)はアイデンティティがないものも「その値がアイデンティティである」と考えて(1)に準じる、とすることができて、(3)ではちょっと無理だろう、というのが私の仮説です。

最上さんのツッコミでは、

  • 暗黙のポインタ:あり
  • 明示的なポインタ:なし
  • アイデンティティ:なし
  • 代入によるコピー:発生
  • 副作用:あり

というC++のサブセットを考えておられるとのことです。 私はこの言語におけるプログラムがどのようなものになるのか想像できないのですが、 実際のところどうなんでしょうね。この言語には本当にアイデンティティがないのでしょうか。

実際には、暗黙のポインタによってアイデンティティが導入されてそうな気がします。

さて、最後にともさんのツッコミです。

アイデンティティが無くて、メンバーはあるけど単一代入で、メッセージ送信はマルチキャストがデフォルトな言語ってどうでしょうか?割と実用的に書けるんじゃないかという気がするんですが。アイデンティティが必要ならそのためのメンバーを書けば利用者がアイデンティティのようなものを使うことはできるし (現実世界ではアイデンティティはそんなに自明じゃなくて、代用品でまにあわせている気がするし)。

これは難しい。

なにが難しいって、おそらく非常に高度な概念を短い言葉で記述してあるので、全体像が想像しにくいことです。

  • アイデンティティがない

    参照がないという意味なのでしょうか。 そもそもアイデンティティがない言語というのが(古い)FORTRANのような 低レベルのものか、純粋な関数型言語くらいしか思いつかないのですが。

  • メンバーはあるけど単一代入

    「単一代入」は分かりますが、メンバーの単一代入というのはどういう意味でしょうか。 初期化時にメンバの値を指定してその後は変えることができないということかな。 Pythonのタプルとかのようなimmutableなオブジェクトを想像しちゃいます。

  • メッセージ送信はマルチキャスト

    これが一番分かりませんでした。複数のレシーバに同時にメッセージを送るという意味だと思うのですが、 「複数のレシーバ」という概念にすでにアイデンティティが含まれていると思うのですが。

ということで、もしよければこのアイディアについていろいろ聞かせてください。

ちなみにこういう場合、「アイデンティティがある」ことになるんでしょうか?個人的にはオブジェクト指向するのに必須かどうかで議論した方が良い気がするんですけど。

すでに述べたように「オブジェクト指向という考え方の最低限」がアイデンティティだと思っています。 アイデンティティのない言語でもオブジェクト指向はできると思っていますが、 そのためにはユーザレベルでなんらかのアイデンティティを導入する必要があると思います。

一つの例としてTclがあります。Tclにはデータ型として文字列しかありません。 数値やリストなどは文字列として表現します。少なくとも表面的には。

で、Tcl上のツールキット(Tk)には「ウィンドウ」とか「ボタン」とかいったような「オブジェクト」が 登場するのですが、どのオブジェクトが明示するために「パス」というものを使います。 たとえば「.frame.panel.button1」のような感じですね。これはTcl的には文字列に過ぎないのですが、 Tkにとってはあるオブジェクトを指し示す参照でありアイデンティティです。


2004年08月27日

_ U-20プログラミングコンテスト審査会

朝から東京に移動、U-20プログラミングコンテスト の審査委員の一人として参加するためだ。

審査会は10時から始まるのだが、少し遅刻してしまった。東京10時は早すぎる。

個人部門で41件、団体部門で34件の応募があった。ちょっと少ないか。

これらの中から各地方のソフトウェアセンターで一次審査が行われ、 選抜された個人部門8件、団体部門9件が我々の審査対象となる。

審査委員は以下の通り。

石田 晴久(委員長)多摩美術大学
小泉 力一 		東京都立墨田川高等学校
田丸 忠夫 		株式会社アルゴ21
新部 裕            独立行政法人産業技術総合研究所
西村 宜起          東北芸術工科大学
古堅 真彦          岐阜県立国際情報科学芸術アカデミー
まつもと ゆきひろ  株式会社ネットワーク応用通信研究所
吉岡 弘隆 		ミラクル・リナックス株式会社
浅井 宗海          財団法人日本情報処理開発協会

10月1日に発表が行われるまで、私から詳細を出しちゃいけないだろうけど、 気がついたところ。来年応募を考えている人は参考にしてほしい。

  • 一次審査したソフトウェアセンターの担当者によると、 応募されたものの中には、全然動作しないもの、 どこぞの課題のプログラムをそのまま提出したような工夫のないものがかなりあったとのこと。 そういうのは、絶対一次審査を通らないので出すだけ無駄。
  • 審査員自身は応募されたプログラムを自分で操作する時間はない。 一次審査の担当者が動作デモをしてくださるのだが、 細かなところまでは分からない。 それを見越して応募時に「アピールポイント」を書いてもらうようにしたのだが、 十分に書かれているとは言えなかった。 短い時間で評価してもらうために「どこに苦労したか」、「どう工夫したか」、 「どこが独創的だと思うか」などをきちんと詳しく書いた方が有利だと思う。
  • 残念ながら、今年は「本当に独創的だ」と舌を巻くほどのものは応募されなかった。 ただし、かなり大規模な労作や、面白い発想のものはいくつかあった。 全体としては団体部門の方が面白いものが多かったかなあ。
  • 自分の作品をフリーウェア(残念なことにフリーソフトウェアではない)として、 いくつも公開している高校生からの応募もあった。頼もしい若者はいるものだ。 他にも、セキュリティキャンプとプロコンに同時に参加という強者も。
  • 実装に工夫したように思われるものは、私や新部さん、吉岡さんたちがソースコードに目を通した。 ほとんどのものは、なんかすごい力業。プロコンに応募する(そして一次審査を通る)ような 高校生はたぶんまわりに相談できる人なんかいなくて、我流でがりがり書いちゃうんじゃないだろうか。 マジックナンバーがちりばめられていたり、抽象化が行われてなかったり。 コードレビューを行う「プログラミングキャンプ」とかの必要性を感じた。
  • 全部がWindows環境上のソフトウェアであった。ちょっと残念。審査した中ではひとつだけ、 Apache + PHP + MySQLというものがあって、これはそのままLinuxとかの上でも動きそう。
  • いくつかの応募作品は、HSP - Hot Soup Processorで書かれていた。 これのソースを読むのはつらすぎ。ソースコードを読む審査員に負荷をかけるぶん、ちょっと不利かも。 30年前ならともかく、もう21世紀なのにこの言語はないだろう。 逆に言うと、Windows環境でお金をかけずにプログラミングしようと思ったら、 こういう言語しかないのだろうか。

追記:

よしおかさんもプログラミングキャンプについて書いている。 来年あたり、本気でどうだろうか。

参加する人には、まず前もって4839912653と、 4894712741は読んでもらっておくとして。


2005年08月27日

_ ステーク大会 土曜の部

午前中くたくたと準備し、家族で新見へ。

年に二度あるステーク大会なのだ。これの日程が急に変更になったせいで、 Lightweight Language Day and Nightにいけなくなったのだった。

まあ、今月は出張があんまり多いんで、正直助かったところもあるけど。

新見までおよそ100Km。赤子をつれての移動はやや不安だったけれども、 とくにトラブルはなし

2時半から神権会。懐かしい人に会えた。

7時からの一般大会では、上の子が末娘の面倒を見てくれたので、 話を聞くことに集中できた。

運転で疲れて睡魔と戦わなければならなかったことを除けば、 恵まれた環境で参加できた。

_ LLDN

で、帰ってきてからLLDNのレポートを読む。

トラックバックセンタ、昼の部夜の部

トラックバックに集まっているエントリを読むと楽しそうではある。 でも、正直、一昨年とたいして変化してるわけでもないし、 笑いを得るとか、楽しむというか、そういう「技術系エンターテイメント」としての価値は認めるけど、 わざわざ地の果ての島根から行ってまで参加するほどでもないような気がする。 いや、かずひこくんはしっかり参加したわけだけど。

むしろ、やりたいのは合宿か。 頭を突き合わせて、新鮮なアイディアで、血の滴るようなコードをハックする。 今必要なのはまさにこれだ。なんてね。


2006年08月27日

_ [教会] 南極の氷

先週のことになるが、松江の教会員の人の知人という方が、 「息子のおみやげ」ということで南極の氷をもってきてくださる。

「しらせ」が定期的に持って返ってくれるもののおすそわけだそうだ。 教会では有効な使いみちを思いつかない(オン・ザ・ロックにするとおいしいそうだ)ので、 県教育委員会で教材にしていただけるように手配する。

しかし、なかなか引渡には手間がかかりそうで、実はまだ教会の冷凍庫に鎮座しているのであった。

_ [教会] バプテスマ会

新しい人が教会に入る式である「バプテスマ会」が開かれる。

非常によい雰囲気の会であった。今年はこれで7人目か。


2007年08月27日

_ ねたミシュラン 千葉県マジで?!

千葉県は出席番号が誕生日順であるという話。

しかし、私の小学校は誕生日順だった。私は4月生まれなので、 妙に早かった覚えが。

ということは、千葉県ではないもう一県とは鳥取県? それとも、昔はもっと多かったってことなのかな。

_ [言語] Useless Factor: The R5.97RS Unicode library is broken

Scheme R5.97RSにおけるUnicodeの取り扱いが「壊れている」という 話。

  1. UTF-16なのに定数アクセス
  2. 大文字小文字変換(charがcharにマップしない)
  3. collation
  4. locale

もっとも、(1)はshouldをmustと読み違えたもののようだ。 あと、(2)は後方互換のためのAPIであるということだ。

それ以外の、(3),(4)は間違いではないけど、 そこまで実装にコストをかける必要があるのかなあ。 この調子だとFactorは「世界一正確にUnicodeが扱える処理系」になるかもしれない。

_ [言語] Pupeno’s web site >> Blog Archive >> The problem with Lisp

(Common) Lispの最大の問題は「コマンドが作れないこと」という分析。 ライブラリは簡単に作れるんだけど。

ここでコマンドとはコマンドラインから実行できるもの、 あるいはexecシステムコールで呼び出せるもの(Windowsならstartか)。

いや、もちろん作れるんだけど、イメージをまるごと含む形になるため、 ほんの小さなプログラムでも巨大になりがち。 これでは「伝統的な開発モデル」にはうまくはまらない、 ということ。

Smalltalkでも似たような状態なんだけど、 とはいえ、これはLisp(やSmalltalk)の最大の利点でもあるわけだし。 利点と欠点が表裏一体ということか。

_ [OSS] Slashdot | Court Ruling Clouds Open Source Licensing

PerlのArtisticライセンスが、裁判所により 「著作権仕様許諾」ではなく「契約」であると見なされた、という話。

もっとも私にはそれがどう違うのかよくわからないんだけど、 スラッシュドットのコメントを読んでると、なんだか大きな違いがあるらしい。 少なくともアメリカ法の下では。

さらなる情報が(できれば日本語で)ほしいなあ。


2008年08月27日

_ e-Type取材

東京に移動。

NaCl東京支社で、 技術者の転職情報誌である「エンジニアType」から取材を受ける。 スペシャリストであることについて。

いろいろ話したが、それはそれで実際に雑誌に載るまでのお楽しみということで。

私のほかには、よしおかさんのところに話を聞きに行ったらしい。 CTOからプログラマへ転身した希有な例として。

しかし、考えてみれば、前々回や前回の転職には、 転職情報誌が参考になったけど、 今後、仮に転職をするとしたら、きっと就職情報誌は使い物にならないだろうなあ。 実はその辺がスペシャリストなのかもしれない。

で、エンジニアType 2008年10月号をいただいたが、 眺めてみると仕事内容やスキルにRubyが載ってることが意外に多くて (とはいえ、数件だし、みんな名前を聞いたことある企業だけど、それでも)ちょっとびっくりした。

あとは「ゆく技術・来る技術トップ10」で、「来る技術」の3位がRubyだったのとか、 Most Valuable Engineerとしてdropdbさんが載ってたこととか。

_ 勉強会

秋葉原から六本木に移動。

KLabさんで、楽天・KLab・PFI合同で勉強会。

学んだこと

  • KLabは「くらぶ」と発音すること。「けいらぶ」だと思ってた
  • Hadoopについて。ある程度は知ってたけど。国内でも利用例がでてきてるらしい
  • memcachedおよびrepcachedについて。対比するとROMAの「やりすぎ感」が目立つ。 複雑さを一つのソフトウェアに集約できるので、むしろいいことだと思うけど。
  • 昔からそうだったけど、私は集中力が長続きしない。性格が勉強会向きじゃないなあ。

勉強会終了後、みんなは懇親会に向かったが、私は一人で空港へ。 この辺、日帰り族はツラい。


2020年08月27日 新PCとトラブル

_ 新PC

GitHubスポンサーの収入がありそうな気がしたので(注文時点では未取得)、デスクトップPCを購入することにした。

意外かもしれないが、初デスクトップ。今回はサイコムというところで注文した。自作という選択肢もあったが、自分の不器用さをよく承知しているので(最近では液漏れで止まった時計を修理しようと分解して、再起不能にした)、BTOに。スペックは、

  • Ryzen9 3900 (12 core)
  • 64GB memory
  • 1TB SSD (M.2)
  • Radeon RX560

で、先週届いて、早速Linux (Mint XFCE)をインストールしたのだが、しばらく使っていると突然落ちる。どうもグラフィック関係らしく、sshでログインして使っていると落ちない。GPUのベンチマークプログラムglmark2を実行すると即死。

で、購入先に相談したら、グラフィックボードの不良の可能性がありますね、と交換品を送ってくれた。慣れないなりにケースを開けて交換したら(思ったよりもずっと簡単だった。はまりそう)、問題は改善しなかった。ナンデ?

どうもハード不良ではなく、ドライバーに問題があるらしい。AMDからダウンロードしたドライバーも使ってみたのになあ。で、あきらめて近所のパソコン工房で購入した RX570 に交換。こっちはちゃんと動いた。私としては(若干損した気はするけど)ちゃんと動作するPCが入手できたので満足。

手元にはおそらく不良品ではない RX560 が2枚。これを購入先に送り返せばいいのかなあ。問い合わせ中。

感想

  • きびきび動く
  • 24スレッドはタスクモニターにいっぱい表示されて圧巻
  • しかし使い切るほどのタスクはない
  • コンパイルっていってもmruby程度じゃなあ

FAQ

  • なぜ3900? 3950とか3990とかにしなかったの?
  • それらはケースが大きくなりすぎてデスクに乗らないから
  • それに比較対象がThinkPad T460s (Core i7 6600U) 2 core 4 threadだからねえ

追記

サイコムから返事来た。送料着払いでボード2枚を返却したら、ボードぶんの代金を返金するとのこと。やさしい。


«前の日(08-26) 最新 次の日(08-28)» 追記