アプリ版:「スタンプのみでお礼する」機能のリリースについて

関数型が関数に処理を書いてそれを組み合わせてプログラムを作ること
オブジェクト指向は関数型の関数の代わりにクラスを使う
関数型との違いは継承で融通がきくということ

つまり関数型の上位互換がオブジェクト指向言語

あってますか?

A 回答 (4件)

関数型プログラミングは計算方法をどうやってプログラミングするのかによる分類です。



 C言語、C++、Java等の言語では、どうやって計算するかの手順を直接書きます
 例えば、「x以下の整数の合計を計算する」処理の場合、xから1にまで値を減らしながら繰り返し足し算して行く手順を書きます。

 それに対し関数型言語では、関数の引数と返値の関係を書いて、計算手順は書きません。次のような雰囲気です。
   f(1) = 1
  f(x) = x + f(x - 1)
 手順は指定していないので大きい方から足していくかもしれないし、小さい方から足していくかもしれません。


 プログラムの規模が大きくなると、全体を一度に理解して作るのが非常に難しくなるので、ある程度まとまった機能を持った部品の集まりとしてプログラムを作ります。
 部品の中のプログラムを作るときは部品の外のプログラムのことは余り気にしなくて良いので楽ですし、部品を使う側も部品内部のプログラムの事はそれほど気にしなくて良いので楽という寸法です。
 オブジェクト指向はそうした大きなプログラムを整理して作るための手法の1つになります。

 C++やJavaは直接手順で計算方法を書くオブジェクト指向言語ですが、計算方法を関数型で書いてプログラム全体はオブジェクト指向で設計する言語があってもおかしくありません。

 関数型とオブジェクト指向は上位互換ではなく、互い併用したりしなかったりする物かと思います。
    • good
    • 0

全然違いますね。



関数型プログラミングに明確な定義は有りませんが、
関数や高階関数等を組み合わせた処理手法の部分
をいうことが多いですね。特にデーターフロ―処理を書くのに便利なのが
クローズアップされて語られます。
#この説明は専門家からは「狭い!」と言われるでしょうが
#全容を語るのは私には不可能です。

関数型プログラミング自体はLISPを起源として50年くらい前から有りますが
昨今、まずJavaの親戚言語scalaでその有用性が広く認められ
その後、Java等でも関数型プログラミングを扱えるように
機能拡張が施されました。

つまりOOPと組み合わせて使える別の技術ということです。
    • good
    • 0

全然違います。



とりあえずWikipediaでも読んでみましょう。
    • good
    • 0

あっていません。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!