Scala

Scala
Парадигмадекілька парадигм: функційна, об'єктно-орієнтована
Дата появи20 січня 2004
ТворціМартін Одерски
РозробникМартін Одерски
Останній реліз2.12.12 (13 липня 2020; 4 роки тому (2020-07-13))
Система типізаціївивід типів, статична, строга типізація і Структурна типізація
Під впливом відJava, Pizza, 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 — мультипарадигмова мова програмування, що поєднує властивості об'єктно-орієнтованого та функційного програмування. Назва Scala утворена зі слів «scalable» (масштабовна) та «language» (мова), для того щоб задекларувати, що мова може рости разом з вимогами користувачів.

Історія

Розробка Scala почалася у 2001 році у Федеральній політехнічній школі Лозанни (фр. École polytechnique fédérale de Lausanne, EPFL) Мартіном Одерски.[4] Перед цим Одерски створив узагальнення в Java і javac, компілятор мови Java.[4]

  • 2001 — початок розробки як практичнішого спадкоємця Funnel
  • 2003 — перший експериментальний випуск, навчальний курс в університеті
  • 2004 — стаття Scalable Component Abstractions, перша публічна версія
  • 2005 — Scala 2.0, реалізована на Scala (перша версія — на Java), зріла версія
  • 2007 — перший випуск Lift
    • 18 грудня 2007 — доступна рання версія книги Programming in Scala[5]
  • 2008 — Twitter використовує Scala, перша конференція Scala Lift Off
  • 2009 — підтримка IDE, виходять англійською мовою 3 книжки про Scala і одна про Lift
  • 2010 — конференція ScalaDays, виходять 3 книжки японською мовою

17 січня 2011 команда Scala виграла п'ятирічний дослідницький грант на €2.3 мільйонів від Європейської дослідницької ради.[6] 12 травня 2011 Одерски разом з іншими зацікавленими у розвитку Scala заснував Typesafe Inc., компанію для надання комерційної підтримки, навчання і послуг для Scala.

Платформа

Програми мовою Scala виконуються на віртуальній машині Java за умови приєднання до дистрибутиву файлу scala-library.jar. Scala сумісна із існуючими програмами мовою Java, тобто код Scala може викликатися із Java-програм і навпаки. Починаючи з версії 2.11 Scala потребує принаймні Java 6[7], а версія 2.12 потребуватиме Java 8 та матиме кращу інтеграцію із новими можливостями цієї версії Java[8].

У лютому 2015 року після двох років розробки випущено стабільну версію Scala.js — компілятора мови Scala у JavaScript[9].

До версії 2.11 існувала експериментальна реалізація для платформи .NET.[7] Дистрибутив Scala, включно з компілятором і бібліотеками, випущено під BSD-похідною ліцензією.

Мова

Вплив

На Scala вплинуло багато мов[10]. Однорідна об'єктна модель вперше з'явилася у 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 члена внутрішнього вкладеного класу[11], що не дозволяє 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[12].

Згідно опитування ZeroTurnAround 2014 року 47 % Java-розробників обрали би Scala наступною мовою програмування для JVM [13]. Автор мови Groovy Джеймс Стракен розглядає Scala як заміну Java у довгостроковій перспективі, та стверджує, що якби він свого часу познайомився зі Скалою, то імовірно не створив би Груві[14]. Основний розробник JRuby Чарльз Наттер вважає Scala «наступником трону Java»[15]. Брюс Еккель, автор відомих книжок «Філософія C++» (англ. Thinking in C++) і «Філософія Java» (англ. Thinking in Java), стверджує, що Scala, зберігаючи переваги і статичної типізації, часто відчувається навіть більш лаконічною та ясною ніж мови із динамічною типізацією, такі як Python[16]. Кей Хорстман, відомий як автор книги «Основи Java» (англ. Core Java), вважає Scala найпривабливішим вибором для тих, хто хоче просунутися за межі Java чи С++[17].

У 2014 році мова Scala отримала нагороду «Технологія року» від InfoWorld [18].

Згідно з опитуванням O'Reilly, у 2015 році 10 % дослідників даних використовують Scala. Значною мірою це пов'язано із популярністю Apache Spark, яким користуються 17 % дослідників, із яких 46 % використовують одночасно Spark і Scala. Знання цих двох технологій виявилося найзначущим коефіцієнтом пов'язаним із розміром платні, яка в середньому вища на $15 000, ніж в аналогічних дослідників, що не володіють ними.[19]

