Guileにおけるオブジェクト指向プログラミングの問題点
2024-12-30
この記事では、Guile Schemeのオブジェクト指向プログラミングシステムであるGOOPSと、Common LispのオブジェクトシステムであるCLOSの違いを考察し、GOOPSの欠点を指摘しています。GOOPSは、いくつかの重要な点でCLOSのエレガンスと堅牢性に欠けています。具体的には、セッターの特殊化が継承と合成されない、before/after/aroundメソッド修飾子が存在しない、メソッド結合アルゴリズムが制御できない、メソッド引数の特殊化が制限されている、キーワード引数がサポートされていない、ドキュメント文字列がない、などです。著者らは、CLOSの動作を模倣したり、メソッド修飾子を追加したり、メソッド引数の特殊化メカニズムを強化するなど、いくつかの改善策を提案しています。これにより、コードのエレガンスが向上し、バグを減らすことができると考えています。
開発