45

Scala vs Haskell など、両方の言語の利点やどちらを学ぶべきかについて議論している質問をいくつか読みましたが、Scala を学びたいと思っていることはすでにわかっています。私は大学で Java プログラマーをしていましたが、現在は主に PHP を使用しています。

個人的なプロジェクトのために Java を改良したように見えるので、Scala を学びたいと思っています。また、プログラマーとしての知識を向上させるために関数型言語も学びたいと考えています。

Haskell は純粋に関数型であるため、関数型プログラミングの入門として Haskell を学ぶのは良い考えではないかと思います。そのため、Scala で関数型のビットを無計画に使用するのではなく、理由を知らずに適切に学習しますか?

Haskell は見栄えが良いので、個人的なプロジェクトなどにも使用したいと思いますが、現実世界でのアプリケーションはあまり見られず、学術的なものに使用されているようです。スカラに。

4

6 に答える 6

86

Java から来て、Scala が Haskell へのゲートウェイドラッグだった者として言えば、これは素晴らしいアイデアだと思います (最初に Haskell を学びましょう)!

Haskell は概念的には Scala よりもはるかに単純な言語であり、関数型のプログラミング方法を学習することが目標である場合、Haskell から始めればそうせずにはいられません。設計上、Scala は一種の「レガシー モード」のコーディングをサポートしています。このモードでは、Java (または PHP) の習慣を大幅に変更する必要はありません。これは戦略的な決定であり、良い決定だと思います!--それは、無愛想な Java の支持者の間での採用を増やすことを意味しています。

しかし、それはあなたではありません!あなたは実際に何か新しいことを学ぶことに興味があります...それなら、全力を尽くしてみませんか? 雑然とした環境や古い習慣に逆行する誘惑のない、純粋な環境で関数型プログラミングを学ぶことで、脳内の概念が具体化されます。

それなら、ぜひ Scala に戻って、Haskell との違いを学んでください。いくつかの点で弱く、他の点で強いですが、これらの違いを理解するためのはるかに優れた基盤になります.

于 2011-09-29T08:38:58.813 に答える
17

私は Java の背景から Scala に来ました。最初は、より優れた Java として Scala に焦点を当てていました。時間が経つにつれて、Scala でより多くの関数型の概念を使用するようになりました。最終的に、関数型プログラミングをもっと純粋に理解する必要があると感じるようになりました。私がHaskellを学び始めたのはこの時でした。

Scala に戻ると、関数型スタイルを使用する方がはるかに簡単であることがわかり、以前は苦労していた概念のいくつかがより理にかなっていることがわかりました。

優れた Scala 開発者になるために Haskell を学ぶ必要はありませんが、関数型プログラミングの概念をより深く理解することは、Scala のある程度のレベルに達すると非常に役立つと思います。

于 2011-09-29T08:46:12.913 に答える
17

私はそれをしません。Scala (最終目標) に直行すれば、時間を節約できます。とにかく関数型プログラミングを学びますが、Scala は「あまり純粋ではない」ため、Java のような構造を使用して Scala でプログラムを書き始めることができ、移行がより簡単になります。

Haskell に入ったとしても、最初のプログラムは後のプログラムよりも「機能的な品質」が低くなります。Scala を開始すると、最初のプログラムは Java や PHP の最初のプログラムのように「品質が低く」なりますが、練習すれば改善されます。役立つかもしれないと期待して無関係なタスクに時間を費やすと、その時間を無駄にする可能性があります。

あなたの目的に集中してください。それがScalaなら、それを試してみてください。

更新:これは質問に関連している可能性があると思います。生産性 (ソフトウェアの配布) と「純粋な知識」を求めることのポイントを上げます。

于 2011-09-29T08:23:02.517 に答える
7

純粋に関数型のプログラミング言語を最初にプレイせずに Scala から直接始めることのリスクは、手続き型のソリューションに惹きつけられることが多すぎることです。

ただし、関数型プログラミングの入門として Haskell を試すつもりはありません。特に難しいというわけではありません。その構文は驚くほど簡潔です。 Racket やプレーンな Scheme のように、より簡単に Scala に移植できる言語。

私の言いたいことをよりよく理解するには、Haskell、Scala、Scheme のリスト内包表記を見てください。

于 2011-09-29T09:14:11.663 に答える
4

最初に Haskell を学び、次に Scala を学びましたが、後悔したことはありません。最初に Haskell を学べば、FP の理解が深まります。FP の背後にある概念と、それらが重要である理由についての理解が深まります。Scala の多くは Haskell (IMHO) から取られています。Haskell のバックグラウンドがある場合は、より理にかなっています。遠慮しないで!あなたの努力は報われるでしょう。

于 2011-10-06T03:12:55.653 に答える
0

私にとっては、Scala と関数型プログラミングを学びたいと思っています。したがって、単純に、私は Scala を学んでいます。私の学習教材はProgramming Scalaです。syntx などに関する初期の章を読んだ後、OO に関する章をスキップして、関数型プログラミングに関する第 8 章にジャンプしました。そこで私はFPと格闘しました。

FP 方式で記述されたこのscala コードを読み取り、解析ます。あなたは「... 個人的なプロジェクトのための Java の改良」のために Scala を学びたいと考えています。FPイントロ用のHaskell。ということで、まずはJavaプロジェクトの生産性を上げて、副作用としてFPを把握したいと思われます。生産性を高めるには、言語を習得する必要があります。言語を習得して習得することはたくさんありますが、言語を習得する唯一の方法は、その言語でコードを書かなければならないことです。Scala を学習/使用していると、FP アウトを避けたくても避けられません。私は Scala のブログ (本も) を読んでいて、著者はいつもFPのコンセプトに関しては、わざわざ説明をしてくれます。Scala ルートを進むことで FP を把握できなくなる心配はありません。はい、 Scala を学んでいるときに、このように Haskell からインスピレーションを得ることができます。または、上記のChris Turnerが指摘したように、Scala で既に生産的になっている場合は、さらに FP を掘り下げることができます。

あなたはポイントAに行きたいのですが、ポイントAに直接行かないのはなぜですか? ポイント B (Haskell) のルートを経由する場合、Pere Villegaが述べたように、生産性を延期する必要があります。

于 2011-11-08T23:16:08.693 に答える