プログラミングの2つの宇宙!OOPとFP!


おい、コミュニティに!
多くの人々がプログラミングに入ると本当に2つの単語を聞く!OOPとFP!それがよりしばしば聞かれる時から、OOPは彼らの心で利点を持ちます.
ここでは、これらの2つのことを説明し、どの1つを学ぶ必要があります!

OOPまたはFP?どちらが欲しいですか.

プログラミングパラダイム


すべてのプログラミング言語は本当にユニークです.彼らは表面上でそれらを見ているときに、同じように見えるかもしれないが、それらに深くなって、他の人で利用できないかもしれない魅力的な機能を明らかにする.
プログラミング言語がプログラミング言語において唯一の違いではなく、プログラミング言語があなたのコードを実行し、それが扱う方法がパラダイムと呼ばれている方法において異なっている.パラダイムはプログラミング言語の構造とそれがどのように実行されるかを定義します.
これまでに設計されたパラダイムはいくつかありますが、2つは最も人気のあるオブジェクト指向プログラミング(oop)と関数型プログラミング(fp)です.

オブジェクト指向プログラミング


あなたがウェブサイトまたはデスクトップアプリケーションを設計しているならば、おそらく、あなたはC++、Java、JavaScript、Ruby、PHPのようなOOP言語を使用しています.これらのプログラミング言語にはOOPカテゴリに現れるような概念がいくつかあります.
簡単に言えば、オブジェクト指向プログラミングは、classと呼ばれる構文を使用してエンティティとしてすべてを定義する必要があります.
たとえば、ここでJavaを定義する方法です.
class Dog {

}
すべてのクラスはプロパティ( state )とメソッドを持つことができます.
class Dog {
    public String name;
    public String breed;

    public void bark() {
        System.out.println("Woof Woof!");
    }
}
上のコードはPHPで書き換えることができます.
class Dog {
    public $name;
    public $breed;

    function bark() {
        print("Woof Woof!");
    }
}
またはJavaScriptで
class Dog {
    name
    breed

    bark() {
        console.log("Woof Woof!")
    }
}
ほとんどのOOP言語変数は変更可能です.
let x = 5
console.log(x) // 5
x = 8
console.log(x) // 8
ご覧の通り、これらはOOP言語のすべてのクラスであるので、非常に類似しています.実体はオブジェクトを形成するためにインスタンス化されることができます、そして、ここで、OOPプログラミングはその意味を見つけます.
OOPパラダイムはすべてのこれらの概念を定義します

  • 抽象化プログラムの複雑さの低減

  • クラス:エンティティの構造を定義します.

  • カプセル化:新しいものを形成するためにデータを結合すること.

  • 情報隠蔽:複雑さを減らすために不必要なデータを隠します.

  • 継承:クラス間の関係を定義する.

  • インターフェース:ハードウェア入力と出力と他のプログラムを使用すること.

  • object :クラスから派生したエンティティ.

  • 多形:複数のタスクを実行し、複数の方法で表示する機能.
  • これらの言葉は奇妙に思えるかもしれないが、信じているかどうか、彼らは単純なものを定義するだけで厳しい言葉です.したら、これらの単語がどのようにシンプルで、何を意味を実現するプログラミングに入る.

    関数型プログラミング


    ほとんどの場合、関数型プログラミングはOOPより異なります.両方のパラダイムは機能と変数を持ちます、しかし、彼らは異なって彼らを扱います.だから、類似点を違いの方法で取得させてください.Elixir、Erlang、エルム、Haskell、F - Chernなどのような多くのFP言語があります.
    興味深いことに、JavaScriptやPythonやPHPのようなOOP言語は、FPプロシージャを実装することができます.
    関数型プログラミング言語は純粋に関数を実行し、通常はクラスやオブジェクトは存在しません.機能的プログラミング言語は、変数が不変であるように、数学的アプローチを採用する傾向がある.変数が定義され、その値を変更することができない場合は、数学で同じようになります.
    あなたがimmutabilityが制限であると思うならば、そのようなプログラミング言語で働くことは不可能です、よく、あなたは間違っています!プログラミングのこの方法では、数学的な方法を安定させることができますし、関数のプログラミング言語は、計算に関連する何かを構築している場合の理由です.これは、他の何かのためにFPを使用することができないことを意味しますが、むしろ提案でした.
    我々が概念を定義したOOPと同じように、ここではfpが成り立っているという概念があります.

  • immutability :変数の値を変更できない.

  • 純粋な機能:副作用はありません.

  • 再帰:再帰はそれ自体を呼び出す関数です.
  • あなたがどのようにこれらの仕事を疑問に思っている場合には、以下の私のポストをチェックしてください:エリキシルについて:


    OOPまたはFPを使うとき?


    これまでの最も難しい質問は、使用するプログラミング言語であり、それよりも難しい使用するパラダイムです!
    OOPとFPの両方の利点と不利な状況に応じてどのようにあなたの問題を解決したい.OOPは、最近、最も使用されるパラダイムです.
    しかし、あなたが1つを選択したい場合はここに提案されています:あなたが設計Webサイトやデスクトップアプリケーションにプログラミング言語を探しているなら、OOPと一緒に行きます.もしあなたが並行性とプログラミングのより数学的な方法を探しているなら(特にあなたがデータ科学者であれば)fpを選びます.再び、私はこれらがOOPとFPがベストフィットした場所のための私の考えであることに言及しています.
    あなたがお楽しみください!