最近のWeb開発だとScalaの採用事例がとても増えています。
Scalaを使われている方、ぜひその使い心地を回答していただけますか?
使ったことのあるプログラミング言語と、Scalaを使うようになって何がうれしいか、回答いただけますと嬉しいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
1つ目は、やはり、関数型プログラミングでしょう。
Scalaは、関数しか許されない世界と比べると、とっつきやすいんだと思います。
特にJava経験者にとっては、Javaとほとんど同じようにも書けるし、部分的に関数型プログラミングで書くこともできます。
2つ目は、 ** Apache Spark** が話題になったことに関係しているのではと思います。Sparkのことは説明できるほど知らないので、Googleにお任せします。
Apache Spark とは - Google 検索
個人的には、 Better Java としてScalaが気に入っています。
私はJava歴が長いのですが、以前、他の言語と比べて「Javaも、せめてこの機能だけでもあったらなあ」と思った機能がいくつかありました。Java8までにだいぶ改善されてきましたけどね。この機能には、いわゆるJavaバッドパーツとして知られているものを含みます。
ある日Scalaについて学んでみたら、Javaユーザーにとって親しみやすい上に、その欲しいと思っていた機能がほとんどScalaに備わっていることが分かったのです。
コンパイルが遅いのだけは残念です。
投稿2015/08/12 12:08
総合スコア9388
0
ScalaはJavaと互換性があり、Javaに比べコード量が少なくなることが特徴で、それに加えてPlay Frameworkの登場が注目を集める理由になっていると思います。
Javaよりもコード量を少なくするために、関数型言語の機能や文法が取り入れられていますが、関数型であることよりもコード量が少ないというところが重要です。
Javaと互換性がありコード量が少ないだけなら、Groovyでも同じことが言えますが、Play FrameworkによってScalaの方が優位になっていると思います。つまり、Scalaの方が実用的であるということです。
Web開発でのJavaのシェアは大きいですが、Scalaはそれを置き換えるだけの力があると考えられているのだと思います。
もし、置き換えられればコード量が少なくなる分、開発工数も減ると考えられますので、そこが注目を集める大きな理由なのだと思います。
投稿2015/08/12 14:33
総合スコア2183
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/12 14:57
0
残念ながら、自分は全くの初心者なので、個人的な経験をお伝えできないのですが、深く関心を持っておりますので、ちょっとだけコメントします。
自分の関わっている案件では、学習コストの高い Scala を敢えて採用するような要件はないので、どうしても個人的に触ってみる程度の域を脱し切れません。
argiusさん、Stripeさん が回答されているように、純粋な関数型プログラミングができる上にJavaとも互換性があるので、特にJava使いの皆様にとっては入って行きやすいのだと思います。
ただ、(初学者なので持論を展開できるようなベースがないのですけれども)Java的なアプローチを超えたところに、本当の『旨味』があるのだろうと想像しつつ学習に励んでいるところです。
まだ理解できない部分が多いのですが、とても興味深い記事があったので、ご参考までにリンクを貼り付けておきます。
Scala採用を決めて一年たった、CTOの雑感
Java 8とScala ‐アプローチの違いと相互イノベーション
私がScalaを選んだ理由
投稿2015/08/12 19:45
総合スコア5936
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/08/18 14:58
0
ちゃんと学んだ訳ではないですが、使っている感じとしてメリットに上げられるのは、
1.関数型
2.静的型付け
3.オブジェクト指向
4.javaとの互換性
5.処理速度
の5つですね。
それぞれ簡単に説明すると(もっと詳しい人、間違ってたらご指摘ください)
1.関数型
関数型で無い言語でプログラミングしていると、
メソッドの中で変数の値が書き換わったり、見えない副作用があるので、
メソッドの中身を細かく理解していないと怖くて使えないことがあります。
実際は副作用がないメソッドでも、その可能性があるだけで実装作業の負荷になります。
関数型言語だと、基本は変数の中身を書き換えること不可としているため、
その辺りのケアが大分楽になります。
#scalaは厳密な関数型言語ではないので、一部そのルールを破れてしまうところがあるのですが、
#基本的には関数型となっています。
2.静的型付け
動的型付け言語は、実行時に変数の型が決まり、
静的型付け言語は、コンパイル時に変数の型が決まる言語です。(だと思っています)
静的型付けだと、型を適当に実装して動いてくれる可能性もあるのですが、
実行時に型が合わないエラーを引き起こす可能性もあります。
また、そのエラーが起きないことを確認するために、諸々のテストが必要になります。
静的型付け言語は、コンパイル時に型が決まる=コンパイラーが型をチェックしてくれる、ので
型が間違っている事によるバグが起こらず、
テストの手間が大幅に減ります。
3.オブジェクト指向
scalaは関数型言語でありながら、オブジェクト指向言語でもあります。
オブジェクト指向のメリットについてはご存知だと思います。
この両面の良さがミックスインされているのは大きいですね。
4.javaとの互換性
scalaはjavaの資産を流用でき、
scalaで欲しいライブラリが見つからない時なども、javaのライブラリを使うことで代用できたりします。
このjavaとの互換性は、まだまだscala人口が少ない昨今では重宝します。
また、言語仕様もjavaに近いので、java経験者ならそれなりに取っ付き易いという点も挙げられます。
5.処理速度
処理速度については比較しているブログや文献が多々あるのでご存知だと思いますが、
scalaはほぼjavaと同じぐらいの処理速度があります。(若干劣りますが。)
RubyやPythonなどに比べると処理速度は桁違いなので、
即応性が求められるシステムなどにも使えます。
あとは、実際開発していて、開発スピードは早くなった実感があります。
Ruby等より最初に学ぶことが多く、イニシャルコストは掛かりますが、
慣れると良い言語ですね。
投稿2015/08/18 04:27
総合スコア22
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/08/18 14:56
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/08/12 14:20
退会済みユーザー
2015/08/19 16:38