16
ソフトウェアの複雑さを管理するためにオブジェクト指向言語が本当に必要ですか?
これは非常に非技術的でソフトな質問になりますが、これが適切なプラットフォームかどうかはわかりません。しかし、私はCSの始まりの学生なので、皆さんがそれを許容することを願っています。 最初の学期では、JavaやUMLを介して、カプセル化、データ隠蔽、モジュール性、継承などのOOPの概念を紹介しました。(Javaは私の最初のプログラミング言語です) 私の理解では、OOPはソフトウェアの複雑さを管理する方法です。しかし、その原則は新しいものやユニークなものではなく、ある意味ではすべてのエンジニアリング分野に共通しています。 たとえば、車は非常に複雑な構造であり、その複雑さは、明確に定義された動作とインターフェイスを備えたモジュール化されカプセル化されたコンポーネントの階層によって管理されます。 しかし、新しいプログラミングパラダイムを導入した理由はわかりません。複雑さを管理するために使用されるすべての原則は、手続き型プログラミング言語によって実現できると思います。たとえば、モジュール性のために、プログラムを、コードが別々のファイルに含まれる明確に定義されたタスクを実行する多くの小さなプログラムに分割することができます。これらのプログラムは、明確に定義された入力と出力を介して互いに対話します。カプセル化を実現するために、ファイルを保護(暗号化?)することができます。コードを再利用するために、新しいプログラムで必要になったときにいつでもこれらのファイルを呼び出すことができます。これは、OOPが何であるかをすべてキャプチャしないのですか、それとも非常に明白な何かを見逃していますか? OOPが複雑さを管理しているという証拠を求めていません。私の意見では確かにそうです。しかし、モジュール性、カプセル化、データ隠蔽などの複雑さを管理するために使用されるすべての原則は、手続き型言語によって非常に簡単に実装できると思います。それでは、複雑さを管理せずに管理できるのに、なぜ本当にOOPなのでしょうか?