**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

Зноскі
------

1. ↑  Notice file **(нявызн.)**. *GitHub* (24 студзеня 2019). Праверана 4 снежня 2019.
2. ↑  Loverdo, Christos (2010). *Steps in Scala: An Introduction to Object-Functional Programming*. Cambridge University Press. p. xiii. ISBN 9781139490948.. Retrieved on 2023-7-16.
3. ↑  Roundup: Scala as the long term replacement for Java (англ.). Праверана 16 ліпеня 2023.
4. ↑  *Odersky, Martin*. A Brief History of Scala **(нявызн.)**. *Artima.com* (9 чэрвеня 2006).
5. ↑  *Kmetiuk, Anatolii*. Scala 3 is here! **(нявызн.)**. *scala-lang.org* (14 мая 2021).

Літаратура
----------

* Odersky, Martin; Spoon, Lex; Venners, Bill (15 December 2019). *Programming in Scala: A Comprehensive Step-by-step Guide* (4th ed.). Artima Inc. pp. 896. ISBN 978-0-9815316-1-8. .
* Horstmann, Cay (15 December 2016). *Scala for the Impatient* (2nd ed.). Addison-Wesley Professional. p. 384. ISBN 978-0-134-54056-6. .
* Wampler, Dean; Payne, Alex (14 December 2014). *Programming Scala: Scalability = Functional Programming + Objects* (2nd ed.). O'Reilly Media. p. 583. ISBN 978-1-491-94985-6. .

Спасылкі
--------

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

| ⛭Мовы праграмавання |
| --- |
| 
* Ada
* ActionScript
* ALGOL
* APL
* Асэмблер
* BASIC
* C
* C++
* C#
* COBOL
* Delphi
* Erlang
* Forth
* Fortran
* Go
* Haskell
* Java
* JavaScript
* Kotlin
* Lisp
* Logo
* Lua
* Modula-2
* Objective-C
* Pascal
* Perl
* PL/I
* PHP
* Prolog
* Python
* R
* Ruby
* Rust
* Scala
* SQL
* Scheme
* Smalltalk
* Swift
* Zig
* *больш...*

 |
| List-Class article Спіс паводле катэгорый |