私はそのような質問を提起するためにSO兄弟の間でより良い場所を考えることができません。もともと「Pythonは純粋なオブジェクト指向言語ですか?」しかし、用語を定義しようとする際に人々が経験するトラブルや不快感を考慮して、用語自体の明確な定義を取得することから始めることにしました。
言葉を作り出したアラン・ケイ博士による通信から始めるのはかなり公平でしょう(細胞または他の生物との生物学的類推のインスピレーションに注意してください)。
タスクにアプローチするには、次の方法があります。
- 用語を定義するために一意で十分な特定のプロパティを示す(またはそうしない)プログラミング言語をリストして比較分析を行います(ただし、Smalltalk、Scala、
Javaなどは可能ですが、IMOはこのように完全には見えません)実りもありません) - 正式な定義(またはそれに近い、たとえば、より学術的または数学的なスタイル)を提供します。
- 具体的な言語のセマンティックコンテキストまたはアプリオリなプログラミングエクスペリエンスに完全に依存する哲学的定義を提供します(コミュニティによる説明が成功する可能性があります)。
私の現在のバージョン:「操作とオペランドを(文法的に)区別し、このタイプがオブジェクト(OOPの意味)であるかどうかを各オペランドのタイプについて推測できる特定のプログラミング(フォーマル)言語がオブジェクトであるこの言語に少なくとも1つのタイプがある限り、そのような言語はオブジェクト指向言語です。最後に、言語のすべてのタイプがオブジェクトでもある場合、そのような言語を純粋な(強い)オブジェクト指向言語と定義します。
それの可能な改善を感謝します。ご覧のように、「オブジェクト」という用語に依存する定義を作成しました(多くの場合、オブジェクトのクラスとして完全に参照されます)。
[編集]
また、私はの(幸運にもよく理解)という概念を使用タイプを型付けの言語のように。データ型プログラミングまたは型指向プログラミングは、(プログラムテキスト、つまりリテラルおよびデータ変数の特定の値をどのように処理するか-タイプセーフティに進化するもの)の構文解釈であるだけでなく、言語文法に起因し、正式な方法で研究できる(数学的論理を使用)いわゆる型システムとして。特定の型システムにいわゆるユニバーサル型を要求することは、OO言語の純度を定義する方法の1つです(これを意味的に拡張する方法があります)。
NB
答える方法:
- 用語や概念の理解をサポート/説明する本または参考文献を指定すると役立ちます(通常、基本を除くすべての依存概念を適切な定義がカバーまたは参照します)。
- 可能であれば、明確でない場合はインデントされた回答/定義のカテゴリを示します(上記を参照:1-言語の例、2-数学的論理、3-技術的な説明とプログラミング哲学)
- 分類は重要である(とも用語純粋-OOは、長期OOに含まれているため)他のよく知られた方法論からOOパラダイムのunmix要素に試して答えながら(と決して混乱/それらをオーバーラップする、の例えば通常の要素モジュールをカバーすることができます/オブジェクト指向プログラミングで具体化):OOPと機能プログラミング、論理プログラミング(特に強く専門化された)、Abstarct Data Types(ADT)、Modular、Metaprogramming(generics and LISP's macroexpansion-time)との区別を試みる、契約(例:エッフェル)、アスペクト指向(AO)、(宣言的分類と機能的分類の違い、およびダイクストラの構造化の歴史的定義は明確です)
正式な定義を与えることの難しさ:驚くべきことに、特定の論理(正式な)システムの形式でOOPの数学的な記述を与えることは非常に簡単です(ほとんどの場合、型ベース)。その形式主義を単にエンターテインメントやエクササイズだけでなく、タイプセーフティチェックや新しい言語デザインの側面に適用することにより、より実用的なことを試みることもできます(また、ラムダ計算としてのFOL形式で、直観的型理論、依存型、そして単にカテゴリー理論を使用して)。ここでの主なポイントは、当然のことです多分、一定の割合の発見を除いて-そのような製剤は、IMO強く、最も可能性の高い最初は不完全なので、ほとんどの世界をプログラミングに後方貢献していない((コンピューター・エンジニアリングで)OOPの理解と、その後はほぼアクセスできなくなってしまうことで(不備)バイアスされていることにより、バック正式な世界からの用途一般的な言語に統合されています)。
そうです、定義だけでなく、正確に「良い」定義を与えることは困難です。しかし、皆さんの経験と直接的な関与のおかげで、ここでこれを尋ねることに前向きです。