コンテンツにスキップ

Scala

Xuất điển: フリー bách khoa sự điển 『ウィキペディア ( Wikipedia ) 』
Scala
Scala
Scalaのロゴ
パラダイム オブジェクト chỉ hướng ngôn ngữ,Quan sổ hình ngôn ngữ
Đăng tràng thời kỳ 2003 niên(2003)
Thiết kế giả Martin Odersky
Khai phát giả LAMP/EPFL, Scala Center
Tối tân リリース 3.4.0 / 2024 niên 2 nguyệt 29 nhật[1]
Hình phó け Cường いTĩnh đích hình phó け
Chủ な処 lý hệ Scala
Ảnh hưởng を thụ けた ngôn ngữ Java,Haskell,Standard ML,OCaml,Smalltalk,Erlang
Ảnh hưởng を dữ えた ngôn ngữ Java,Chisel,F#,Kotlin,Flix
プラットフォーム Linux,Windows,Mac,JVM,JavaScript,Android
ライセンス Apache 2.0[2]
ウェブサイト The Scala Programming Language
拡 trương tử .scala
テンプレートを biểu kỳ

Scala( スカラ,SKAH-lah[3]) はオブジェクト chỉ hướng ngôn ngữQuan sổ hình ngôn ngữの đặc trưng を thống hợp したマルチパラダイムのプログラミング ngôn ngữである. Danh tiền の “Scala”は anh ngữ の “scalable language”に do lai するものである.

プラットフォーム[Biên tập]

Chủ にJavaプラットフォーム(Java仮 tưởng マシン) thượng で động tác し, kí tồn のJavaのプログラムと dung dịch に liên huề させることができる.

Đối ứng プラットフォーム

また, quá khứ には hạ ký のプラットフォームもサポートしていたが, hiện tại は khai phát が trung đoạn している.

Lịch sử[Biên tập]

Scalaは2001 niên にスイス・ローザンヌにあるスイス liên bang công khoa đại học (EPFL) giáo thụ のマーティン・オーダスキー(Anh ngữ bản)によって thiết kế された. マーティン・オーダスキーはFunnelという, quan sổ hình プログラミングとペトリネットとを hợp わせたプログラミング ngôn ngữ の khai phát に huề わっていた. オーダスキーは quá khứ にJavaのTổng xưng hình( ジェネリクス ) とjavacの khai phát に huề わった sự があった.

Scalaは2003 niên の mộ れに nội bộ で công khai された hậu, 2004 niên の thủy めにJavaのプラットフォームにリリースされ, 2004 niên の6 nguyệt に.NETのプラットフォームに công khai された. Ver2.0は2006 niên 3 nguyệt にリリースされたが,.NETのサポートは2012 niên に trung chỉ になった.

2021 niên 5 nguyệt 12 nhật, コードネームdottyと hô ばれていたコンパイラを bạt bổn đích に tái thiết kế して tác られたScala 3がリリースされ, đa くの cơ năng が truy gia された.[7]

また, hiện tại も hoạt phát に khai phát が続けられている.

Đặc trưng[Biên tập]

Chủ に dĩ hạ のような đặc trưng がある.

  • Khai phát sinh sản tính を cao める giản khiết な biểu ký が khả năng である.
  • Javaの phong phú なライブラリが sử える ( Scala.jsの tràng hợp, JavaScriptのライブラリが sử える ).
  • Toàn てがオブジェクトとして tráp われるオブジェクト chỉ hướng ngôn ngữ である.
  • Tĩnh đích hình phó けを hành う quan sổ hình ngôn ngữ である. Tĩnh đích hình phó けのため, コンパイル thời điểm でのエラー ( đặc に hình quan liên の ) kiểm xuất が đắc ý である.
  • Hình ( クラス ) をJavaなどと bỉ べてより dung dịch に tác ることができ, また, hình を sử った điều kiện phân kỳ をはじめとして, hình に quan する cơ năng が phong phú なため, メソッドやフィールドを thúc ねるだけのクラスではなく, hình に tích cực đích な ý vị を trì たせてのプログラミングが khả năng である.
  • Hình thôi luậnをサポートし, đa くの tràng diện で hình を tự động đích に bổ ってくれる.
  • Thuần 粋 quan sổ hình ngôn ngữ đích な, val ( định sổ ) と bất 変List, Set, Mapという tổ み hợp わせでもプログラミングできるし, より thủ 続き hình đích なvar ( 変 sổ ) と khả 変List, Set, Mapという tổ み hợp わせでもプログラミングができる.
  • Quan sổ もオブジェクトとして lợi dụng khả năng であり,カリー hóaが khả năng.
  • パターンマッチを lợi dụng khả năng であり, nhậm ý のクラスをグループ hóa してパターンマッチで phán định させることが khả năng ( caseクラス ).
  • implicit def と ngôn う tuyên ngôn を dụng いて, kí tồn のクラスを拡 trương したような ký thuật が khả năng.
  • traitクラスを dụng いた, Mix-in cơ năng を trì つ.
  • クロージャをサポートする.
  • XMLを trực tiếp プログラム nội bộ に ký thuật khả năng.
  • Trì diên bình 価のある quan sổ hình ngôn ngữ であるため, vô hạn リストを tráp え, tiêu chuẩn ライブラリにそのためのクラスが đề cung されている.
  • Cấu văn giải tíchのための,パーサーコンビネータ(Anh ngữ bản)が2.12まで tiêu chuẩn ライブラリに nhập っていた. 2.13 dĩ hàng は ngoại bộ ライブラリとなった.

