Книга «Scala. Профессиональное программирование»

    image Привет, Хаброжители! Наконец-то мы можем предложить вам результаты титанического труда наших переводчиков и редакторов – долгожданное классическое издание по языку 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
    Поделиться публикацией
    Похожие публикации
    Комментарии 22
    • +2
      Зашел на сайт с книгой, а там:
      «Перед вами — исчерпывающее руководство по Scala, элитарному языку программирования для JVM.»

      Вы серьезно?
    • 0
      Все примеры в издании скомпилированы с использованием Scala версии 2.11.7.

      Есть ли что-то про 2.12? В 2.12 (вышедшей примерно год назад) есть интересные вещи по взаимодействию с java.

      • 0
        В самой книге написано, что она по 2.12.2 версии.
        • 0
          Да, исправили опечатку в посте.

          Все примеры в издании скомпилированы с использованием Scala версии 2.11.7, за исключением тех, что имеют пометку 2.12, — они скомпилированы с использованием версии 2.12.0-M3. Интеграция с Java 8 показана на примере 2.12, и в 32-й главе рассмотрены новые возможности 2.12.
      • +2

        Спасибо за книгу! Листал оригинал, понравилось. А у вас дешевле =)
        Электронная версия только в Google Play? У вас нет возможности купившим pdf/epub/mobi отправить?

        • 0
          В данный момент только на Google Play.
        • 0
          а какое отношение scala имеет к js???
        • +1
          Хорошая книга! Уже треть прочитал. Правда некоторые моменты в переводе режут глаз, вроде «концевой рекурсии» вместо «хвостовой рекурсии» или «выдачи исключения» вместо «выбрасывания исключения»
          • +1

            Мне бросилось в глаза "набор" вместо "множество" (set), "отображение" вместо "таблица" (map).

            • 0
              тогда уж «ассоциативный массив». впрочем в контексте скалы — нефакт
              • 0

                Очень редко Map — это массив. Классически, сбалансированное дерево или хэш-таблица.

          • 0
            не нашел на сайте, обложка твердая?
          • 0

            Вопрос к тем, кто читал эту книгу и "Scala для нетерпеливых" Хорстмана — есть ли между ними большая разница, стоит посмотреть на обе или можно остановиться на одной?

            • +2
              Эту ещё не начал читать, но «нетерпеливая» — это такой курс молодого бойца, без лирики, размышлений и исторических экскурсов. Мне нравится.
          • 0

            Жаль что вы ее продаете в электронном виде только через гугл букс. 900 руб на вашем сайте — 20 пц скидки это 720 руб = 10 евро. Захожу на гугл букс ссылку а там мне цена в 15 евро. Не нафиг, что за жульничество.

            • 0
              На нашем сайте нет скидки на данную электронную версию, некорректен приведенный расчет. Из-за особенностей прав, в данный момент, продажа только на Гугл Букс.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое