かなりの混乱をきたしている。はOO本質的に必要ですのでマルチパラダイム?
-
23-08-2019 - |
質問
してしまったの読stackoverflowの回答は、質問をしている印象OOは区分をすることは、不可欠です。
なOOにそのようなcompartmentalizeコードとデータを、実世界のオブジェクト?
その場合、これを逃その他の低レベルのパラダイムの仕事になるわけで、プラットフォーム?
IOW、オブジェクトに基づく汎用型システムは変更不可能なのでデフォルトする、機能的な第一言語は、オブジェクトに基づく汎用型システム変更可能なデフォルトの世界にのめます。
やって何かが足りない。
解決
No.OOとな二つの直交な概念です。
例えば:
- のCommon Lispオブジェクトシステムの一例でLisp OO、最も複雑なオブジェクトシステムです。
- 存機能言語とオブジェクトシステムとモジュールをサポートするシステムオブジェクト指向組織
- Scala機能言語と非常に柔軟なシステムOO
- ウできる書き込みオブジェクト指向コードにより、kinded多型
多くの本学が責を負うものではありオブジェクト指向が強い。
他のヒント
ほとんどのオブジェクト指向言語は不可欠ですが、あなたは<全角> のやや機能的なスタイルでそれらを使用することができます。いくつかの関数型言語では、適切な使用するために大規模なフレームワークを得るために、いくつかの「純度」のトレードオフ(最も明白な例である.NET上のF#)OOフレームワークの上に座っています。
最も明白な特徴である不変のためのより良いサポート、おそらくより良い型推論が続く -私は、機能的なスタイルでプログラミングを支援するために多くを行うには、「主にOO」の言語のための部屋ののたくさんのがあると思います。 (少なくとも、おそらく機能ドアで足を取得しようとしている伝統的な言語の最も重要な例であるC#の、について話すとき。)
のはいのオブジェクト指向メッセージパッシング動的型付けにおけるによって、典型的には(作用及び相互作用ステートフル・オブジェクトの集合としてプログラムを表現するためにプログラマを可能にするプログラミングのスタイルであります言語やメソッド呼び出しにおける静的型付け言語)、および特定の順序でそう。
状態、行動及び配列は(モナドは、そうでなければ、これらの概念を持たない純粋な関数型言語Haskellの、中状態、行動、シーケンスを実装するために使用されている)手続き型プログラミングの概念であるとnonmonadic関数型プログラミングでは存在しません。
別の視点からそれを見て、ほとんどの人は(むしろ再帰またはRPNに比べて)命令的に考えるのが好きです。このことから、ほとんどの言語が不可欠になるということになる。
もちろん、多くの問題は、表現(または解決)するためにはるかに簡単である(例えば、ユーザ・インタフェースのための)非命令的なアプローチではなく、ほとんどの人は本当にこのアプローチで快適に感じることはありません。他の人は本当にこの側面から問題にアプローチするために必要な精神的な変更を行うためのトラブルを持っている間、いくつかは殴らパスを残して好きではありません(メソッドの呼び出しや再帰の代わりに、変数やループで考えて)ます。
私はまだしっかりとオブジェクト指向は、本質的に不可欠な概念であると信じています。しかし、私は一般的にプログラミングパラダイムについてもう少し考えさせの最近のhref="https://stackoverflow.com/questions/4854774/c0x-as-functional-language">質問
2つの主要なプログラミングパラダイムは、の宣言型のパラダイムのある、プログラマは抽象関係(したがって、コンパイラに伝えるのものをの彼が望んでいる)、およびの不可欠書き留め場所パラダイムの、プログラマは(の方法の彼が望んでいるものを手に入れるため、コンピュータを伝える)のアルゴリズムを下に書き込みます。 パラダイムであるアプリオリ言語に依存しない - それはあなたが考えると、あなたのプログラムを構築する方法についての方法のより多くのです。しかし、言語のパラダイムを使用することになりますどのように簡単に違いがあります:。コードを書くの慣用的な方法に言語の意味論と構文のリードは、 宣言型言語の例では、プロローグ、命令型言語のための例は、Fortranだろう(との本物のプログラマは、のいずれかの言語でのFORTRANプログラムを書くことができます)になります。 同時に不可欠と宣言されたコードのための例として、Perl6のでFibonnaciシーケンスのこの実装を検討 これは明らかに、シーケンスの宣言型の記述です。しかし、 のは、特定の機能およびオブジェクト指向プログラミングでは、いくつかの他のプログラミングパラダイムを考えてみましょう。 官能パラダイムは、集合間の関係としてそのモデル計算のように、本質的に宣言されます。 オブジェクト指向パラダイムのメッセージパッシングと呼ばれるステートフルオブジェクトとの間の通信などのITモデル演算として、本質的に必須である。 一部の言語は純粋で、すべての計算を意味するパラダイムに準拠しています。例えば、Haskellは純粋に機能的な言語であり、Smalltalkのは、純粋なオブジェクト指向言語である。 しかし、これはその関数型言語のRESPことを意味するものではありません。オブジェクト指向言語が不可欠RESPを防ぎます。宣言型プログラミング。実際には、多くの場合、命令的な機能を使用する - あなたは、出力値を取得するには、入力値に入れます。逆は、オブジェクト指向プログラミングのためにも当てはまる:オブジェクトが受け入れるメッセージのセットは、そのインタフェースを宣言する。my @fibonacci-sequence := 0, 1, * + * ... *;
*
と...
として有効なPerl6のオペレーターている - どんな-starが怠惰なリストを作成するために、配列演算子、ラムダ式を作成するために使用することができます - それはまた、ランタイム固有のコードを呼び出す無条件文です。
一部の人にはそれぞれ賛否OOいて必要とされるコンセプトでここでの私の誇張しています。
オブジェクト指向なのか?:
- 物体の保持状態(ie参照の他のオブジェクト)
- 物を受け取ると、プロセス)のメッセージ
- 処理のメッセージの場合
- メッセージbeeing送のオブジェクト自体またはその他の物
- 変更オブジェクトの状態
この○○プログラミングが必要で変更可能な状態 開催されるオブジェクト(!).の場合シミュレー状態の変化による作物には、この不変量の簡単なしています。
Flamebait: 反対である場合はこの定義オブジェクト指向の、それAlan Kay.
多くの異なる概念に貢献する概念オブジェクト指向プログラミング. Wikipedia リストmostsします。
私が特徴の本質OOPの使用により オブジェクト挙動.
Wikipediaの特徴 オブジェ 以下の三つの物件:
- ティ:のオブジェクトのプロパティでその他の物からの
- 状態:のデータオブジェクトに格納され
- 挙動:を記述する方法、オブジェクトのインタをオブジェクトを使用でき
多くのオブジェクト指向言語の概念が実はありま 試作に基づく言語 のようです。
機能言語でも利用クラス(タイプスウ).ただいて教えてくるということではないものオブジェクト指向に使用することを目的とオブジェクト指向プログラミングの例ウ:んでもってオブジェ!がないので同じようなコンセプトとして"アイデンティティ"!だを構成する純粋なファンクション!
で誰かの利用期間に"授業"されているとは思いませんが、平均するこのオブジェクト指向プ!
OOPはステートオブジェクトを構築します。もの挙動物がなく変更するオブジェクトが新たなオブジェクトを作成できるのではなく、思いのゆったりのオブジェ。必要ないアイデンティティなので、品質を提供することに絶えず専念の変更が行われるようにオブジェクトに反映されるその他の参照が同じオブジェクトではないと思いますの変更なくなった。すべての必要な値(なしのアイデンティティー)、モジュールおよび/または授業のためのデータに隠封止.
なので あり,なプログラミングは固有のOOP.