Scala 3の tân cơ năng[Biên tập]

  • Pythonと đồng dạng のインデント cấu văn をサポート
  • Đại sổ đích データ hình の tân しい tiêu chuẩn をつくるために tái thiết kế されたEnumerations
  • Opaque Types. Boxingのオーバーヘッドを khởi こすことなく trừu tượng hóa できる tân たな trị hình
  • Intersection and union types. [A & B] や [A | B] と biểu hiện khả năng
  • Implicitsの văn pháp 変 canh
  • Dependent function types.
  • Polymorphic function types.
  • Type lambdas.
  • Match types.
  • Trait は class のように dẫn sổ をとれるようになった.
  • open classesの khái niệm を đạo nhập
  • traitsに transparent とマークすることで継 thừa をユーザーに công khai しない
  • Composition over inheritance. imports と đối xưng đích に, export clauses はオブジェクトの đặc định のメンバーへアクセスするためのエイリアスを định nghĩa する
  • No more NPEs.
  • メタプログラミングも đại phúc に cường hóa された

Lệ[Biên tập]

“Văn tự liệt の trung に'a'という văn tự が tồn tại するか phán định する” という lệ を cử げる.

Thủ 続き hình ngôn ngữ đích なコードを thư くと dĩ hạ のようになる.

defhasLowerCaseA(s:String):Boolean={
for(i<-0untils.length){
if(s(i)=='a')returntrue
}
returnfalse
}

Thượng のコードは, thiêm え tự を sử わずに, thứ のように thư くことができる.

defhasLowerCaseA(s:String):Boolean={
for(c<-s){
if(c=='a')returntrue
}
returnfalse
}

Thượng のコードは,トレイトscala.collection.Traversableを sử って, thứ のように thư くことができる.

defhasLowerCaseA(s:String)=s.exists(_=='a')

Điển hình đích な quan sổ hình ngôn ngữ では tái quy をよく sử う. Tái quy に trí き hoán えると dĩ hạ のようになる.

defhasLowerCaseA(s:String,i:Int=0):Boolean={
if(i==s.length)returnfalse
if(s(i)=='a')returntrue
returnhasLowerCaseA(s,i+1)
}

Bộ phân quan sổ[Biên tập]

ScalaのBộ phân quan sổ(partial function) は sổ học における đồng danh の khái niệm をもとにして sinh まれた cơ năng である. Cụ thể đích には,Định nghĩa vựcが chế hạn された quan sổ に tương đương する. Dĩ hạ は [-1, +1] の phạm 囲で2 thừa を kế toán する bộ phân quan sổ の lệ である.

valmyPartialSquare:PartialFunction[Double,Double]={
casexif-1<=x&&x<=1=>x*x
}

println(myPartialSquare(-0.5))// 0.25
println(myPartialSquare(0.9))// 0.81
println(myPartialSquare.isDefinedAt(1))// true
println(myPartialSquare.isDefinedAt(-10))// false
println(myPartialSquare(1.1))// MatchError

Scala khai phát の động cơ[Biên tập]

Martin Oderskyによると, Scala khai phát の động cơ は2つの仮 thuyết による.

  1. Phiếm dụng ngôn ngữ はスケーラブルでなくてはならない. Đồng じ khái niệm で, tiểu さいプログラムも đại きなプログラムも ký thuật できるべきである.
  2. スケーラビリティQuan sổ hình ngôn ngữオブジェクト chỉ hướngNgôn ngữ の2つのプログラミングの khái niệm を thống hợp し, nhất bàn hóa することにより thật hiện できる.

Lợi dụng lệ[Biên tập]

TwitterがバックエンドをRubyからScalaに2009 niênに di hành した[8]のを sơ め, đại hình のソフトウェアでの lợi dụng lệ がいくつか tồn tại する.

Thống hợp khai phát hoàn cảnh[Biên tập]

Dĩ hạ のThống hợp khai phát hoàn cảnhが Scala をサポートしている. Quát hồ nội の sổ tự は 2019 Scala Developer Survey での phục sổ hồi đáp ありでの lợi dụng している nhân の cát hợp[12].

Scala をベースにしたプログラミング hoàn cảnh としてKojoがある.

ビルドツール[Biên tập]

Apache MavenGradleなどの Java phiếm dụng のビルドツールも lợi dụng khả năng だが, Scala hướng けのビルドツールとして dĩ hạ の vật がある. Quát hồ nội の sổ tự は 2019 Scala Developer Survey での phục sổ hồi đáp ありでの lợi dụng している nhân の cát hợp[12].

  • sbt(93.6%)
  • Mill (4.1%)

Webアプリケーションフレームワーク[Biên tập]

Scala dụng の chủ なWebアプリケーションフレームワークとして dĩ hạ の vật がある.

Cước chú[Biên tập]

Quan liên hạng mục[Biên tập]

Ngoại bộ リンク[Biên tập]