Scala (мова праграмавання)

Scala (Ска́ла) — высокаўзроўневая мультыпарадыгменная мова праграмавання, якая адначасова падтрымлівае аб’ектна-арыентаванае і функцыянальнае праграмаванне. Назва мовы Scala складаецца са слоў scalable language («маштабуемая мова») і азначае, што мова была распрацавана, каб расці разам з патрабаваннямі карыстальнікаў.

Кампілятар Scala ператварае зыходны код у байт-код Java, праграма запускаецца на віртуальнай машыне Java (JVM). Такім чынам, праграмы на Scala з’яўляюцца сумяшчальнымі з існуючымі праграмамі на Java і могуць выкарыстоўваць бібліятэкі Java. Паколькі праграмы для Android звычайна пішуцца на Java, Scala можна таксама выкарыстоўваць для распрацоўкі пад Android.

Існуе таксама кампілятар Scala.js, які ператварае зыходны код на Scala у JavaScript, што дазваляе пісаць праграмы на Scala для вэб-браўзераў, а таксама серверныя праграмы з выкарыстаннем Node.js.

Выказваюцца думкі, што ў доўгатэрміновай перспектыве Scala можа замяніць Java.

 Гісторыя 
Распрацоўка Scala пачалася ў 2001 годзе ў Лазанскай федэральнай політэхнічнай школе прафесарам Марцінам Адэрскі. Адэрскі раней працаваў над джэнерыкамі ў Java і кампілятарам Java ад Sun. У верасні 2003 года быў апублікаваны першы драфт спецыфікацыі мовы. Рэліз Scala на платформе JVM адбыўся ў студзені 2004 года. У сакавіку 2006 года была выпушчана версія 2.0. У маі 2021 года выйшла версія 3.0.

 Характарыстыкі 

Scala падтрымлівае аб’ектна-арыентаванае праграмаванне і з’яўляецца чыстай аб’ектна-арыентаванай мовай у тым сэнсе, што кожнае значэнне, уключаючы прымітыўныя тыпы, з’яўляецца аб’ектам. Тыпы даных і паводзіны аб’ектаў апісваюцца класамі і трэйтамі (аналаг інтэрфейсаў у Java). Абстракцыі класаў пашыраюцца за кошт падкласаў і гнуткага механізму кампазіцыі на аснове міксінаў, каб пазбегнуць праблем множнага наследавання.

Падтрымліваючы ўсе аб’ектна-арыентаваныя функцыі, даступныя ў Java (і, па сутнасці, дапаўняючы іх рознымі спосабамі), Scala таксама забяспечвае вялікую колькасць магчымасцей, якія звычайна ёсць толькі ў функцыянальных мовах праграмавання. Разам гэтыя магчымасці дазваляюць пісаць праграмы на Scala ў амаль цалкам функцыянальным стылі, а таксама дазваляюць змешваць функцыянальны і аб’ектна-арыентаваны стылі. Напрыклад, Scala мае адкладзеныя вылічэнні, ананімныя функцыі, замыканні, функцыі вышэйшага парадку, карыраванне і картэжы.

 Прыклад 
Прыклад напісання праграмы Hello world у Scala 3:
@main def main() = println("Hello, World!")

Калі праграма захоўваецца ў файле HelloWorld.scala, карыстальнік кампілюе яе з дапамогай каманды:

 $ scalac HelloWorld.scala

і запускае з дапамогай

 $ scala HelloWorld

Гэты працэс аналагічны працэсу кампіляцыі і запуску кода Java, што робіць Scala сумяшчальнай з інструментамі зборкі Java, такімі як Apache Ant.

Больш кароткая версія праграмы «Hello World» на Scala можа быць напісана наступным чынам:

println("Hello, World!")

 Выкарыстанне 
Scala выкарыстоўваецца мноствам вядомых кампаній, напрыклад:

 У красавіку 2009 года Twitter абвясціў, што перавёў вялікую частку кода з Ruby на Scala.
 Кампанія Tesla Inc. выкарыстоўвае фрэймворк Akka разам са Scala у сервернай частцы віртуальнай электрастанцыі Tesla.
 Apache Spark — аналітычны рухавік для кластарных вылічэнняў з адкрытым зыходным кодам, напісаны на Scala.
 Apache Kafka — размеркаванае сховішча паведамленняў і платформа для іх апрацоўкі, напісана на Scala.
 Кампанія Foursquare выкарыстоўвае Scala і фрэймворк Lift у сваіх прадуктах.
 Кампанія Coursera выкарыстоўвае Scala і фрэймворк Play.
 Apple выкарыстоўвае Scala ў некаторых камандах разам з Java і фрэймворкам Play.
 SoundCloud выкарыстоўвае Scala разам з такімі тэхналогіямі, як Finagle, Scalding і Spark.

 Гл. таксама 
 Haskell
 Scheme

 Крыніцы 

 Літаратура 




 Спасылкі 
 Афіцыйны сайт мовы праграмавання Скала
 Афіцыйны рэпазіторый Скала на GitHub
 Сайт sbt, сістэмы зборкі для Скала-праектаў
 Дакументацыя па мове Скала

Катэгорыя:Мовы праграмавання
Катэгорыя:Свабодныя кампілятары і інтэрпрэтатары
Катэгорыя:Свабоднае кросплатформавае праграмнае забеспячэнне
Катэгорыя:Праграмнае забеспячэнне, распрацаванае ў 2003 годзе
Катэгорыя:Скрыптовыя мовы
Катэгорыя:Аб’ектна-арыентаваныя мовы праграмавання
Катэгорыя:Функцыянальныя мовы праграмавання
Катэгорыя:Мовы праграмавання высокага ўзроўню