Scalaというのはどのような言語でしょうか?
どんな特徴がありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答7件
0
Scalaの特徴が分かる例を、5つほど挙げてみます。
REPLを使っています。
Javaと違って、本当にすべてがオブジェクトです。プリミティブ型とかありません。
lang
1scala> Array(1, 2, 3, 4, 5) 2res0: Array[Int] = Array(1, 2, 3, 4, 5) // Intはオブジェクト ラッパーではない 3 4scala> Array(1, "2", 3) 5res1: Array[Any] = Array(1, 2, 3) // IntとString混合なのでAny 6 7scala> res0.sum 8res2: Int = 15 // 数値なのでそのまま足し算できる 9 10scala>
関数が第1級オブジェクトです。
lang
1scala> (x: Int, y: Int) => x + y 2res3: (Int, Int) => Int = <function2> 3 4scala> res3(5, 8) 5res4: Int = 13 6 7scala>
文字列表記のバリエーションが豊富です。
lang
1// マルチライン+桁揃え 2scala> val s = """ 3 | |aaa 4 | |bbb 5 | |ccc 6 | """.stripMargin 7s: String = 8" 9aaa 10bbb 11ccc 12 " 13 14// 文字列の補間 (string interpolation) 15scala> val param1 = 123 16param1: Int = 123 17 18scala> val s = s"param1=$param1" 19s: String = param1=123 20 21scala>
パターンマッチが便利です。
caseクラスや正規表現、抽出子を使うともっと便利です。が、書ききれないので簡単な例だけ。
lang
1scala> def f(x: Any) = x match { 2 | case x: Int => 1 3 | case true => 2 4 | case "abc" => 3 5 | case _ => 0 6 | } 7f: (x: Any)Int 8 9scala> f(3) 10res5: Int = 1 11 12scala> f(true) 13res6: Int = 2 14 15scala>
文字列も配列(Charの配列)のように扱えます。
lang
1scala> val s = "abcde" 2s: String = abcde 3 4scala> s.reverse 5res9: String = edcba 6 7scala> s.take(3) 8res10: String = abc 9 10scala>
(追記)
他にもたくさんありますが、書ききれないので箇条書きでさらにいくつか書いておきます。
・チェック例外が無い
・トレイト
・遅延評価 (lazy val)
・部分関数 (PartialFunction)
・Javaのライブラリーの多くが使える(ラップが必要な場合もけっこうある)
・XMLリテラル
・型推論
・文末にセミコロンが不要
・関数定義は式で完結する場合は波カッコ({}
)も不要
投稿2015/08/13 13:23
編集2015/08/14 02:19総合スコア9388
0
僕も学習中なので、詳しいことは書けません。
Scalaのチュートリアルの和訳が公開されているので、読んでみると面白いです。Scalaにstatic
なかったんや・・・。
投稿2015/08/13 12:48
編集2015/08/13 12:49退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
一言でいうと、静的関数型オブジェクト指向プログラミングができます。
これは例えば、オブジェクト指向プログラミングしかしたことない方が関数型プログラミングに触れてみたり、その逆をする際に、純粋関数型言語などより敷居は低くなり、学習コストも低くなります。
またJVM言語であるため、強力なJavaのライブラリが使え、できることの幅が大幅に広がります。
この点でも既にJavaを学習済みの方への学習コストが大きく下がります。
scalaは関数型言語の一面もありながら、すべての値がオブジェクトです。これはJavaよりも強くオブジェクト指向に沿った言語で有ることを意味します。ですのでもちろんプリミティブ型はありません
初学者向けの学習サイトだと以下の3つが便利です。参考までに置かせていただきます。
https://docs.scala-lang.org/
http://twitter.github.io/scala_school/
http://matt.might.net/articles/learning-scala-in-small-bites/
投稿2020/09/10 19:32
総合スコア25
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
1年近く前の質問ですが、"言語の特徴"ではなく、採用企業の傾向とかで回答を書いてみます。
チャットワーク
http://c-note.chatwork.com/post/117441269280/scala1year
新しく学習する題材を探してるときに出会ったブログ記事。
へぇーって感じです。ベターJavaよりも、PHPからの乗り換えの方がインパクトがあるように感じました。
PHPで作られているWeb系のシステムは多そうですからね。
ビズリーチ
http://www.slideshare.net/takezoe/scala-jissenscala-44962449
マイクロサービスとか(リアクト)とかを初めて知った記事。
以前から知っていた会社でしたので、Scala自体は本当に実用的な段階なんだなと感じた記事です。
ヌーラボ
https://nulab-inc.com/ja/blog/nulab/jissenscala/
タイプトーク
ここもScalaつながりで知った企業です。
本当に実用的に使われています。
エムスリー
こちらも医療業界では有名な企業と思われます(たまに会社名を新聞とかで見かけてました)。
過去にScalikeJDBCの開発者の方が所属されていたようです。
はてな
どこで採用されているか記事はでてませんでしたが、サンプルとかすごく参考になります。
ドワンゴ
こちらもすごく参考になる記事とかが出ています。
他も色々あるのでしょうが、まずは思いつく限り記載してみました。
最初に書いたURLに書かれているように、PHPではなく、
Scalaに書き換えて、サービスを成長させよう(させた)とかの企業が多いように感じます。
変に型をガチガチにコーディングしなくても、
コンパイラが賢く型チェックしてくれたりするところも、受けが良いのではと感じています。
せっかくクローズされてないので違う角度で回答を買いてみました。。。
投稿2016/05/16 14:08
総合スコア37
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
- ウィキペディア Scala https://ja.wikipedia.org/wiki/Scala
...
Scala(スカラ[1])はオブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語である。名前の「Scala」は英語の「scalable language」に由来するものである。
...
- Scala入門時に役立つ情報まとめ http://qiita.com/nesheep5/items/49019b9df4836d36ec1f
FizzBuzz問題を scala で書くとこんな風になります。
https://rosettacode.org/wiki/FizzBuzz#Scala
...
object FizzBuzz extends App {
1 to 100 foreach { n =>
println((n % 3, n % 5) match {
case (0, 0) => "FizzBuzz"
case (0, ) => "Fizz"
case (, 0) => "Buzz"
case _ => n
})
}
}
...
他の言語での書き方とも比較してみるとよいです。
参考:
-
FizzBuzz問題 http://scrap.php.xdomain.jp/fizzbuzz/
-
Scala使用歴5年のプログラマが、この言語とその環境に関する神話を解き明かす http://postd.cc/5-years-of-scala-and-counting-debunking-some-myths-about-the-language-and-its-environment/
投稿2016/04/23 07:19
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
言語的特徴は「型推論あり静的型付け関数型オブジェクト指向言語」って
思ってくれればだいたいつかめると思います。
他の古い言語にあまりない機能としてはtraitでMix-inぐらいでしょうか。
Scalaのもう一つの魅力はJavaVMで動作することです。
これは既存のJavaのライブラリをそのまま使えること、
Servlet等の既存環境をそのまま使えることを意味し、
今すぐそのままJavaから乗り換えることも可能です。
既存の資産を捨てなくてもいいというのは大きな利点です。
ただ、上の特徴は、ぶっちゃけ、GroovyとかJythonやJRubyでも
できることではあるんですけど、C#やJavaScriptとかにはないものなので、
言語選択のときの判断材料の一つとしては重要かと思います。
投稿2015/08/13 22:08
総合スコア21733
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
以下を参考に・・・
Scala
スケーラブルで関数型でオブジェクト指向なScala入門
面白そうなのでインストールしてみましたd^^;
投稿2015/08/13 09:51
総合スコア6851
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。