私はJavaの出身で、Scalaを学ぼうとしています。現在、私はかなり圧倒されていると感じています。Scalaで学ぶことはまだまだたくさんあり、同じことを行うためのさまざまな方法があるようです。
どこから始めればいいのか、そしてその言語で適度に有能だと感じるまでにどれくらいの時間がかかったのか、誰かアドバイスはあるのだろうかと思いました。
forループ内包表記のような小さなことでも本当に強力に見えますが、これは覚えておかなければならない構文のもう1つの断片です!
私はJavaの出身で、Scalaを学ぼうとしています。現在、私はかなり圧倒されていると感じています。Scalaで学ぶことはまだまだたくさんあり、同じことを行うためのさまざまな方法があるようです。
どこから始めればいいのか、そしてその言語で適度に有能だと感じるまでにどれくらいの時間がかかったのか、誰かアドバイスはあるのだろうかと思いました。
forループ内包表記のような小さなことでも本当に強力に見えますが、これは覚えておかなければならない構文のもう1つの断片です!
回答:
私はあなたがいるところにいて、ほとんど数回あきらめました。決して専門家の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年で探します:)
ScalaはJavaとはまったく異なる考え方なので、落胆しないでください。関数型の考え方を理解できるように、Java開発者向けの関数型プログラミングから始めると思います。
近くにJavaやScalaのユーザーグループはありますか?同僚と一緒に新しい言語を学ぶ方が常に簡単です。
頑張って頑張ってください!