Привет, Хаброжители! Наконец-то мы можем предложить вам результаты титанического труда наших переводчиков и редакторов – долгожданное классическое издание по языку Scala. Все, кому известна аббревиатура JVM и не чуждо функциональное программирование, несомненно, оценят эту книгу (переоценить ее невозможно). Основной автор этого фолианта — Мартин Одерски, разработчик и идеолог языка Scala, стоявший у самых его истоков. Эта книга станет незаменимым приобретением для всех серьезных специалистов, имеющих опыт работы с Java и JVM. Авторы преследовали цель научить читателя всему необходимому, чтобы уверенно писать на языке Scala работоспособные и даже боеспособные приложения. Все примеры в издании скомпилированы с использованием Scala версии 2.11.7, за исключением тех, что имеют пометку 2.12, — они скомпилированы с использованием версии 2.12.0-M3
Для кого предназначена эта книга
Книга в основном рассчитана на разработчиков, желающих научиться программировать или же создать очередной проект на Scala. Кроме того, издание должно заинтересовать тех, кто хочет расширить свой кругозор, изучив новые концепции. Если вы, к примеру, программируете на Java, то в этой книге найдете для себя множество понятий функционального программирования, а также передовых концепций из сферы объектно-ориентированного программирования. Мы уверены, что изучение Scala и заложенных в этот язык идей поможет вам повысить свой профессиональный уровень как программиста.
Обзор содержимого
• Глава 1 «Масштабируемый язык» представляет обзор конструкции языка Scala, а также связанные с ним логические обоснования и исторические события.
• Глава 2 «Первые шаги в Scala» показывает, как в языке решаются основные задачи программирования, не вдаваясь в подробности, касающиеся особенностей работы механизмов языка. Цель этой главы — начало практической работы по набору и запуску кода Scala.
• Глава 3 «Последующие шаги в Scala» демонстрирует более сложные функциональные возможности языка Scala. Изучив материал, вы сможете приступить к использованию Scala для написания сценариев, решающих простые задачи.
• Глава 4 «Классы и объекты» — это начало углубленного рассмотрения языка Scala с описанием его основных объектно-ориентированных строительных блоков и указаниями по выполнению компиляции и запуску приложений Scala.
• Глава 5 «Основные типы и операции» охватывает основные типы Scala, их литералы, операции, которые могут над ними проводиться, вопросы работы уровней приоритетности и ассоциативности и дает представление об обогащающих оболочках.
• Глава 6 «Функциональные объекты» углубляет представление об объектно-ориентированных свойствах Scala, используя в качестве примера функциональные (то есть неизменяемые) рациональные числа.
• Глава 7 «Встроенные структуры управления» показывает способы использования встроенных структур управления Scala if, while, for, try и match.
• Глава 8 «Функции и замыкания» углубленно рассматривает функции как основные строительные блоки функциональных языков.
• Глава 9 «Управляющие абстракции» демонстрирует пути совершенствования основных управляющих структур Scala путем определения ваших собственных управляющих абстракций.
• Глава 10 «Композиция и наследование» рассматривает имеющуюся в Scala дополнительную поддержку объектно-ориентированного программирования. Затрагиваемые темы не носят такого же фундаментального характера, как те, что излагались в главе 4, но с рассматриваемыми в них вопросами часто приходится сталкиваться на практике.
• Глава 11 «Иерархия в Scala» объясняет иерархию наследования в языке Scala и рассматривает универсальные методы и низшие типы.
• Глава 12 «Трейты» охватывает существующий в Scala механизм создания подмешиваемых композиций. Показана работа трейтов, описываются примеры их наиболее частого использования и объясняется, как с помощью трейтов совершенствуется традиционное множественное наследование.
• Глава 13 «Пакеты и импортируемый код» рассматривает вопросы программирования в целом, включая высокоуровневые пакеты, инструкции импортирования и модификаторы управления доступом, подобные protected и private.
• Глава 14 «Утверждения и тесты» показывает существующий в Scala механизм утверждений и предоставляет обзор ряда инструментальных средств, доступных для написания тестов в Scala. Основное внимание уделено средству ScalaTest.
• Глава 15 «Case-классы и поиск по шаблону» вводит двойные конструкции, поддерживающие ваши действия при написании обычных, неинкапсулированных структур данных. Case-классы и поиск по шаблону принесут особую пользу в ходе работы с древовидными рекурсивными данными.
• Глава 16 «Работа со списками» подробно рассматривает списки, которые можно отнести, наверное, к самым востребованным структурам данных в программах на Scala.
• Глава 17 «Работа с другими коллекциями» показывает способы использования основных коллекций Scala, таких как списки, массивы, кортежи, наборы и отображения.
• Глава 18 «Изменяемые объекты» объясняет суть изменяемых объектов и обеспечиваемого Scala синтаксиса для выражения этих объектов. Глава завершается практическим примером моделирования дискретного события, в котором показан ряд изменяемых объектов в действии.
• Глава 19 «Параметризация типов» на конкретных примерах объясняет некоторые из технологических приемов для сокрытия информации, представленных в главе 13, например создание класса для функциональных запросов. Материалы главы подводят к описанию вариантности параметров типа и способов их взаимодействия с сокрытием информации.
• Глава 20 «Абстрактные элементы» описывает все разновидности поддерживаемых Scala абстрактных элементов — не только методов, но также полей и типов, которые могут объявляться абстрактными.
• Глава 21 «Подразумеваемые преобразования и параметры» рассматривает две конструкции, способные помочь избавить исходный код от излишней детализации, позволяя предоставить ее самому компилятору.
• Глава 22 «Реализация списков» описывает реализацию класса List. В ней рассматривается работа списков в Scala, в которой важно разбираться. Кроме того, реализация списков показывает, как используется ряд характерных особенностей языка Scala.
• Глава 23 «Возвращение к выражениям for» показывает, как выражения for превращаются в вызовы методов map, flatMap, filter и foreach.
• Глава 24 «Углубленное изучение коллекций» предлагает углубленный обзор библиотеки коллекций.
• Глава 25 «Архитектура коллекций Scala» демонстрирует, как устроена библиотека коллекций и как можно реализовывать собственные коллекции.
• Глава 26 «Экстракторы» показывает, как можно применять поиск по шаблонам в отношении не только case-классов, но и любых произвольных классов.
• Глава 27 «Аннотации» показывает, как можно работать с расширениями языка посредством аннотаций. В главе дается описание нескольких стандартных аннотаций и показано, как создать собственные аннотации.
• Глава 28 «Работа с XML» объясняет порядок обработки в Scala данных в формате XML. Показаны идиомы для создания XML, проведения синтаксического анализа данных в этом формате и обработки таких данных после анализа.
• Глава 29 «Модульное программирование с использованием объектов» содержит описание способов использования объектов Scala в качестве модульной системы.
• Глава 30 «Равенство объектов» высвечивает ряд проблемных вопросов, требующих рассмотрения при написании метода equals. Также описываются узкие места, которые следует обходить стороной.
• Глава 31 «Сочетание кодов Scala и Java» рассматривает проблемы, возникающие при сочетании совместно используемых кодов на Scala и Java в одном и том же проекте, и предлагает способы, позволяющие находить их решения.
• Глава 32 «Фьючерсы и многопоточные вычисления» показывает способы работы с классом Scala под названием Future. Хотя для программ на Scala могут использоваться примитивы многопоточных вычислений и библиотеки, применяемые на Java-платформе, фьючерсы помогут избежать возникновения условий взаимных блокировок и состязательных условий, являющихся проклятием традиционных подходов к многопоточным вычислениям в виде потоков и блокировок.
• Глава 33 «Синтаксический анализ с применением комбинаторов» показывает способы создания парсеров с использованием имеющейся в Scala библиотеки парсер-комбинаторов.
• Глава 34 «Программирование GUI» предлагает краткий обзор библиотеки Scala, упрощающей GUI-программирование с применением среды Swing.
• Глава 35 «Электронная таблица SCells» связывает все вместе, показывая полнофункциональное приложение электронной таблицы, написанное на языке Scala.
» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок
Для Хаброжителей скидка 20% по купону — Scala
Автор: ph_piter