Главная страница
Навигация по странице:

  • Мартин Одерски

  • Билл Веннерс

  • Фрэнк Соммерс

  • Scala. Профессиональное программирование 5-е издание

  • Scala. Профессиональное программирование 2022. Одерски Мартин, Спун Лекс, Веннерс Билл, Соммерс ФрэнкО41 Scala. Профессиональное программирование. 5е изд спб. Питер, 2022. 608 с. ил. Серия Библиотека программиста


    Скачать 6.24 Mb.
    НазваниеОдерски Мартин, Спун Лекс, Веннерс Билл, Соммерс ФрэнкО41 Scala. Профессиональное программирование. 5е изд спб. Питер, 2022. 608 с. ил. Серия Библиотека программиста
    Дата27.04.2023
    Размер6.24 Mb.
    Формат файлаpdf
    Имя файлаScala. Профессиональное программирование 2022.pdf
    ТипДокументы
    #1094967
    страница64 из 64
    1   ...   56   57   58   59   60   61   62   63   64
    602 Глоссарий apply
    . Функциональное значение, захватывающее свободные пере­
    менные, является замыканием.
    Функциональный литерал (function literal). Функция без имени в исходном коде Scala, описанная с помощью синтаксиса функциональных лите­
    ралов. Например,
    (x:
    Int,
    y:
    Int)
    =>
    x
    +
    y
    Функциональный стиль (functional style). В этом стилепрограммирования акцент делается на функциях и вычислении результатов, а порядок выполнения операций играет второстепенную роль. Характерные черты этого стиля — передача функциональных значений в методы с циклами, неизменяемые данные и методы без побочных эффектов.
    Эта парадигма доминирует в таких языках, как Haskell и Erlang, кон­
    трастируя с императивным стилем.
    Функция (function). Функцию можно вызвать со списком аргументов для по­
    лучения какого­либо результата. У функции есть список параметров, тело и возвращаемый тип. Функции, являющиеся членами класса, трейта или объекта­сигнлтона, называются методами. Функции, опре­
    деленные внутри других функций, называются локальными. Функ­
    ции, возвращающие тип
    Unit
    , называются процедурами. Анонимные функции в исходном коде называются функциональными литералами.
    Во время выполнения для функционального литерала создается объ­
    ект, называемый функциональным значением.
    Функция без параметров (parameterless function). Функция, которая не при­
    нимает параметров и определяется без использования пустых скобок.
    При вызове таких функций можно не указывать скобки. Это соответ­
    ствует принципу единообразного доступа, что позволяет поменять def на val
    , не модифицируя клиентский код.
    Функция первого класса (first­class function). Scala поддерживает функции
    первого класса. Это значит, вы можете выразить функцию в виде функ-
    ционального литерала (как, например, в
    (x:
    Int)
    =>
    x
    +
    1
    ) или объекта, который называют функциональным значением.
    Характеристика for (for comprehension). Альтернативное название выра­
    жения for
    Хвостовая рекурсия (tail recursive). Возникает, когда функция вызывает саму себя только в своей последней операции.
    Целевая типизация (target typing). Разновидность выведения типов, кото­
    рая учитывает, какой тип ожидается в итоге. Например, в nums.fil- ter((x)
    =>
    x
    >
    0)
    компилятор Scala определяет, что x
    — это тип эле­

    Глоссарий 603
    ментов nums
    , поскольку метод filter вызывает функцию для каждого элемента nums
    Частично примененная функция (partially applied function). Функция, кото­
    рая используется в выражении с неполным списком своих аргументов.
    Например, если функция f
    имеет тип
    Int
    =>
    Int
    =>
    Int
    , то f
    и f(1)
    будут частично примененными функциями.
    Член (member). Любой именованный элемент шаблона класса, трейта или объекта­синглтона. Чтобы обратиться к члену, нужно указать имя его владельца, точку и затем его простое имя. Например, поля и методы верхнего уровня, определенные в классе, являются членами этого класса. Трейт, определенный внутри класса, является его членом. Тип, определенный в классе с помощью ключевого слова type
    , является членом этого класса. Класс является членом пакета, в котором он определен. Тогда как локальную переменную или функцию нельзя считать членом окружающего ее блока.
    Шаблон (template). Тело класса, трейта или объекта­одиночки. Определяет сигнатуру типа, поведение и начальное состояние класса, трейта или объекта.
    Экземпляр (instance). Экземпляр класса — объект, понятие, которое суще­
    ствует только во время выполнения программы.

    Библиография
    [Abe96] Abelson, Harold and Gerald Jay Sussman. Structure and Interpretation of Computer Programs. The MIT Press, second edition, 1996.
    [Aho86] Aho, Alfred V., Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles,
    Techniques, and Tools. Addison­Wesley Longman Publishing Co., Inc.,
    Boston, MA, USA, 1986. ISBN 0­201­10088­6.
    [Bay72] Bayer, Rudolf. “Symmetric binary B­Trees: Data structure and mainte­
    nance algorithms.” Acta Informatica, 1 (4): 290–306, 1972.
    [Blo08] Bloch, Joshua. Effective Java Second Edition. Addison­Wesley, 2008.
    [DeR75] DeRemer, Frank and Hans Kron. “Programming­in­the large versus pro­
    gramming­in­the­small.” In Proceedings of the international conference on Reliable software, pages 114–121. ACM, New York, NY, USA, 1975. doi:http://doi.acm.org/10.1145/800027.808431.
    [Dij70] Dijkstra, Edsger W. “Notes on Structured Programming.”, April 1970.
    Circulated privately. Available at http://www.cs.utexas.edu/users/
    EWD/ewd02xx/EWD249.PDF as EWD249 (accessed June 6, 2008).
    [Eck98] Eckel, Bruce. Thinking in Java. Prentice Hall, 1998.
    [Emi07] Emir, Burak, Martin Odersky, and John Williams. “Matching Objects
    With Patterns.” In Proc. ECOOP, Springer LNCS, pages 273–295. July
    2007.
    [Eva03] Evans, Eric. Domain­Driven Design: Tackling Complexity in the Heart of Software. Addison­Wesley Professional, 2003.
    [Fow04] Fowler, Martin. “Inversion of Control Containers and the Dependency
    Injection pattern.” January 2004. Available on the web at http://mar­
    tinfowler.com/articles/injection.html (accesssed August 6, 2008).
    [Gam95] Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. De­
    sign Patterns: Elements of Reusable Object­Oriented Software. Addi­
    son­Wesley, 1995.
    [Goe06] Goetz, Brian, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Homes,
    and Doug Lea. Java Concurrency in Practice. Addison Wesley, 2006.

    Библиография 605
    [Jav]
    The Java Tutorials: Creating a GUI with JFC/Swing. Available on the
    Web at http://java.sun.com/docs/books/tutorial/uiswing.
    [Kay96] Kay, Alan C. “The Early History of Smalltalk.” In History of Program­
    ming languages — II, pages 511–598. ACM, New York, NY, USA, 1996.
    ISBN 0­201­89502­1. doi:http://doi.acm.org/10.1145/234286.1057828.
    [Kay03] Kay, Alan C. An Email to Stefan Ram on the Meaning of the Term
    “Object­oriented Programming”, July 2003. The Email is Published on the Web at http://www.purl.org/stefan_ram/pub/doc_kay_oop_en
    (accesssed June 6, 2008).
    [Kri19] Krikava, Filip, Heather Miller, and Jan Vitek. “Scala Implicits are Every­
    where: a Large­scale Study of the Use of Scala Implicits in the Wild.” In
    Proceedings of the ACM on Programming Languages, volume 3. ACM,
    2019. doi:https://doi.org/10.1145/3360589.
    [Lan66] Landin, Peter J. “The Next 700 Programming Languages.” Communica­
    tions of the ACM, 9 (3): 157–166, 1966.
    [Mey91] Meyers, Scott. Effective C++. Addison­Wesley, 1991.
    [Mey00] Meyer, Bertrand. Object­Oriented Software Construction. Prentice
    Hall, 2000.
    [Mor68] Morrison, Donald R. “PATRICIA—Practical Algorithm To Retrieve
    Information Coded in Alphanumeric.” J. ACM, 15 (4): 514–534, 1968.
    ISSN 0004­5411. doi:http://doi.acm.org/10.1145/321479.321481.
    [Ode03] Odersky, Martin, Vincent Cremet, Christine R
    öckl, and Matthias Ze­
    nger. “A Nominal Theory of Objects with Dependent Types.” In Proc.
    ECOOP’03, Springer LNCS, pages 201–225. July 2003.
    [Ode05] Odersky, Martin and Matthias Zenger. “Scalable Component Abstrac­
    tions.” In Proceedings of OOPSLA, pages 41–58. October 2005.
    [Ode11] Odersky, Martin. The Scala Language Specification, Version 2.9. EPFL,
    May 2011. Available on the Web at http://www.scalalang.org/docu/
    manuals.html (accessed April 20, 2014).
    [Ray99] Raymond, Eric. The Cathedral & the Bazaar: Musings on Linux and
    Open Source by an Accidental Revolutionary. O’Reilly, 1999.
    [Rum04] Rumbaugh, James, Ivar Jacobson, and Grady Booch. The Unified Mod­
    eling Language Reference Manual (2nd Edition). Addison­Wesley,
    2004.
    [SPJ02] Simon Peyton Jones, et.al. “Haskell 98 Language and Libraries, Revised
    Report.” Technical Report, http://www.haskell.org/onlinereport,
    2002.

    606 Библиография
    [Ste99] Steele, Jr., Guy L. “Growing a Language.” Higher­Order and Symbo­
    lic Computation, 12: 221–223, 1999. Transcript of a Talk Given at
    OOPSLA 1998.
    [Ste15] Steindorfer, Michael J and Jurgen J Vinju. “Optimizing hash­array mapped tries for fast and lean immutable JVM collections.” In ACM
    SIGPLAN Notices, volume 50, pages 783–800. ACM, 2015.
    [Str00] Strachey, Christopher. “Fundamental Concepts in Programming Lan­
    guages.” Higher­Order and Symbolic Computation, 13: 11–49, 2000.
    [Vaz07] Vaziri, Mandana, Frank Tip, Stephen Fink, and Julian Dolby. “Declar­
    ative Object Identity Using Relation Types.” In Proc. ECOOP 2007, pages 54–78. 2007.

    Об авторах
    Мартин Одерски, создатель языка Scala, — профессор в Федеральной поли­
    технической школе Лозанны, Швейцария (EPFL), и основатель Lightbend,
    Inc. Работает над языками программирования и системами, в частности над темой совмещения объектно­ориентированного и функционального подхо­
    дов. С 2001 года сосредоточен на проектировании, реализации и улучшении
    Scala. Внес вклад в разработку Java как соавтор обобщенных типов и соз­
    датель текущего эталонного компилятора javac
    . Мартину было присвоено звание действительного члена ACM.
    Лекс Спун — разработчик программного обеспечения в компании Square
    Inc.
    1
    , создающей простое в использовании программное обеспечение для бизнеса и мобильных платежей. Занимался Scala на протяжении двух лет в ходе постдокторантуры в EPFL. Помимо Scala, участвовал в разработке самых разнообразных языков, включая динамический язык Smalltalk, на­
    учный язык X10 и логический язык CodeQL.
    Билл Веннерс — президент Artima, Inc., занимающейся консалтингом, кур­
    сами, книгами и инструментами для работы со Scala. Автор книги Inside the
    Java Virtual Machine про архитектуру и внутреннее устройство платформы
    Java. Билл представляет сообщество в Scala Center и является ведущим разработчиком и проектировщиком фреймворка тестирования ScalaTest и библиотеки Scalactic, предназначенной для функционального и объектно­
    ориентированного программирования.
    Фрэнк Соммерс — основатель и президент компании Autospaces Inc., пре­
    доставляющей решения для автоматизации рабочих процессов в сфере финансовых услуг. Фрэнк ежедневно работает с языком Scala уже свыше двенадцати лет.
    1
    С 1 декабря 2021 года компания называется Block.

    Мартин Одерски, Лекс Спун, Билл Веннерс, Фрэнк Соммерс
    Scala. Профессиональное программирование
    5-е издание
    Перевел с английского А. Павлов
    Руководитель дивизиона
    Ю. Сергиенко
    Руководитель проекта
    А. Питиримов
    Ведущий редактор
    Н. Гринчик
    Литературные редакторы
    А. Аверьянов, Н. Хлебина
    Художественный редактор
    В. Мостипан
    Корректоры
    С. Беляева, Е. Павлович
    Верстка
    Л. Егорова
    Изготовлено в России. Изготовитель: ООО «Прогресс книга». Место нахождения и фактический адрес:
    194044, Россия, г. Санкт-Петербург, Б. Сампсониевский пр., д. 29А, пом. 52. Тел.: +78127037373.
    Дата изготовления: 07.2022. Наименование: книжная продукция. Срок годности: не ограничен.
    Налоговая льгота — общероссийский классификатор продукции ОК 034-2014, 58.11.12 — Книги печатные профессиональные, технические и научные.
    Импортер в Беларусь: ООО «ПИТЕР М», 220020, РБ, г. Минск, ул. Тимирязева, д. 121/3, к. 214, тел./факс: 208 80 01.
    Подписано в печать 19.05.22. Формат 70х100/16. Бумага офсетная. Усл. п. л. 49,020. Тираж 500. Заказ 0000.
    1   ...   56   57   58   59   60   61   62   63   64


    написать администратору сайта