Scala — мультипарадигмова мова програмування, що поєднує властивості об'єктно-орієнтованого та функційного програмування. Назва Scala утворена зі слів «scalable» (масштабовна) та «language» (мова), для того щоб задекларувати, що мова може рости разом з вимогами користувачів.
Scala | |
---|---|
Парадигма | декілька парадигм: функційна, об'єктно-орієнтована |
Дата появи | 20 січня 2004 |
Творці | Мартін Одерски |
Розробник | Мартін Одерски |
Останній реліз | 2.12.12 (13 липня 2020 ) |
Система типізації | вивід типів, статична, строга типізація і structural typingd |
Під впливом від | Java, Pizza, Haskell, Erlang, Standard ML, Objective Caml, Smalltalk |
Мова реалізації | Scala |
Платформа | віртуальна машина Java, JavaScript і native[d] |
Операційна система | Багатоплатформна |
Ліцензія | Scala License (похідна від BSD) |
Звичайні розширення файлів | .scala або .sc |
Репозиторій вихідного коду | github.com/scala/scala |
Вебсайт | www.scala-lang.org |
Історія Редагувати
Розробка Scala почалася у 2001 році у Федеральній політехнічній школі Лозанни (фр. École polytechnique fédérale de Lausanne, EPFL) Мартіном Одерски. Перед цим Одерски створив узагальнення в Java і javac, компілятор мови Java.
- 2001 — початок розробки як практичнішого спадкоємця Funnel
- 2003 — перший експериментальний випуск, навчальний курс в університеті
- 2004 — стаття Scalable Component Abstractions, перша публічна версія
- 2005 — Scala 2.0, реалізована на Scala (перша версія — на Java), зріла версія
- 2007 — перший випуск Lift
- 18 грудня 2007 — доступна рання версія книги Programming in Scala
- 2008 — Twitter використовує Scala, перша конференція Scala Lift Off
- 17 листопада 2008 — вийшла книга Programming in Scala [ 19 липня 2009 у Wayback Machine.]
- 2009 — підтримка IDE, виходять англійською мовою 3 книжки про Scala і одна про Lift
- 2010 — конференція ScalaDays, виходять 3 книжки японською мовою
17 січня 2011 команда Scala виграла п'ятирічний дослідницький грант на €2.3 мільйонів від Європейської дослідницької ради. 12 травня 2011 Одерски разом з іншими зацікавленими у розвитку Scala заснував Typesafe Inc., компанію для надання комерційної підтримки, навчання і послуг для Scala.
Платформа Редагувати
Програми мовою Scala виконуються на віртуальній машині Java за умови приєднання до дистрибутиву файлу scala-library.jar
. Scala сумісна із існуючими програмами мовою Java, тобто код Scala може викликатися із Java-програм і навпаки. Починаючи з версії 2.11 Scala потребує принаймні Java 6, а версія 2.12 потребуватиме Java 8 та матиме кращу інтеграцію із новими можливостями цієї версії Java.
У лютому 2015 року після двох років розробки випущено стабільну версію Scala.js — компілятора мови Scala у JavaScript.
До версії 2.11 існувала експериментальна реалізація для платформи .NET. Дистрибутив Scala, включно з компілятором і бібліотеками, випущено під BSD-похідною ліцензією.
Мова Редагувати
Вплив Редагувати
На Scala вплинуло багато мов. Однорідна об'єктна модель вперше з'явилася у Smalltalk і згодом у Ruby. Універсальність вкладеності присутня у Algol, Simula, Beta. Принцип однорідного доступу для виклику методу і звернення до поля походить з мови Eiffel. Підхід до функційного програмування подібний до підходу родини мов ML, таких як SML, OCaml і F#. Багато функцій вищого порядку у стандартній бібліотеці Scala також наявні у ML або Haskell. Неявні параметри у Scala аналогічні класам типів Haskell. Заснована на акторах бібліотека багатозадачності подібна до Erlang.
Змінні Редагувати
Методи Редагувати
Починаючи з версії 2.8 Scala підтримує значення аргументів за умовчанням та іменовані аргументи. Методи у Scala можуть бути вкладеними, вкладений метод бачить змінні зовнішнього. Зазвичай параметри до методу передаються за значенням (Call-by-Value) — значення аргументів обчислюється перед викликом методу і передаються до методу. Scala підтримує також передачу параметрів за назвою (Call-by-Name). У цьому разі в метод передається вираз, але обчислюється не під час виклику методу, а під час кожного звернення до нього в тілі методу.
Рівні доступу Редагувати
За умовчанням рівень доступу до членів класу у Scala є загальнодоступним (public
).
Відкриття доступу підкласам (protected
), так само як у C++ і C# відкриває доступ лише підкласам, на відміну від Java, в якій protected
також отримують доступ усі класи того самого пакету. Члени з видимістю protected
доступні у інших екземплярах цього ж класу, але нащадки не мають доступу до protected
членів інших екземплярів своїх базових класів (так само як і в Java).
Члени з видимістю private
доступні лише у екземплярах цього ж класу. У Java private
обмежує доступ на рівні класу найвищого рівня вкладеності, тобто зовнішній клас може одержати доступ до private
члена внутрішнього вкладеного класу, що не дозволяє Scala.
У Scala protected
і private
можуть мати кваліфікатор доступу у квадратних дужках: protected[C]
. Кваліфікатор доступу члена може бути іменем зовнішнього класу чи пакету, тоді вказаний клас або всі класи, що знаходяться у вказаному пакеті отримують доступ до члена. Також кваліфікатор доступу може бути this
, тоді член доступний лише із свого екземпляру, але не доступний через інші екземпляри класу.
Супутні об'єкти (companion objects) мають спільний рівень доступу із своїми супутніми класами.
Приклади програм Редагувати
Програма, як і в Java є класом. Це приклад консольної програми, котра виводить рядок тексту на екран.
object HelloWorld { def main(args: Array[String]) = println("Привіт, світ!") }
// Коротша версія object HelloWorld extends App { println("Привіт, світ!") }
Оцінка Редагувати
Часто висловлюються думки, що в довгостроковій перспективі Scala може замінити Java.
Згідно опитування ZeroTurnAround 2014 року 47 % Java-розробників обрали би Scala наступною мовою програмування для JVM . Автор мови Groovy Джеймс Стракен розглядає Scala як заміну Java у довгостроковій перспективі, та стверджує, що якби він свого часу познайомився зі Скалою, то імовірно не створив би Груві. Основний розробник JRuby Чарльз Наттер вважає Scala «наступником трону Java». Брюс Еккель, автор відомих книжок «Філософія C++» (англ. Thinking in C++) і «Філософія Java» (англ. Thinking in Java), стверджує, що Scala, зберігаючи переваги і статичної типізації, часто відчувається навіть більш лаконічною та ясною ніж мови із динамічною типізацією, такі як Python. Кей Хорстман, відомий як автор книги «Основи Java» (англ. Core Java), вважає Scala найпривабливішим вибором для тих, хто хоче просунутися за межі Java чи С++.
У 2014 році мова Scala отримала нагороду «Технологія року» від InfoWorld .
Згідно з опитуванням O'Reilly, у 2015 році 10 % дослідників даних використовують Scala. Значною мірою це пов'язано із популярністю Apache Spark, яким користуються 17 % дослідників, із яких 46 % використовують одночасно Spark і Scala. Знання цих двох технологій виявилося найзначущим коефіцієнтом пов'язаним із розміром платні, яка в середньому вища на $15 000, ніж в аналогічних дослідників, що не володіють ними.
Див. також Редагувати
Примітки Редагувати
- The scala Open Source Project on Open Hub: Languages Page — 2006.
- http://www.scala-js.org/
- http://www.scala-native.org/
- ↑ Martin Odersky, «A Brief History of Scala» [ 25 вересня 2009 у Wayback Machine.], Artima.com weblogs, June 9, 2006
- . Архів оригіналу за 15 листопада 2008. Процитовано 23 травня 2010.
- . Архів оригіналу за 14 липня 2013. Процитовано 4 липня 2015.
- ↑ . Архів оригіналу за 2 жовтня 2015. Процитовано 4 жовтня 2015.
- . Архів оригіналу за 2 жовтня 2015. Процитовано 4 жовтня 2015.
- . Архів оригіналу за 2 жовтня 2015. Процитовано 4 жовтня 2015.
- . Архів оригіналу за 1 жовтня 2015. Процитовано 4 жовтня 2015.
- . Архів оригіналу за 5 серпня 2009. Процитовано 15 травня 2010.
- . Архів оригіналу за 24 вересня 2015. Процитовано 4 жовтня 2015.
- . Архів оригіналу за 24 вересня 2015. Процитовано 4 жовтня 2015.
- Scala as the long term replacement for java/javac?. Архів оригіналу за 10 лютого 2012. Процитовано 4 жовтня 2015.
- . Архів оригіналу за 5 жовтня 2015. Процитовано 4 жовтня 2015.
- . Архів оригіналу за 7 липня 2015. Процитовано 4 жовтня 2015.
- . Архів оригіналу за 5 вересня 2015. Процитовано 4 жовтня 2015.
- . InfoWorld. Архів оригіналу за 28 вересня 2015. Процитовано 8 жовтня 2015. «Привабливе поєднання у мові Scala об’єктно-орієнтованої та функційної парадигм програмуваня одержало істотний розиток з часу її появи у 2003 році. Scala продемонструвала можливість мати переваги статичної типізації під час компіляції з дуже потужною системою типів, зберігаючи риси "швидкої розробки програмного забезпечення" і продуктивності, яка зазвичай пов’язується з мовами із динамічною типізацією. Завдяки чудовій підтримці паралельного програмування моделлю акторів та визначним підтримуючим бібліотекам і фреймворкам, таким як Akka і Play, Scala готова бути значним основним гравцем на десятиліття.»
- . Архів оригіналу за 27 вересня 2015. Процитовано 8 жовтня 2015.
Література Редагувати
- Odersky, Martin; Spoon, Lex; Venners, Bill (26 листопада 2008). (вид. 1st). Artima Inc. с. 776. ISBN 0981531601. Архів оригіналу за 19 липня 2009. Процитовано 23 травня 2010.
- Pollak, David (25 травня 2009). (вид. 1st). Apress. с. 776. ISBN 1430219890. Архів оригіналу за 5 грудня 2010. Процитовано 24 травня 2010.
- Subramaniam, Venkat (28 липня 2009). (вид. 1st). Pragmatic Bookshelf. с. 250. ISBN 193435631X. Архів оригіналу за 19 грудня 2010. Процитовано 24 травня 2010.
- Wampler, Dean; Payne, Alex (15 вересня 2009). (вид. 1st). O'Reilly Media. с. 448. ISBN 0596155956. Архів оригіналу за 10 березня 2010. Процитовано 7 травня 2010.
- Meredith, Gregory (25 квітня 2010). Pro Scala: Monadic Design Patterns for the Web (вид. 1st). Apress. с. 300. ISBN 143022844X.
Посилання Редагувати
Вікіпідручник має книгу на тему Scala |
- www.scala-lang.org [ 5 липня 2010 у Wayback Machine.] Офіційний вебсайт проєкту
- Functional Programming Principles in Scala [ 30 березня 2017 у Wayback Machine.] — курс Мартіна Одерськи на coursera.
Це незавершена стаття про мови програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |