具体と抽象みたいな分類がでてきた。

設計とプログラミングの関係を哲学的に考えると、以下のような観点から考察できます。

目的論と手段論

設計とプログラミングは、目的論と手段論の関係を反映しています。設計は、ソフトウェアの目的や要件に基づいて構築される計画であり、目的を達成するための枠組みを提供します。一方、プログラミングは、設計された枠組みを具体的な手段として実現するプロセスです。

抽象化と具体化

設計は、抽象化されたレベルでの構造やアーキテクチャを定めます。設計においては、一般的な原則やパターンが適用され、ソフトウェアの全体像が捉えられます。一方、プログラミングは、具体的なコードを書くことで、抽象的な設計を具体化し、実際の動作を実現します。

創造と実現

設計は創造的なプロセスと言えます。問題を解決し、理想的なソフトウェアを構築するためのアイデアや概念を考え出します。一方、プログラミングは、設計のアイデアや概念を実現するための実践的な手段です。設計が創造の領域であるならば、プログラミングは実現の領域と捉えることができます。

統一と分割

設計とプログラミングは、統一と分割という二つの対立する概念を組み合わせることでソフトウェア開発が進行します。設計においては、ソフトウェア全体を統一的な視点で考え、各要素の関係性を設計する必要があります。一方、プログラミングでは、全体を分割し、個々の部分を実装します。統一と分割は、設計とプログラミングの間でバランスを取る必要があります。

まとめ

これらの観点から見ると、設計とプログラミングはソフトウェア開発において欠かせない要素であり、相互に補完しあう関係にあります。設計はソフトウェアの構築計画であり、プログラミングはその計画を実現する手段です。両者の協力によって、優れたソフトウェアの開発が可能となります。