本業が極端に忙しくて
特にネタがなく書けることがありません…
■
最近の円高が影響してか、amazon.co.jpの洋書がそれに合わせたくらい安くなっているようなので物色中。日本語の本があまりないπ計算関連を買うかどうかなんですが、英語で読める自信があまりなく…
JVM上で動作するLisp方言のclojure
- 作者: Stuart Halloway,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2010/01/26
- メディア: 単行本(ソフトカバー)
- 購入: 10人 クリック: 338回
- この商品を含むブログ (72件) を見る
common lispでもschemeでもないlisp方言で、JVM上で動作し、javaクラスとの親和性を考慮しつつ、並列化を言語側でサポートしているclojureの本です。結構薄い本なので持ち運びも楽でした。やはり時代はsoftware transactional memoryのようですね。
他にも色々な算譜言語があるわけですが、理由はどうあれJVMとか.NETとか大きめのライブラリとの親和性、特にバイナリレベルでの互換性を考慮しないと、実用的でないのかもしれません。
ストラウストラップ先生のOOPは差分プログラミングなのか?
クラスはサブルーチン由来(Simula)の補足 - みねこあ について少々思う所があったので。
ストラウストラップ先生の「プログラミング言語 C++」では、オブジェクト指向プログラミングを、ADTに実装継承による差分プログラミングを組み合わせたもの(と同時に概念の階層構造を持たせたもの)のようにかかれています。
クラスはサブルーチン由来(Simula)の補足 - みねこあ
ここまで言いきられてしまうとちょっと違和感があります。
プログラミング言語C++ (アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series)
- 作者: Bjarne Stroustrup,長尾高弘
- 出版社/メーカー: アジソンウェスレイパブリッシャーズジャパン
- 発売日: 1998/12/01
- メディア: 単行本
- 購入: 9人 クリック: 272回
- この商品を含むブログ (68件) を見る
この本の 2.6 でオブジェクト指向プログラミングについて述べていますが、形状を扱うクラスの描画を行うメンバ関数が、
void Shape::draw() { switch(k) { case circle: // 円を描画 break; case triangle: // 三角形を描画 break; case square: // 正方形を描画 break; } }
というように形状毎の描画方法をもっているのは変更時のコストが大きいため、
class Shape { Point center; Color col; // ... public: Point where() { return center; } void move(Point to) { center = to; /* ... */ draw(); } virtual void draw() = 0; virtual void rotate(int angle) = 0; // ... };
というように描画や回転を行うメンバ関数を純粋仮想関数とすることで、
void rotate_all(vector<Shape*>& v, int angle) { for (int i=0; i <v.size(); ++i) v[i]->rotate(angle); }
というように図形によらない汎用関数を作ることが出来る、というように説明しています。
ですので、"インターフェースの継承とインプリメンテーションの継承を一緒に扱ってしまっている"というような説明であればそうかなとも思うのですが、id:minekoaさんのこの記事は"ストラウストラップ先生は差分プログラミングの組み合わせをオブジェクト指向プログラミングと言っている"と言うように読めるのでどうなんだろうと少し引っかかりました。
アジャイルソフトウェア開発宣言の日本語訳
http://agilemanifesto.org/iso/ja
公開されたみたいです。人に説明しやすくなり、喜ばしい限り。
情報処理学会が日本将棋連盟に「コンピュータ将棋」で挑戦状
ちょっとネットワークまわりの不都合とか仕事とか色々あってしばらく書いてませんでしたが、また少しずつ書いていこうと思います。
以前この日記でダメ扱いした情報処理学会ですが、今度はおもしろいことをやってくれました。
将棋連盟側の
いい度胸をしていると
その不遜な態度に感服仕った次第
には笑いました。