Carnegie Mellon 大学の Computer Scienceの教授であるRobert Harper と Dan Licataの両氏は、CSの入門カリキュラムからOOPを「完全に除く」ことを決めた、と 先週発表した。
本質的に反モジュール的でかつ、反並行的なので、現代のCSのカリキュラムに合っていません。オブジェクト指向設計方法論の提案中の新コースは、このトピックを勉強したいと望む学生に対して、2年生のレベルで提供される予定です。
両教授は、CSを専攻予定の1年生に、関数型プログラミングの新コース を教える予定である。このカリキュラムに含まれるのは、
Frank Pfenning氏によって作られた命令型プログラミングの新コース、この秋に Guy Blelloch氏によって導入される予定のデータ構造とアルゴリズムに関する新コースだ。
Philip Schwarz氏によるコメントは、
なぜOOが反モジュール的と言えるのか?
Object Oriented Software Constructionの中で Bertrand Meyer氏は、OOの分解は以下の全てを満足していることを示している。
5つの基準:
モジュール分解性
モジュール合体性
モジュール連続性
モジュール保護
モジュール理解性
5つのルール:
直接マッピング
少ないインターフェース
明示的なインターフェース
情報隠蔽
小さなインターフェース(弱いカップリング)
5つの原則:
言語的モジュール ユニットの原則
自己文書化の原則
均一アクセスの原則
オープン-クローズの原則
単一選択の原則
今日あらゆるシステムが分散システムであるために、「実行可能」とは逆に増々「活動可能」である世界において、Enterprise Java やSpringのような試みがあるにも拘らず、プログラミング モデルのレベルで、ソフトウェア アーキテクチャが出現していない時代に、関数型プログラミングの長所のみをベースに、新世代の将来のソフトウェア エンジニアを教育するような後退は、本当に道理にかなったことなのか?ソフトウェア エンジニアリングがほとんど「システム エンジニアリング」活動であるときに、「プログラミング」に焦点を当てることが本当に重要なことなのか?
本当に最低限で、この新世代向けのCSカリキュラムに、2010年の Turing受賞者の Barbara Liskov氏が関数型プログラミングについて話したことを含むのが重要なのではないだろうか。