「コンピュータサイエンスを教えるということの残酷さについて」は、EWダイクストラ[1]による1988年の学術論文であり、コンピュータプログラミングは数学の一分野として理解されるべきであり、プログラムの形式的な証明可能性が正確さの主要な基準であると主張しています。
タイトルにもかかわらず、記事の大部分は、ダイクストラがコンピュータサイエンスを科学のより広い視点に置こうとした試みについてであり、教育については最後に必然的に言及されている。具体的には、ダイクストラは、ホーア論理を解釈されない形式体系として扱う「新入生向けの入門プログラミングコースの提案」を行った。
実現可能性をめぐる議論
「ソフトウェア エンジニアリング」という用語が作られて以来、形式検証はリソースを大量に消費するため実行不可能であると常に考えられてきました。[要出典] 複雑なアプリケーションでは、そもそもプログラムが何をすべきかを正しく指定することが難しいことも、エラーの一般的な原因です。バグを排除するために、他のソフトウェア テスト方法が一般的に採用されており、ソフトウェア品質の測定では他の多くの要因が考慮されます。
ダイクストラは生涯を通じて、プログラムの正確性を十分に重視しなかったために、コンピューティングの中心的な課題が満足のいく形で解決されなかったと主張し続けた(ただし、保守性や効率性などの他の要件が無視されたわけではない)。[2]
教育遺産
今日教えられているコンピュータサイエンスは、ダイクストラのアドバイスのすべてに従っているわけではない。カリキュラムは一般的に、ダイクストラの初期の著作に従って、複雑性を管理し、将来の変化に備えるための技術を重視している。これには、抽象化、契約によるプログラミング、デザインパターンなどが含まれる。バグを回避するためのプログラミング技術と従来のソフトウェアテスト方法は基本的な要件として教えられ、学生は特定の数学的ツールに触れるが、形式検証方法は、おそらく高度なトピックとしてを除いてカリキュラムに含まれていない。[3]そのため、ある意味では、ダイクストラの考えは忠実に守られてきたが、彼が最も強く感じていた考えは守られていない。
ソフトウェア工学における新しいカリキュラムは、ダイクストラの提言を採用しています。これらのプログラムの焦点は、システムの正当性の正式な検証を容易にするために、ソフトウェア要件と設計の正式な仕様です。カナダでは、物理学に基づく工学における同様のコアコンピテンシーを備えた認定工学学位であることが多いです。[4]
参考文献
- ^ Dijkstra, Edsger W. On the Cruelty of Really Teaching Computing Science (EWD-1036) (PDF) 。EW Dijkstra アーカイブ。テキサス大学オースティン校アメリカ歴史センター。(書き起こし)
- ^ Dijkstra, Edsger W.コンピューティングサイエンスの終焉? (EWD-1304) (PDF) 。EW Dijkstra アーカイブ。テキサス大学オースティン校アメリカ歴史センター。(書き起こし)
- ^ MITコース:
- Eric Grimson、Peter Szolovits、および Trevor Darrell。6.001コンピュータ プログラムの構造と解釈。2005 年春。マサチューセッツ工科大学: MIT OpenCourseWare、https://ocw.mit.edu。ライセンス: Creative Commons BY-NC-SA。
- Robert Morris、Samuel Madden。6.033コンピュータ システム エンジニアリング。2009 年春。マサチューセッツ工科大学: MIT OpenCourseWare、https://ocw.mit.edu。ライセンス: Creative Commons BY-NC-SA。
- Ronitt Rubinfeld、Albert Meyer。6.042Jコンピュータサイエンスのための数学。2005 年秋。マサチューセッツ工科大学: MIT OpenCourseWare、https://ocw.mit.edu。ライセンス: Creative Commons BY-NC-SA。
- Daniel Jackson。6.170 Software Studio。2013 年春。マサチューセッツ工科大学: MIT OpenCourseWare、https://ocw.mit.edu。ライセンス: Creative Commons BY-NC-SA。
- ^ 「ソフトウェア エンジニアリング プログラムはコンピュータ サイエンス プログラムではない」(PDF)。2013 年 9 月 27 日のオリジナル(PDF)からアーカイブ。2012年 10 月 30 日閲覧。
