Scalaを学ぶ、落胆した[閉じた]


9

私はJavaの出身で、Scalaを学ぼうとしています。現在、私はかなり圧倒されていると感じています。Scalaで学ぶことはまだまだたくさんあり、同じことを行うためのさまざまな方法があるようです。

どこから始めればいいのか、そしてその言語で適度に有能だと感じるまでにどれくらいの時間がかかったのか、誰かアドバイスはあるのだろうかと思いました。

forループ内包表記のような小さなことでも本当に強力に見えますが、これは覚えておかなければならない構文のもう1つの断片です!


Scalaはたいていの場合複雑な言語なので、落胆しないでください!逸話的に私は非常に有能なHaskellプログラマーであり、Scalaの方がはるかに複雑だと思っていました。Scalaの場合は、コンパイラと階段の本をお勧めしますが、それぞれの本に
Daniel Gratzer

励ましをありがとう!階段の本は何ですか?
jcm 2014


私は数年前にJavaの観点からScalaを試してみましたが、実際には理解できませんでした。最近、Scalaの関数型プログラミングに関するコースをCoursera.orgで始めました。これは、私のJavaのバックグラウンドが邪魔にならないほど大幅に異なるアプローチです。代わりに、不変のデータ構造、アルゴリズム、集合論、型理論、および実際の仕事で実践できない他のすべての楽しい事柄について考えることを(再)学んでいます。心配しないでください。現実の世界では、Scalaの実用性はまだ残っています。
BobDalgleish 14

2
Scalaは取り上げるべき大きな新しいエコシステムです(コア言語自体はそれほど大きくありません-ほとんどがライブラリーと概念です)。物事の浅い部分をしばらく使い続け、一度に1つのコンセプトを取り上げると、物事は本当にまとまり始めます。奇妙な料理の特別な構文のように見えるものは、通常、言語全体で抽象化できるもののより一般的なカテゴリに分類されます。しかし、それらが何であるかを理解するために、それは確かにいくつかの演奏と読書を必要とします。
KChaloux 2014

回答:


11

私はあなたがいるところにいて、ほとんど数回あきらめました。決して専門家のScala開発者ではありませんが、私は今、言語をしっかりと理解していると感じています。確かに、Javaとの関係を完全に害するほど十分です。

私が最初にしたことは、数週間かけて遊んだり、さまざまなブログを読んだり、言語の紹介をしたりすることでした。それは間違いでした。役に立つことはあまり学びませんでした(または少なくとも理解できませんでした)。

2つ目は、技術的に単純な問題を解決するために時間を費やすことでしたが、自分でScala構文の特定の側面を探らざるを得ませんでした。

これは私を一夜にして専門家に変えることはありませんでしたが、それは私が言語に慣れるのに十分であり、もはや不可能ではないと感じていませんでした。

その自信を高めて、私はついに私が始めるべきであったことを行いました:Martin Oderskyによる 『Scalaでのプログラミング』を取得し、数日おきに章全体を読むことを試みます。それはよく書かれた包括的な本であり、あなたがすでに健全なプログラミングのバックグラウンドを持っているなら、あまりに難しいことを証明すべきではありません。最初に読むのに苦痛を感じる必要はありません。オプションとしてマークされた部分をスキップし、概念を理解していることを確認してください。スキミング)。概念が存在することと、それがどのように機能するかについての包括的な説明をどこで読むかを知ることは、非常に役立ちます。

本を読む代わりに、Courseraクラスに参加することもできます。コースはそれほど包括的ではありませんが、重要なポイントのほとんどをカバーしており、扱いやすい論理単位に分類されています。一方、クラスが完了するとレッスンにアクセスできるかどうかはわかりません。また、誰か(Martin Ordeskyのように賢くて知識のある人でも)を聞いているときは、本を読むとき。

Scalaのもう1つの問題は、摂取しなければならない語彙の量です-名前別パラメーターですか?理解のため?閉鎖?これに圧倒されていると感じた場合は、Scala用語集と対象を絞ったスタックオーバーフロー検索をうまく組み合わせると、非常に役に立ちました(Daniel SobralとTravis Brownの回答を探してください)。実際、用語集を使って「あんき」のデッキを作るところまで行きましたが、とても助かりました。

最後に、これはおそらく明白ですが、コード、コード、コードです。些細なことでも、取り組むことができるサイドプロジェクトを見つけましょう。私がしたことは、興味のある著者が新しい本をリリースするたびにツイートを送信してくれる非常にシンプルなAmazonクローラーを作成することでした。思ったより時間がかかったのですが、そのとき私はその言語に夢中になりました。

ここまで進んだら、おそらく何もする必要はないでしょうが、言語を理解したら、基本的な概念をさらに深く掘り下げることをお勧めします。あなたはOOPに精通しているので、関数型プログラミングについて読んでみてください-私はそれがあなたの心を吹き飛ばすであろうことを絶対的に確信しています。Scalaの関数型プログラミングはすぐにリリースされるはずですが、早期アクセス版はすでに優れています。別の答えは、Java開発者向けの関数型プログラミングを示唆していますが、これはよく知らないものですが、良いと信じる傾向があります(O'Reillyの本は、少なくともスキミングする価値がありませんでしたか?)。

これが長すぎて明白にならないことを願っています。正直にあなたが最高であることを願っています。Scalaには欠点がありますが、それは素晴らしい言語であり、あなたが存在することを知らなかった方向にあなたの脳を導きます。そして、私はあなたの「Haskellを学ぶ、落胆した気分」を1年で探します:)


3

ScalaはJavaとはまったく異なる考え方なので、落胆しないでください。関数型の考え方を理解できるように、Java開発者向けの関数型プログラミングから始めると思います。

近くにJavaやScalaのユーザーグループはありますか?同僚と一緒に新しい言語を学ぶ方が常に簡単です。

頑張って頑張ってください!


さらに、興味のある分野に関してScalaフレームワークまたはツールキットを確認することをお勧めします。あなたが好きなプロジェクトを持っている私の経験では、物事が簡単になります。たとえば、並行アプリケーションまたは分散アプリケーションを使用する場合は、Web開発またはAkkaを使用しているときに、LiftまたはPlayフレームワークを確認してください。
juwi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.