Язык Scala
Методы высшего порядка, применяемые в обработке последовательностей. Функциональная абстракция, трактовка параметров языка. Моделирование обобщенных (generic) типов с помощью абстрактных типов. Повторное использование классов. Автономные компоненты Scala.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 24.03.2014 |
Размер файла | 45,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Какие виды доступны для вставки? Scala рассматривает в качестве кандидатов все виды, к которым имеется доступ из точки вставки без префиксного выражения. Это включает как виды, определенные локально или в некоторой области видимости, так и виды, унаследованные от базовых классов или импортированные из других объектов выражением import. Локальный вид не прячет виды, определенные в прилегающей области видимости. Вид применим, если он может быть применен к выражению, и он позволяет отобразить это выражение на желаемый тип. Из всех кандидатов Scala выбирает наиболее точно подходящий вид. В данном случае точность интерпретируется так же, как при разрешении перегрузки в Java и Scala. Если применимого вида нет, или среди применимых не удается выбрать подходящий - генерируется ошибка.
Локальность обеспечивается тем ограничением, что в качестве кандидатов рассматриваются только те виды, которые доступны без префикса. Клиенты могут приспосабливать под свои нужды набор доступных видов, выборочно импортируя объекты, определяющие виды.
Виды часто используются в библиотеке Scala, чтобы дать возможность Java-типам поддерживать trait-ы Scala. Примером может служить Scala-trait Ordered, определяющий набор операций сравнения. Виды на этот тип от всех базовых типов и класса String определены в модуле scala.Predef. Поскольку члены этого модуля неявно импортируются в каждую Scala-программу, эти виды всегда доступны. С точки зрения пользователя, это похоже на расширение Java-классов новыми trait-ами.
Границы видов
До сих пор методы видов должны были быть видимы статически в точке вставки. Виды становятся еще более полезными, если можно абстрагироваться от конкретного вставляемого метода.
MultiJava - это консервативное расширение Java, которое добавляет симметричную множественную диспетчеризацию и открытые классы. Оно предоставляет альтернативное решение многих проблем, которыми занимается и Scala. Например, множественная диспетчеризация дает решение проблемы бинарных методов, которая в Scala решается абстрактными типами. Открытые классы предоставляют решение проблемы внешней расширяемости, которая в Scala решается с помощью видов. Только в MultiJava встречается возможность динамического добавления новых методов в класс, так как открытые классы интегрированы с обычным процессом динамической загрузки в Java. Напротив, только Scala позволяет определять область видимости внешних расширений класса в программе.
Заключение
Scala - это одновременно и большой, и относительно маленький язык. Это большой язык в том смысле, что он обладает богатыми синтаксисом и системой типов, комбинирующими концепции объектно-ориентированного и функционального программирования. Следовательно, пользователям, приходящим из любого языкового сообщества, придется изучать новые конструкции. Большая часть разнообразия Scala порождена желанием быть ближе к таким традиционным языкам, как Java и C# - чтобы облегчить принятие Scala пользователями этих языков.
Scala - это также и относительно маленький язык в том смысле, что он построен на скромном наборе весьма общих концепций. Многие конструкции являются синтаксическим сахаром, который может быть удален с помощью трансформации. Такие обобщения, как унифицированная объектная модель, позволяют абстрагироваться от многих примитивных типов и операций, перекладывая работу с ними на плечи библиотеки Scala. Спецификация и реализация Scala также показывают, что ее сложность управляема. Современный frontend компилятора Scala имеет размер, сравнимый с frontend-ом Sun Java 1.4. Текущая спецификация Scala [9] (около 100 страниц) значительно меньше текущей спецификации Java 1.4 [18] (около 400 страниц). Эти числа трудно сравнивать, однако, поскольку спецификации Scala все еще недостает зрелости спецификации Java, и она использует краткие формулы во многих местах, где спецификация Java использует словесное описание.
Scala была выпущена для общего пользования на платформе JVM в январе 2004 года и на платформе .NET в июне 2004 года. Реализация завершена, за исключением runtime-типов, которые должны появиться в конце 2004 года. В будущем мы собираемся поэкспериментировать с улучшенной систематической поддержкой типов для XML, а также расширить набор стандартных библиотек Scala.
Список литературы
Dean Wampler Alex Payne. Programming Scala: Scalability = Functional Programming + Objects,http://programming-scala.labs.oreilly.com/. O'Reilly, 2009.
Derek Chen-Becker. Проект на Lift -- <<Мелочь в Кармане>>. Проект,http://github.com/tjweir/pocketchangeapp/tree/master/PocketChange
Marius Danciu David Pollak, Derek Chen-Becker and Tyler Weir. Starting with Lift. Веб-страница,http://old.liftweb.net/docs/getting_started/mod_master.html.
David Pollack et al. Getting Started With Lift. Веб-сайт, http://liftweb.net/getting_started.
Debashish Ghosh. Designing Internal DSLs in Scala. Блог,http://debasishg.blogspot.com/2008/05/designing-internal-dsls-in-scala.html.
Tyler Weir Marius Danciu, Derek Chen-Becker. The Definitive Guide to Lift: A Scala-based Web Framework,http://www.amazon.com/Definitive-Guide-Lift-Scala-based-Framework/dp/1430224215. Apress, 2007.
Gregory Meredith. Pro Scala: Monadic Design Patterns for the Web, http://www.amazon.com/Pro-Scala-Monadic-Design-Patterns/dp/143022844X. Apress, 2010.
JP Moresmaugh. Java and higher order generics. Блог, http://jpmoresmau.blogspot.com/2007/12/java-and-higher-order-generics.html.
Tony Morris. Проект scalaz. Проект в Google Code, http://code.google.com/p/scalaz/.
David Pollack. Beginning Scala, http://www.amazon.com/Beginning-Scala-David-Pollak/dp/1430219890. Apress, 2009.
David Rupp. Java generics broken? we report, you decide. Блог,http://davidrupp.blogspot.com/2008/01/java-generics-broken-we-report-you.html.
Bill Venners. Scalatest. Проект, http://www.scalatest.org/.
Bill Venners, Martin Odersky, and Lexi Spoon. Programming in Scala: A Comprehensive Step-by-step Guide,http://www.amazon.com/Programming-Scala-Comprehensive-Step---step/dp/0981531601/. Artima, 2008.
Лекси Спун, Бил Веннерс, Мартин Одерски. Первые шаги в Scala. RSDN,http://www.rsdn.ru/article/scala/scala.xml.
Мартин Одерски и другие. Обзор языка программирования Scala. RSDN,http://www.rsdn.ru/article/philosophy/Scala.xml.
Антон Панасенко. Scala: Actors (part 2). Блог, http://blog.apanasenko.me/2009/12/scala-actors-part-2/.
Антон Панасенко. Scala: Functional Language (part 3). Блог, http://blog.apanasenko.me/2009/12/scala-functional-language-part-3/.
Антон Панасенко. Scala: введение в мир FL JVM (part 1). Блог, http://blog.apanasenko.me/2009/12/scala-fl-jvm-part-1/.
Размещено на Allbest.ru
Подобные документы
Інтегрована інформаційна система менеджменту фірми SAP R/3. Інформаційні потреби управлінського апарату підприємства. Характеристика системи Scala. Характеристика змін в системі управління в результаті впровадження інформаційної системи управління.
контрольная работа [163,0 K], добавлен 27.07.2009Общие и отличительные черты объектов, связь между ними. Принципы организации иерархии и понятия объектно-ориентированной парадигмы программирования. Анализ предметной области, определение абстрактных типов данных, проектирование классов и коллекций.
курсовая работа [2,1 M], добавлен 11.03.2016Синтаксис языка РНР, его переменные и чувствительность их имен к регистру. Гибкость в отношении типов переменных, преобразование типов. Набор основных типов данных при работе с переменными. Методы передача переменных скрипту. Операторы цикла и выбора.
дипломная работа [27,3 K], добавлен 15.04.2009Выбор режима резания при токарной обработке с использованием различных типов резцов и материала обрабатываемой детали. Математическая модель и необходимые для расчетов таблицы. Функциональная схема автоматизации процесса расчета режима резания.
дипломная работа [1,3 M], добавлен 29.07.2016UML как язык моделирования, используемый архитектором при разработке дизайна системы для создания описания основных, важных аспектов программного обеспечения. Диаграмма прецедентов (UseCase), классов, видов деятельности, компонентов, последовательностей.
отчет по практике [633,1 K], добавлен 22.07.2012Причины возникновения объектно-ориентированного программирования. Графическое представление классов; их отличия от других абстрактных типов данных. Типы абстракции, используемые при построении объекта. Сущность инкапсуляции, наследования и полиморфизма.
контрольная работа [222,1 K], добавлен 04.06.2014Унифицированный язык моделирования (UML) как стандартный инструмент для создания "чертежей" программного обеспечения. Визуализирование, специфицирование, конструирование и документирование артефактов программных систем. Правила языка, диаграммы классов.
курсовая работа [613,9 K], добавлен 24.11.2010Создание имитационной модели системы массового обслуживания с помощью языка имитационного моделирования GPSS/PC - моделирование обработки на участке 500 деталей. Определение загрузки второго станка на вторичной обработке и вероятности появления отходов.
курсовая работа [602,3 K], добавлен 30.11.2010Рассмотрение основных типов данных: значений и ссылок. Отражение объектно-ориентированной методологии одиночного наследования IL в иерархической структуре общей системы типов. Виды интрефейсов и делегатов. Встроенные типы данных в спецификации CTS.
курсовая работа [99,0 K], добавлен 09.08.2015Основные понятия и назначение языка программирования СИ. Скалярные типы данных. Арифметические, логические и битовые операции над переменными целочисленного, вещественного, символьного, перечислимого типов. Примеры программ, выполняющие операции над ними.
презентация [269,9 K], добавлен 26.07.2013