削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎コメント: マークアップ修正
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
冒頭加筆
タグ: 2017年版ソースエディター
1 行
{{Pathnav|メインページ|工学|情報技術|プログラミング|frame=1}}
{{Wikipedia}}
Scalaは、静的型付けのオブジェクト指向プログラミング言語であり、関数型プログラミングの機能も備えています。Scalaは、Java仮想マシン(JVM)上で動作するため、Javaのライブラリとの互換性があります。また、Scalaは、Javaに比べてシンプルな構文を持ち、プログラミングの生産性を高めることができます。
本書は、[[w:Scala|Scala]]のチュートリアルです。
Scalaは、[[W:汎用プログラミング言語|汎用プログラミング言語]]の1つで、[[W:関数型プログラミング|関数型プログラミング言語]]と[[W:オブジェクト指向プログラミング|オブジェクト指向プログラミング言語]]のハイブリッドです。
 
本書では、Scalaの基本的な構文や概念、そしてよく使われるライブラリやフレームワークについて学ぶことができます。具体的には、以下の内容が含まれます。
<!-- イントロ長すぎ! 「はじめに」か「コラム」する構成を検討中 -->
Scalaのソースコードは、[[W:Javaバイトコード|Javaバイトコード]]にコンパイルされ、[[W:Java仮想マシン|Java仮想マシン]](JVM)上で実行することができます。
Scalaは、[[Java]] との相互運用性を提供しており、どちらの言語で書かれたライブラリもScalaやJavaのコードで直接参照できます。
Scalaは、Javaと同じくオブジェクト指向で、[[C言語]]に近いカーリーブラケット構文<ref>カーリーブラケットとは波括弧 <code>{}</code> のことで、コードブロックやデータブロックの表現に使われます。</ref>を持ちます。
Scala 3以降、ブロックの構造にオフサイドルール(インデント)を使用するオプションもあり、その使用が推奨されています。
Scalaは、Javaとは異なり関数型プログラミング言語([[Lisp]]・[[Scheme]]・[[OCaml]]・[[Standard ML]]・[[Haskell]] など)の多くの特徴を持っており、カリー化・イミュータブル性・遅延評価・パターンマッチが含まれます。
また、代数的データ型・共分散と共変量・高次演算子(ただしパラメトリック多相性は除く)や匿名型もサポートする先進の型システムも備えています。
その他、JavaにないScalaの特徴として、演算子オーバーロード・オプションのパラメータ・名前付きパラメータ・Raw文字列があります。
逆に、ScalaにないJavaの特徴として、チェック付き例外があり、これについての議論は続いています。
 
# Scalaの基本的な構文
Scalaという名前は、''scalable''と''language''の合成語で、ユーザーの要求に合わせて成長するように設計されていることを意味しています。
#* 変数や定数の定義
<!-- ベクトル・スカラー のスカラーは scalar です。英語では vector/ヴェクター・scalar/スケーラー に近い発音です。 -->
#* 制御フロー(if文、for文、while文)
#* 関数の定義と呼び出し
# オブジェクト指向プログラミング
#* クラスとオブジェクトの定義
#* 継承、ポリモーフィズム、カプセル化
#* ケースクラスやトレイトの使い方
# 関数型プログラミング
#* 関数型プログラミングの基本的な概念
#* 高階関数、無名関数、クロージャーの定義と使い方
#* パターンマッチングの使い方
# ライブラリやフレームワーク
#* AkkaやSparkなどの分散処理ライブラリ
#* Play FrameworkやAkka HTTPなどのWebアプリケーションフレームワーク
本書を読むことで、Scalaの基本的な構文やオブジェクト指向プログラミング、関数型プログラミングの概念を理解し、実際にライブラリやフレームワークを使ってアプリケーションを開発することができるようになるでしょう。また、Scalaの特徴や利点を理解し、Javaに比べた生産性の向上を体感することができます。
 
__TOC__