質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

Q&A

7回答

3090閲覧

Scalaというのはどのような言語でしょうか?

fwe

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

0グッド

1クリップ

投稿2015/08/13 09:31

Scalaというのはどのような言語でしょうか?
どんな特徴がありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
argius

総合スコア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

soshiharami

総合スコア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

simple-teq

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

...
Scala(スカラ[1])はオブジェクト指向言語と関数型言語の特徴を統合したマルチパラダイムのプログラミング言語である。名前の「Scala」は英語の「scalable language」に由来するものである。
...

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
})
}
}

...

他の言語での書き方とも比較してみるとよいです。

参考:

投稿2016/04/23 07:19

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

言語的特徴は「型推論あり静的型付け関数型オブジェクト指向言語」って
思ってくれればだいたいつかめると思います。
他の古い言語にあまりない機能としてはtraitでMix-inぐらいでしょうか。

Scalaのもう一つの魅力はJavaVMで動作することです。
これは既存のJavaのライブラリをそのまま使えること、
Servlet等の既存環境をそのまま使えることを意味し、
今すぐそのままJavaから乗り換えることも可能です。
既存の資産を捨てなくてもいいというのは大きな利点です。

ただ、上の特徴は、ぶっちゃけ、GroovyとかJythonやJRubyでも
できることではあるんですけど、C#やJavaScriptとかにはないものなので、
言語選択のときの判断材料の一つとしては重要かと思います。

投稿2015/08/13 22:08

raccy

総合スコア21733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以下を参考に・・・
Scala
スケーラブルで関数型でオブジェクト指向なScala入門
面白そうなのでインストールしてみましたd^^;

投稿2015/08/13 09:51

cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cateye

2015/08/13 09:54

REPLってこんな感じです。 ~ > scala Welcome to Scala version 2.11.6 (OpenJDK 64-Bit Server VM, Java 1.7.0_80). Type in expressions to have them evaluated. Type :help for more information. scala> println("Hello World") Hello World scala> :quit ~ >
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問