Scala
| Парадигма: | декілька парадигм: функціональна, об'єктно-орієнтована |
|---|---|
| Розробник: | Мартин Одерски |
| Останній реліз: | 2.10.1 (13 березня 2013) |
| Під впливом від: | Java, Pizza, Haskell, Erlang, Standard ML, Objective Caml, Smalltalk |
| ОС: | Багатоплатформова |
| Ліцензія: | Scala License (BSD похідна) |
| Сторінка інтернет: | www.scala-lang.org |
Scala — мультипарадигмова мова програмування, що поєднує властивості об'єктно-орієнтованого та функціонального програмування.
Зміст |
Платформа [ред.]
Програми на Scala запускаються на віртуальній машині Java вище версії 1.5 за умови включення до дистрибутиву scala-library.jar. Scala сумісна із існуючими програмами на Java, тобто код Scala може викликатися із Java-програм і навпаки. Існує реалізація для платформи .NET, але вона підтримується значно менше. Дистрибутив Scala, включаючи компілятор і бібліотеки, випущено під BSD похідною ліцензією.
Мова [ред.]
Вплив [ред.]
На Скала вплинуло багато мов. Однорідна об'єктна модель вперше з'явилася у Smalltalk і згодом у Ruby. Універсальність вкладеності присутня у Algol, Simula, Beta. Принцип однорідного доступу для виклику методу і звернення до поля походить з мови Eiffel. Підхід до фунційного програмування подібний до родини мов ML, таких як has 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 члена внутрішнього вкладеного класу[1], що не дозволяє Scala.
У Scala protected і private можуть мати кваліфікатор доступу у квадратних дужках: protected[C]. Кваліфікатор доступу члена може бути іменем зовнішньго класу чи пакету, тоді вказаний клас або всі класи, що знаходяться у вказаному пакеті отримують доступ до члена. Також кваліфікатор доступу може бути this, тоді член доступний лише із свого екземпляру, але не доступний через інші екземпляри класу.
Супутні об'єкти (companion objects) мають спільний рівень доступу із своїми супутніми класами.
Історія [ред.]
- 2001 — початок розробки як практичнішого спадкоємця Funnel
- 2003 — перший експериментальний випуск, навчальний курс в університеті
- 2004 — стаття Scalable Component Abstractions, перша публічна версія
- 2005 — Scala 2.0, реалізована на Scala (перша версія — на Java), зріла версія
- 2007 — перший випуск Lift
- 18 грудня 2007 — доступна рання версія книги Programming in Scala[2]
- 2008 — Twitter використовує Scala, перша конференція Scala Lift Off
- 17 листопада 2008 — вийшла книга Programming in Scala
- 2009 — підтримка IDE, виходять англійською мовою 3 книжки про Scala і одна про Lift
- 2010 — конференція ScalaDays, виходять 3 книжки японською мовою
Посилання [ред.]
| Вікіпідручник має книгу на тему |
- Odersky, Martin; Spoon, Lex; Venners, Bill (November 26, 2008), Programming in Scala: A Comprehensive Step-by-step Guide (1st вид.), Artima Inc, pp. 776, ISBN 0981531601, http://www.artima.com/shop/programming_in_scala
- Pollak, David (May 25, 2009), Beginning Scala (1st вид.), Apress, pp. 776, ISBN 1430219890, http://www.apress.com/book/view/9781430219897/
- Subramaniam, Venkat (July 28, 2009), Programming Scala: Tackle Multi-Core Complexity on the Java Virtual Machine (1st вид.), Pragmatic Bookshelf, pp. 250, ISBN 193435631X, http://www.pragprog.com/titles/vsscala/programming-scala
- Wampler, Dean; Payne, Alex (September 15, 2009), Programming Scala: Scalability = Functional Programming + Objects (1st вид.), O'Reilly Media, pp. 448, ISBN 0596155956, http://programming-scala.labs.oreilly.com/index.html
- Meredith, Gregory (April 25, 2010), Pro Scala: Monadic Design Patterns for the Web (1st вид.), Apress, pp. 300, ISBN 143022844X, http://www.amazon.com/gp/product/143022844X/
Примітки [ред.]
|
|||||||||||||||||||||||