Див. також

Примітки

  1. The scala Open Source Project on Open Hub: Languages Page — 2006.
  2. http://www.scala-js.org/
  3. http://www.scala-native.org/
  4. а б Martin Odersky, «A Brief History of Scala» [Архівовано 25 вересня 2009 у Wayback Machine.], Artima.com weblogs, June 9, 2006
  5. Artima Publishes First (e)Book. Архів оригіналу за 15 листопада 2008. Процитовано 23 травня 2010.
  6. Scala Team Wins ERC Grant. Архів оригіналу за 14 липня 2013. Процитовано 4 липня 2015.
  7. а б Scala 2.11.0 is now available!. Архів оригіналу за 2 жовтня 2015. Процитовано 4 жовтня 2015.
  8. Scala 2.12 roadmap. Архів оригіналу за 2 жовтня 2015. Процитовано 4 жовтня 2015.
  9. Scala.js no longer experimental. Архів оригіналу за 2 жовтня 2015. Процитовано 4 жовтня 2015. [Архівовано 2015-10-02 у Wayback Machine.]
  10. Chapter 1 of Programming in Scala, First Edition, A Scalable Language. Архів оригіналу за 1 жовтня 2015. Процитовано 4 жовтня 2015.
  11. Java Language Specification: Access Control. Архів оригіналу за 5 серпня 2009. Процитовано 15 травня 2010.
  12. Roundup: Scala as the long term replacement for Java. Архів оригіналу за 24 вересня 2015. Процитовано 4 жовтня 2015.
  13. Java Tools and Technologies Landscape for 2014. Архів оригіналу за 24 вересня 2015. Процитовано 4 жовтня 2015.
  14. Scala as the long term replacement for java/javac?. Архів оригіналу за 10 лютого 2012. Процитовано 4 жовтня 2015.
  15. The Future: Part One. Архів оригіналу за 5 жовтня 2015. Процитовано 4 жовтня 2015.
  16. Scala: The Static Language that Feels Dynamic. Архів оригіналу за 7 липня 2015. Процитовано 4 жовтня 2015.
  17. Diving into Scala: A Conversation with Java Champion Cay Horstmann. Архів оригіналу за 5 вересня 2015. Процитовано 4 жовтня 2015.
  18. InfoWorld's 2014 Technology of the Year Award winners. InfoWorld. Архів оригіналу за 28 вересня 2015. Процитовано 8 жовтня 2015. Привабливе поєднання у мові Scala об’єктно-орієнтованої та функційної парадигм програмуваня одержало істотний розиток з часу її появи у 2003 році. Scala продемонструвала можливість мати переваги статичної типізації під час компіляції з дуже потужною системою типів, зберігаючи риси "швидкої розробки програмного забезпечення" і продуктивності, яка зазвичай пов’язується з мовами із динамічною типізацією. Завдяки чудовій підтримці паралельного програмування моделлю акторів та визначним підтримуючим бібліотекам і фреймворкам, таким як Akka і Play, Scala готова бути значним основним гравцем на десятиліття.
  19. 2015 Data Science Salary Survey. Архів оригіналу за 27 вересня 2015. Процитовано 8 жовтня 2015.

Література

Посилання


Read other articles:

Al-OlayyaPermukimanAl-OlayyaLocation in the Kingdom of Saudi ArabiaKoordinat: 24°38′N 46°43′E / 24.633°N 46.717°E / 24.633; 46.717Koordinat: 24°38′N 46°43′E / 24.633°N 46.717°E / 24.633; 46.717Negara Arab SaudiPemerintahan • Gubernur Pangeran RiyadhFaisal bin Bandar Al Saud • Wali kotaIbraheem Mohammed Al-SultanKetinggian612 m (2,008 ft)Zona waktuUTC+3 (AST) • Musim panas (DST)UT...

 

American politician (1932–2019) Richard LugarUnited States Senatorfrom IndianaIn officeJanuary 3, 1977 – January 3, 2013Preceded byVance HartkeSucceeded byJoe DonnellyChair of the Senate Foreign Relations CommitteeIn officeJanuary 3, 2003 – January 3, 2007Preceded byJoe BidenSucceeded byJoe BidenIn officeJanuary 3, 1985 – January 3, 1987Preceded byChuck PercySucceeded byClaiborne PellChair of the Senate Agriculture CommitteeIn officeJanuary 20, 2001 –...

 

