netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2004-08-31 古い日記からの変換データ ▲
_ [論文]安全なメタクラスの結合 ▲
ICSMの発表資料作りで一時的に煮詰まってきたので,気分転換に論文を探して読むことにする.
Noury M. N. Bouraqadi, Thomas Ledoux, Fred Rivard:Safe Metaclass Programming.Proceedings of OOPSLA 98, pp.84-96,Vancouver, B.C., October, 1998.
メタクラスを使って継承階層を作るときには,クラス間の継承関係と,対応するメタクラス間の継承関係がきちんと保たれないと困る,とかいう互換性問題があるらしい.
ところが,特定のクラスにだけ属性を付与しようとすると(たとえばあるクラスのインスタンス生成を禁止するAbstract を付加すると)その属性が継承されてしまって困ったことになる.
そこで,互換性を維持するためのメタクラスと,クラスごとの属性を付与していく「属性メタクラス」を区分し,実際のクラスたちは属性メタクラスのインスタンスとする.
MetaA ←(inherit)← "MetaA + Singleton" ←(instance)← Aといったようになる.間の "MetaA + Singleton" のところが付与する属性の数に応じて継承階層数が増えていく.
著者らは2003とかにも原稿を書いていて,このあたりの継承階層をMix-inとして実装するつもりのよう.クラスのプログラマが,サービスとして提供されているメタクラスをMix-inとして導入するイメージみたい.
Non-orthogonalな属性(Value-Conflict)については単に継承元のメソッドを呼ぶようにして振舞いましょうといった程度のことしか書いていなかった.あとは開発者がMix-inする段階などで順番など何らかのコントロールをする,ということになりそう.このあたりの話は他にも文献をあたってみないといけない.
結合の安全性という話とは直接は関係ないが,この論文の著者らは,属性メタクラスのクラス(メタ-メタクラス)をベースに使われる場面ごとに属性メタクラスがインスタンス化されるという考え方をしている.この辺はアスペクトのインスタンス化の話に何か結びつくかも?結合対象はあくまでクラス単位だけれど.
2005-08-31 ▲
2008-08-31 ▲
_ [論文] プログラミングは art である ▲
IEEE Software 7月/8月号に,Diomidis Spinellis による The way we programというコラムが掲載されています.プログラミング好きな人にお勧めの記事なので,誰でも読める本人のブログの記事をリンクしておきます.本人のブログには6月に掲載されていたようなので,既にどこかで紹介されているかもしれませんが…….
この記事では,大きいプログラムも小さいプログラムも,意味のある識別子,コメント,空白がある一定の割合を占めているというデータを示しています.意味のある識別子の量は,まずユニークな識別子数を数えて,それを一意に表現するために必要な最小文字数(符号化したときの最小符号長)を計算しておき,各変数の出現が最小文字数よりも何文字余分に使ってるかの合計で計算しているようです.
それを踏まえて,プログラミングは art であって,やりたい処理を計算機のために翻訳する作業ではないと述べています.ソースコードは,コメントによってコードの意味や書かれた理由(the story behind the code)を記述し,空白によるレイアウトでコードの隠れた構造を明らかにし,意味のある識別子という少ない言葉で物事を表現しており(almost stylized poetry: a type of creative communication through a few words adhering to a specific form),簡潔で曖昧さのないコミュニケーションを行うことを目指したものだと述べています.
これを読んで直接何か役に立つという記事でもないですが,表現とか,データ自体は面白いと思います.