Scala — мультипарадигмова мова програмування, що поєднує властивості об'єктно-орієнтованого та функційного програмування. Назва Scala утворена зі слів «scalable» (масштабовна) та «language» (мова), для того щоб задекларувати, що мова може рости разом з вимогами користувачів.
Scala | |
---|---|
Парадигма | декілька парадигм: функційна, об'єктно-орієнтована |
Дата появи | 20 січня 2004 |
Творці | Мартін Одерски |
Розробник | Мартін Одерски |
Останній реліз | 2.12.12 (13 липня 2020 ) |
Система типізації | вивід типів, статична, строга типізація і d |
Під впливом від | Java, , Haskell, Erlang, Standard ML, Objective Caml, Smalltalk |
Мова реалізації | Scala[1] |
Платформа | віртуальна машина Java, JavaScript[2] і native[d][3] |
Операційна система | Багатоплатформна |
Ліцензія | Scala License (похідна від BSD) |
Звичайні розширення файлів | .scala або .sc |
Репозиторій вихідного коду | github.com/scala/scala |
Вебсайт | www.scala-lang.org |
|
Історія
Розробка Scala почалася у 2001 році у Федеральній політехнічній школі Лозанни (фр. École polytechnique fédérale de Lausanne, EPFL) Мартіном Одерски. Перед цим Одерски створив узагальнення в Java і , компілятор мови Java.
- 2001 — початок розробки як практичнішого спадкоємця
- 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 — конференція , виходять 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, . Принцип однорідного доступу для виклику методу і звернення до поля походить з мови Eiffel. Підхід до функційного програмування подібний до підходу родини мов ML, таких як , OCaml і F#. Багато функцій вищого порядку у стандартній бібліотеці Scala також наявні у ML або Haskell. Неявні параметри у Scala аналогічні класам типів Haskell. Заснована на акторах бібліотека багатозадачності подібна до Erlang.
Змінні
Методи
Починаючи з версії 2.8 Scala підтримує значення аргументів за умовчанням та іменовані аргументи. Методи у Scala можуть бути вкладеними, вкладений метод бачить змінні зовнішнього. Зазвичай параметри до методу передаються за значенням (Call-by-Value) — значення аргументів обчислюється перед викликом методу і передаються до методу. Scala підтримує також передачу параметрів за назвою (Call-by-Name). У цьому разі в метод передається вираз, але обчислюється не під час виклику методу, а під час кожного звернення до нього в тілі методу.
Рівні доступу
За умовчанням рівень доступу до членів класу у Scala є загальнодоступним (public
).
Відкриття доступу підкласам (protected
), так само як у і 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.
Згідно опитування 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 отримала нагороду «Технологія року» від .
Згідно з опитуванням 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), , с. 776, ISBN , архів оригіналу за 19 липня 2009, процитовано 23 травня 2010
- Pollak, David (25 травня 2009), (вид. 1st), Apress, с. 776, ISBN , архів оригіналу за 5 грудня 2010, процитовано 24 травня 2010
- Subramaniam, Venkat (28 липня 2009), (вид. 1st), , с. 250, ISBN , архів оригіналу за 19 грудня 2010, процитовано 24 травня 2010
- Wampler, Dean; Payne, Alex (15 вересня 2009), (вид. 1st), O'Reilly Media, с. 448, ISBN , архів оригіналу за 10 березня 2010, процитовано 7 травня 2010
- Meredith, Gregory (25 квітня 2010), Pro Scala: Monadic Design Patterns for the Web (вид. 1st), Apress, с. 300, ISBN
Посилання
Вікіпідручник має книгу на тему Scala |
- www.scala-lang.org [ 5 липня 2010 у Wayback Machine.] Офіційний вебсайт проєкту
- Functional Programming Principles in Scala [ 30 березня 2017 у Wayback Machine.] — курс Мартіна Одерськи на coursera.
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
U Vikipediyi ye statti pro inshi znachennya cogo termina Scala znachennya Scala multiparadigmova mova programuvannya sho poyednuye vlastivosti ob yektno oriyentovanogo ta funkcijnogo programuvannya Nazva Scala utvorena zi sliv scalable masshtabovna ta language mova dlya togo shob zadeklaruvati sho mova mozhe rosti razom z vimogami koristuvachiv ScalaParadigma dekilka paradigm funkcijna ob yektno oriyentovanaData poyavi 20 sichnya 2004Tvorci Martin OderskiRozrobnik Martin OderskiOstannij reliz 2 12 12 13 lipnya 2020 3 roki tomu 2020 07 13 Sistema tipizaciyi vivid tipiv statichna stroga tipizaciya i dPid vplivom vid Java Haskell Erlang Standard ML Objective Caml SmalltalkMova realizaciyi Scala 1 Platforma virtualna mashina Java JavaScript 2 i native d 3 Operacijna sistema BagatoplatformnaLicenziya Scala License pohidna vid BSD Zvichajni rozshirennya fajliv scala abo scRepozitorij vihidnogo kodu github com scala scalaVebsajt www scala lang org Instrukciyi u Vikipidruchniku Mediafajli u VikishovishiIstoriyaRozrobka Scala pochalasya u 2001 roci u Federalnij politehnichnij shkoli Lozanni fr Ecole polytechnique federale de Lausanne EPFL Martinom Oderski Pered cim Oderski stvoriv uzagalnennya v Java i kompilyator movi Java 2001 pochatok rozrobki yak praktichnishogo spadkoyemcya 2003 pershij eksperimentalnij vipusk navchalnij kurs v universiteti 2004 stattya Scalable Component Abstractions persha publichna versiya 2005 Scala 2 0 realizovana na Scala persha versiya na Java zrila versiya 2007 pershij vipusk Lift 18 grudnya 2007 dostupna rannya versiya knigi Programming in Scala 2008 Twitter vikoristovuye Scala persha konferenciya Scala Lift Off 17 listopada 2008 vijshla kniga Programming in Scala 19 lipnya 2009 u Wayback Machine 2009 pidtrimka IDE vihodyat anglijskoyu movoyu 3 knizhki pro Scala i odna pro Lift 2010 konferenciya vihodyat 3 knizhki yaponskoyu movoyu 17 sichnya 2011 komanda Scala vigrala p yatirichnij doslidnickij grant na 2 3 miljoniv vid Yevropejskoyi doslidnickoyi radi 12 travnya 2011 Oderski razom z inshimi zacikavlenimi u rozvitku Scala zasnuvav Typesafe Inc kompaniyu dlya nadannya komercijnoyi pidtrimki navchannya i poslug dlya Scala PlatformaProgrami movoyu Scala vikonuyutsya na virtualnij mashini Java za umovi priyednannya do distributivu fajlu scala library jar Scala sumisna iz isnuyuchimi programami movoyu Java tobto kod Scala mozhe viklikatisya iz Java program i navpaki Pochinayuchi z versiyi 2 11 Scala potrebuye prinajmni Java 6 a versiya 2 12 potrebuvatime Java 8 ta matime krashu integraciyu iz novimi mozhlivostyami ciyeyi versiyi Java U lyutomu 2015 roku pislya dvoh rokiv rozrobki vipusheno stabilnu versiyu Scala js kompilyatora movi Scala u JavaScript Do versiyi 2 11 isnuvala eksperimentalna realizaciya dlya platformi NET Distributiv Scala vklyuchno z kompilyatorom i bibliotekami vipusheno pid BSD pohidnoyu licenziyeyu MovaVpliv Na Scala vplinulo bagato mov Odnoridna ob yektna model vpershe z yavilasya u Smalltalk i zgodom u Ruby Universalnist vkladenosti prisutnya u Algol Simula Princip odnoridnogo dostupu dlya vikliku metodu i zvernennya do polya pohodit z movi Eiffel Pidhid do funkcijnogo programuvannya podibnij do pidhodu rodini mov ML takih yak OCaml i F Bagato funkcij vishogo poryadku u standartnij biblioteci Scala takozh nayavni u ML abo Haskell Neyavni parametri u Scala analogichni klasam tipiv Haskell Zasnovana na aktorah biblioteka bagatozadachnosti podibna do Erlang Zminni Metodi Pochinayuchi z versiyi 2 8 Scala pidtrimuye znachennya argumentiv za umovchannyam ta imenovani argumenti Metodi u Scala mozhut buti vkladenimi vkladenij metod bachit zminni zovnishnogo Zazvichaj parametri do metodu peredayutsya za znachennyam Call by Value znachennya argumentiv obchislyuyetsya pered viklikom metodu i peredayutsya do metodu Scala pidtrimuye takozh peredachu parametriv za nazvoyu Call by Name U comu razi v metod peredayetsya viraz ale obchislyuyetsya ne pid chas vikliku metodu a pid chas kozhnogo zvernennya do nogo v tili metodu Rivni dostupu Za umovchannyam riven dostupu do chleniv klasu u Scala ye zagalnodostupnim public Vidkrittya dostupu pidklasam protected tak samo yak u C i C vidkrivaye dostup lishe pidklasam na vidminu vid Java v yakij protected takozh otrimuyut dostup usi klasi togo samogo Chleni z vidimistyu protected dostupni u inshih ekzemplyarah cogo zh klasu ale nashadki ne mayut dostupu do protected chleniv inshih ekzemplyariv svoyih bazovih klasiv tak samo yak i v Java Chleni z vidimistyu private dostupni lishe u ekzemplyarah cogo zh klasu U Java private obmezhuye dostup na rivni klasu najvishogo rivnya vkladenosti tobto zovnishnij klas mozhe oderzhati dostup do private chlena vnutrishnogo vkladenogo klasu sho ne dozvolyaye Scala U Scala protected i private mozhut mati kvalifikator dostupu u kvadratnih duzhkah protected C Kvalifikator dostupu chlena mozhe buti imenem zovnishnogo klasu chi paketu todi vkazanij klas abo vsi klasi sho znahodyatsya u vkazanomu paketi otrimuyut dostup do chlena Takozh kvalifikator dostupu mozhe buti this todi chlen dostupnij lishe iz svogo ekzemplyaru ale ne dostupnij cherez inshi ekzemplyari klasu Suputni ob yekti companion objects mayut spilnij riven dostupu iz svoyimi suputnimi klasami Prikladi programPrograma yak i v Java ye klasom Ce priklad konsolnoyi programi kotra vivodit ryadok tekstu na ekran object HelloWorld def main args Array String println Privit svit Korotsha versiya object HelloWorld extends App println Privit svit OcinkaChasto vislovlyuyutsya dumki sho v dovgostrokovij perspektivi Scala mozhe zaminiti Java Zgidno opituvannya 2014 roku 47 Java rozrobnikiv obrali bi Scala nastupnoyu movoyu programuvannya dlya JVM Avtor movi Groovy rozglyadaye Scala yak zaminu Java u dovgostrokovij perspektivi ta stverdzhuye sho yakbi vin svogo chasu poznajomivsya zi Skaloyu to imovirno ne stvoriv bi Gruvi Osnovnij rozrobnik JRuby Charlz Natter vvazhaye Scala nastupnikom tronu Java avtor vidomih knizhok Filosofiya C angl Thinking in C i Filosofiya Java angl Thinking in Java stverdzhuye sho Scala zberigayuchi perevagi i statichnoyi tipizaciyi chasto vidchuvayetsya navit bilsh lakonichnoyu ta yasnoyu nizh movi iz dinamichnoyu tipizaciyeyu taki yak Python Kej Horstman vidomij yak avtor knigi Osnovi Java angl Core Java vvazhaye Scala najprivablivishim viborom dlya tih hto hoche prosunutisya za mezhi Java chi S U 2014 roci mova Scala otrimala nagorodu Tehnologiya roku vid Zgidno z opituvannyam O Reilly u 2015 roci 10 doslidnikiv danih vikoristovuyut Scala Znachnoyu miroyu ce pov yazano iz populyarnistyu Apache Spark yakim koristuyutsya 17 doslidnikiv iz yakih 46 vikoristovuyut odnochasno Spark i Scala Znannya cih dvoh tehnologij viyavilosya najznachushim koeficiyentom pov yazanim iz rozmirom platni yaka v serednomu visha na 15 000 nizh v analogichnih doslidnikiv sho ne volodiyut nimi Div takozhScalaTestPrimitkiThe scala Open Source Project on Open Hub Languages Page 2006 d Track Q124688 http www scala js org http www scala native org Martin Odersky A Brief History of Scala 25 veresnya 2009 u Wayback Machine Artima com weblogs June 9 2006 Arhiv originalu za 15 listopada 2008 Procitovano 23 travnya 2010 Arhiv originalu za 14 lipnya 2013 Procitovano 4 lipnya 2015 Arhiv originalu za 2 zhovtnya 2015 Procitovano 4 zhovtnya 2015 Arhiv originalu za 2 zhovtnya 2015 Procitovano 4 zhovtnya 2015 Arhiv originalu za 2 zhovtnya 2015 Procitovano 4 zhovtnya 2015 Arhiv originalu za 1 zhovtnya 2015 Procitovano 4 zhovtnya 2015 Arhiv originalu za 5 serpnya 2009 Procitovano 15 travnya 2010 Arhiv originalu za 24 veresnya 2015 Procitovano 4 zhovtnya 2015 Arhiv originalu za 24 veresnya 2015 Procitovano 4 zhovtnya 2015 Scala as the long term replacement for java javac Arhiv originalu za 10 lyutogo 2012 Procitovano 4 zhovtnya 2015 Arhiv originalu za 5 zhovtnya 2015 Procitovano 4 zhovtnya 2015 Arhiv originalu za 7 lipnya 2015 Procitovano 4 zhovtnya 2015 Arhiv originalu za 5 veresnya 2015 Procitovano 4 zhovtnya 2015 InfoWorld Arhiv originalu za 28 veresnya 2015 Procitovano 8 zhovtnya 2015 Privablive poyednannya u movi Scala ob yektno oriyentovanoyi ta funkcijnoyi paradigm programuvanya oderzhalo istotnij rozitok z chasu yiyi poyavi u 2003 roci Scala prodemonstruvala mozhlivist mati perevagi statichnoyi tipizaciyi pid chas kompilyaciyi z duzhe potuzhnoyu sistemoyu tipiv zberigayuchi risi shvidkoyi rozrobki programnogo zabezpechennya i produktivnosti yaka zazvichaj pov yazuyetsya z movami iz dinamichnoyu tipizaciyeyu Zavdyaki chudovij pidtrimci paralelnogo programuvannya modellyu aktoriv ta viznachnim pidtrimuyuchim bibliotekam i frejmvorkam takim yak Akka i Play Scala gotova buti znachnim osnovnim gravcem na desyatilittya Arhiv originalu za 27 veresnya 2015 Procitovano 8 zhovtnya 2015 LiteraturaOdersky Martin Spoon Lex Venners Bill 26 listopada 2008 vid 1st s 776 ISBN 0981531601 arhiv originalu za 19 lipnya 2009 procitovano 23 travnya 2010 Pollak David 25 travnya 2009 vid 1st Apress s 776 ISBN 1430219890 arhiv originalu za 5 grudnya 2010 procitovano 24 travnya 2010 Subramaniam Venkat 28 lipnya 2009 vid 1st s 250 ISBN 193435631X arhiv originalu za 19 grudnya 2010 procitovano 24 travnya 2010 Wampler Dean Payne Alex 15 veresnya 2009 vid 1st O Reilly Media s 448 ISBN 0596155956 arhiv originalu za 10 bereznya 2010 procitovano 7 travnya 2010 Meredith Gregory 25 kvitnya 2010 Pro Scala Monadic Design Patterns for the Web vid 1st Apress s 300 ISBN 143022844XPosilannyaVikipidruchnik maye knigu na temu Scala www scala lang org 5 lipnya 2010 u Wayback Machine Oficijnij vebsajt proyektu Functional Programming Principles in Scala 30 bereznya 2017 u Wayback Machine kurs Martina Oderski na coursera Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi