どの言語もどのパラダイムでもプログラミングに使用できますか? たとえば、C にはクラスがありませんが、OOP でプログラミングすることは可能です。OOP を使用していない言語 (アセンブリなど) がいくつかあります。
3 に答える
はい、単純に、ホスト言語で $favorite $paradigm のインタープリターを実装できるためです。
しかし実際には、これは実行可能でも、効率的でも、正しくもありません。
C++ は最終的にはアセンブリです。より適切な記述からアセンブリを作成するためのコンパイラが必要です。したがって、C で OOP を実行できるのと同じように、アセンブリで OOP を実行できることを確認してください。オブジェクト指向の概念の多くは、言語の構造によって強制されるのではなく、慣習とプログラマーの規律に基づいて実装されることになります。その結果、膨大な種類のバグが発生する可能性があり、言語ツールはおそらくあまり良くありません。あなたが見つけるのを手伝ってください。
ほとんどのパラダイム/言語の不一致について、同様の議論が続きます。多くのオブジェクト指向プログラムがこのように C で書かれているため、学問的な問題だけでなく、ある程度実用的なことさえあります。
制限を追加するのではなく、削除することが必要な場合は、少し難しい場合があります。
Haskell や Mercury などの純粋性が強制される言語では、オブジェクト指向スタイルのカプセル化された可変状態のパケットを、任意の純粋なコードの途中で突然中断することはできません (少なくとも「すべての賭けはオフ」機能を使用しない限りはそうではありません)。unsafePerformIO
Haskell やMercury のようpromise_pure
に、コンパイラに嘘をつきます。その時点で、これを行う領域の周りに純粋なインターフェイスをラップできない限り、プログラムは完全に機能しなくなる可能性があります)。ただし、これらの言語では、IO を実行するために使用するメカニズムを離れることはなく、手続き型またはオブジェクト指向のスタイルでプログラム全体を作成できます。
同様に、動的言語でのダックタイピングの使用をパラダイムと見なす場合、静的型付けを使用する言語で同様のものを取得するのはかなり苦痛ですが、動的な型をdataとして表現する方法をいつでも見つけることができます。しかし、ダックタイピング言語を実際に使用している場合は、無料で取得できる規則と再実装を使用して、自分が何かをしていることに再び気づきます。
好きなパラダイムでコードを書くのに適応できない言語 (汎用プログラムの作成に使用できる) を見つけるのは難しいと確信しています。適応によって非常に効率的なコードが生成されない場合があります (ただし、C やアセンブリを任意のパラダイムに適応させることは、通常、そのパラダイムに合わせて調整された言語を持っているかのように効率的に行うことができます)。プログラマーの時間について。
いいえ、すべての言語がどのパラダイムでもプログラミングに使用できるわけではありません。ただし、より一般的なもの (python、c++ など) では、どのようにプログラミングするかを選択できます。php でも OO サポートが追加されています。