Scala
Scalaのロゴ | |
パラダイム | オブジェクト chỉ hướng ngôn ngữ,Quan sổ hình ngôn ngữ |
---|---|
Đăng tràng thời kỳ | 2003 niên |
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 |
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 プラットフォーム
- Scala -Javaプラットフォーム
- Scala.js[4]- Scala からJavaScriptへとトランスパイルする.
- Scala Native[5]-LLVMを sử dụng し, マシンネイティブの thật hành ファイルを xuất lực
また, 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ụ のマーティン・オーダスキーによって 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のための,パーサーコンビネータが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 による.
- Phiếm dụng ngôn ngữ はスケーラブルでなくてはならない. Đồng じ khái niệm で, tiểu さいプログラムも đại きなプログラムも ký thuật できるべきである.
- スケーラビリティは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 する.
- FoursquareはScalaとLiftフレームワークを lợi dụng している[9].( LiftはRuby on RailsLoại tự の cơ năng を trì つScala thượng のフレームワーク )
- イギリスの đại thủTân vănガーディアンは2011 niên4 nguyệtウェブサイトの vận dụng をJavaからScalaに di hành すると phát biểu した.
- スイス ngân hành
- ニコニコ sinh phóng tống
- Apache Spark
- スタディサプリ
- Microsoftの cơ giới học tập ライブラリSynapseMLはScalaで khai phát されており, その khai phát giả は “Tư たちはScalaが ngôn ngữ の nữ vương だと cảm じているのでほとんどScalaでしか khai phát しません”[10]とコメントしている.
- LEGO[11]
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].
- IntelliJ IDEA(88.6%)
- Visual Studio Code+ Metals (26.1%)
- Eclipse(2.7%)
Scala をベースにしたプログラミング hoàn cảnh としてKojoがある.
ビルドツール[Biên tập]
Apache MavenやGradleなどの 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]
- ^Xuất điển URL:https://github.com/scala/scala3/releases/tag/3.4.0,Đề danh:Scala 3.4.0
- ^dotty/LICENSE at release-3.0.0 · lampepfl/dotty
- ^Scala: Martin Odersky, Scala -- the Simple Parts
- ^Scala.js
- ^Scala Native — Scala Native documentation
- ^A Brief History of Scala
- ^[1]
- ^The Secret Behind Twitter's Growth
- ^Scala, Lift, and the Future
- ^Announces General Availability of SynapseML
- ^Woof, a pure Scala 3 logging library
- ^ab2019 Scala Developer Survey