This article is an orphan, as no other articles link to it. Please introduce links to this page from related articles; try the Find link tool for suggestions. (January 2022) Neighborhood in Montgomery, Ohio, United StatesGrantland GardensNeighborhoodAerial view of Old Lane Park in Grantland GardensCoordinates: 39°39′49.83″N 84°10′47.22″W / 39.6638417°N 84.1797833°W / 39.6638417; -84.1797833CountryUnited StatesStateOhioCountyMontgomeryTownshipWashingtonArea&...

Pieter de CarpentierPortrait of Pieter de Carpentier by an unknown artist. Rijksmuseum, Amsterdam.5th Governor-General of the Dutch East IndiesIn office1 February 1623 – 30 September 1627Preceded byJan Pieterszoon CoenSucceeded byJan Pieterszoon Coen Personal detailsBorn(1586-02-19)19 February 1586Antwerp, Spanish NetherlandsDied5 September 1659(1659-09-05) (aged 73)Amsterdam, Dutch Republic Pieter de Carpentier (19 February 1586 – 5 September 1659) was a Dutch administ...

 

Place in Jerusalem, Mandatory Palestineal-Qastal القسطلal-Qastal hillEtymology: castellum or castale[1] 1870s map 1940s map modern map 1940s with modern overlay map A series of historical maps of the area around Al-Qastal, Jerusalem (click the buttons)al-QastalLocation within Mandatory PalestineCoordinates: 31°47′44″N 35°8′39″E / 31.79556°N 35.14417°E / 31.79556; 35.14417Palestine grid163/133Geopolitical entityMandatory PalestineSubdistr...

 

Subclass of fishes NeopterygiiTemporal range: Early Triassic–Present PreꞒ Ꞓ O S D C P T J K Pg N Siganus corallinus (a teleost) Lepisosteus oculatus (a holostean) Scientific classification Domain: Eukaryota Kingdom: Animalia Phylum: Chordata Class: Actinopterygii (unranked): Actinopteri Subclass: NeopterygiiRegan, 1923[1] Infraclasses Holostei Teleosteomorpha †Pycnodontiformes For others, see text Neopterygii (from Greek νέος neos 'new' and πτέρυξ pteryx 'fin') is a ...

Pour les articles homonymes, voir Delaroche. Paul DelarochePaul Delaroche, Autoportrait, Paris, musée Hébert.BiographieNaissance 17 juillet 1797Ancien 4e arrondissement de ParisDécès 4 novembre 1856 (à 59 ans)Ancien 2e arrondissement de ParisSépulture Cimetière de MontmartreNom de naissance Hippolyte de la RocheNationalité françaiseFormation École nationale supérieure des beaux-artsActivité PeintrePériode d'activité 1812-1856Fratrie Jules-Hippolyte DelarocheConjoint Louise...

 

2006 film by Steve Williams This article is about the 2006 animated film. For the wilds, see wilderness and the bush. For other uses, see Wild (disambiguation). The Wild (2006 film)Theatrical release posterDirected bySteve Spaz WilliamsScreenplay by Ed Decter John J. Strauss Mark Gibson Philip Halprin Story by Mark Gibson Philip Halprin Produced by Clint Goldman Beau Flynn Starring Eddie Izzard Kiefer Sutherland Janeane Garofalo Jim Belushi Richard Kind Greg Cipes William Shatner Edited by Sc...

 

この項目には、一部のコンピュータや閲覧ソフトで表示できない文字が含まれています(詳細)。 数字の大字(だいじ)は、漢数字の一種。通常用いる単純な字形の漢数字(小字)の代わりに同じ音の別の漢字を用いるものである。 概要 壱万円日本銀行券(「壱」が大字) 弐千円日本銀行券(「弐」が大字) 漢数字には「一」「二」「三」と続く小字と、「壱」「�...

Resolusi 974Dewan Keamanan PBBPita UNIFILTanggal30 Januari 1995Sidang no.3.495KodeS/RES/974 (Dokumen)TopikIsrael-LebanonRingkasan hasil15 mendukungTidak ada menentangTidak ada abstainHasilDiadopsiKomposisi Dewan KeamananAnggota tetap Tiongkok Prancis Rusia Britania Raya Amerika SerikatAnggota tidak tetap Argentina Botswana Republik Ceko Jerman Honduras Indonesia Italia Nigeria Oman Rwanda Resolusi 974 Dewan K...

 

