web-dev-qa-db-ja.com

Scalaを学ぶ、がっかりする

私はJava=バックグラウンドから来て、Scalaを学習しようとしています。現在、私はかなり圧倒されていると感じています。同じことをしています。

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

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

9
jcm

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

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

2つ目は、技術的に単純な問題を解決するために時間を費やすことでしたが、Scala構文の特定の側面を自分で調査する必要がありました。

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

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

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

Scalaのもう1つの問題は、摂取する必要がある語彙の量です-名前ごとのパラメーターですか?理解のため?閉鎖ですか?これに圧倒されていると感じた場合、 Scala Glossary と対象を絞ったスタックオーバーフロー検索は、私を大いに助けてくれました(Daniel SobralとTravis Brownの回答を探してください)実際、私は Anki =用語集付きのデッキ、そしてそれは大きな助けだったと感じています。

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

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

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

11
Nicolas Rinaudo

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

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

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

3
Martijn Verburg