كل ماتريده لولاWhatever Lola Wants (بالإنجليزية) معلومات عامةالصنف الفني فيلم رومانسي تاريخ الصدور 11 ديسمبر 2007مدة العرض 115 دقيقةاللغة الأصلية إنجليزيةعربيةالبلد  المغرب،  فرنسا،  كندامواقع التصوير نيويورك — مصر — المغرب موقع الويب whateverlolawants-lefilm.com الطاقمالمخرج نبيل عيوشا...

 

Armata del James Army of the Jamesil quartier generale dell'Armata del James in un dipinto Descrizione generaleAttivaaprile 1864 - agosto 1865 Nazione Unione Servizio Union Army TipoArmata Battaglie/guerreGuerra di secessione americana ComandantiComandantiBenjamin F. Butler (1864-1865) Edward Ord (1865) Voci su unità militari presenti su Wikipedia L'Armata del James fu un'unità militare dell'esercito dell'Unione, composta da unità minori provenienti dal Dipartimento Militare della Virginia...

Сельское поселение России (МО 2-го уровня)Новотитаровское сельское поселение Флаг[d] Герб 45°14′09″ с. ш. 38°58′16″ в. д.HGЯO Страна  Россия Субъект РФ Краснодарский край Район Динской Включает 4 населённых пункта Адм. центр Новотитаровская Глава сельского пос�...

 

此條目需要补充更多来源。 (2021年7月4日)请协助補充多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而被移除。致使用者:请搜索一下条目的标题(来源搜索:美国众议院 — 网页、新闻、书籍、学术、图像),以检查网络上是否存在该主题的更多可靠来源(判定指引)。 美國眾議院 United States House of Representatives第118届美国国会众议院徽章 众议院旗...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Bridle Path, Toronto – news · newspapers · books · scholar · JSTOR (September 2015) (Learn how and when to remove this message) Neighbourhood in Toronto, Ontario, CanadaBridle PathNeighbourhoodA residence in the Bridle PathCoordinates: 43°44′06″N 79°22�...

Pour les articles homonymes, voir Crèvecœur. Crèvecœur-en-Brie La mairie. Blason Administration Pays France Région Île-de-France Département Seine-et-Marne Arrondissement Provins Intercommunalité Communauté de communes Val Briard Maire Mandat Marc Cuypers 2020-2026 Code postal 77610 Code commune 77144 Démographie Gentilé Crépicordiens Populationmunicipale 445 hab. (2021 ) Densité 48 hab./km2 Géographie Coordonnées 48° 45′ 14″ nord, 2° 54′&...

 

Major branch of Christianity This article is about the religion, doctrine and tradition of the Eastern Orthodox Church. For the institution and history of the largest church associated with Eastern Orthodoxy, see Eastern Orthodox Church.Not to be confused with Oriental Orthodox Churches.For related subjects, see Orthodox (disambiguation). Part of a series onEastern Christianity Mainstream communions Eastern Orthodoxy Oriental Orthodoxy (Coptic, Orthodox Tewahedo - Ethiopian and Eritrean -, Ar...

 

ثلاثة صِبغات في النموذج اللوني لمونسل. يختلف كل لون بقيمته من الأعلى إلى الأسفل بقفزات إدراك لوني ثابتة. يخضع العمود الأيمن لتغير كبير في اللون المدرك إضاءة اللون (بالإنجليزية: Lightness)‏: وتسمى في بعض السياقات «قيمة اللون» هي خاصية للون، وأحد الأبعاد في بعض الفضاءات اللونية. �...

海南省博物馆前门成立2008年地址 中国海南省海口市琼山区国兴大道68号坐标20°01′03″N 110°22′29″E / 20.01751°N 110.37459°E / 20.01751; 110.37459類型地方性综合博物馆網站http://www.hainanmuseum.org/ 海南省博物馆位于海南省海口市琼山区国兴大道68号,2008年11月15日正式开馆。该馆第一期工程占地面积约18000平方米,展厅面积约8000平方米;共有10个展厅,对海南的历...

 

Town in New Hampshire, United StatesSugar Hill, New HampshireTownThe Sunset Hill House, Sugar Hill, c. 1910Location in Grafton County, New HampshireCoordinates: 44°12′55″N 71°47′58″W / 44.21528°N 71.79944°W / 44.21528; -71.79944CountryUnited StatesStateNew HampshireCountyGraftonIncorporated1962Government • Select BoardMargaret Connors, ChairChris EllmsRichard BielefieldArea[1] • Total17.23 sq mi (44.63 k...