Scala. Профессиональное программирование 2022. Одерски Мартин, Спун Лекс, Веннерс Билл, Соммерс ФрэнкО41 Scala. Профессиональное программирование. 5е изд спб. Питер, 2022. 608 с. ил. Серия Библиотека программиста
Скачать 6.24 Mb.
|
602 Глоссарий apply . Функциональное значение, захватывающее свободные пере менные, является замыканием. Функциональный литерал (function literal). Функция без имени в исходном коде Scala, описанная с помощью синтаксиса функциональных лите ралов. Например, (x: Int, y: Int) => x + y Функциональный стиль (functional style). В этом стилепрограммирования акцент делается на функциях и вычислении результатов, а порядок выполнения операций играет второстепенную роль. Характерные черты этого стиля — передача функциональных значений в методы с циклами, неизменяемые данные и методы без побочных эффектов. Эта парадигма доминирует в таких языках, как Haskell и Erlang, кон трастируя с императивным стилем. Функция (function). Функцию можно вызвать со списком аргументов для по лучения какоголибо результата. У функции есть список параметров, тело и возвращаемый тип. Функции, являющиеся членами класса, трейта или объектасигнлтона, называются методами. Функции, опре деленные внутри других функций, называются локальными. Функ ции, возвращающие тип Unit , называются процедурами. Анонимные функции в исходном коде называются функциональными литералами. Во время выполнения для функционального литерала создается объ ект, называемый функциональным значением. Функция без параметров (parameterless function). Функция, которая не при нимает параметров и определяется без использования пустых скобок. При вызове таких функций можно не указывать скобки. Это соответ ствует принципу единообразного доступа, что позволяет поменять def на val , не модифицируя клиентский код. Функция первого класса (firstclass 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. AddisonWesley Longman Publishing Co., Inc., Boston, MA, USA, 1986. ISBN 0201100886. [Bay72] Bayer, Rudolf. “Symmetric binary BTrees: Data structure and mainte nance algorithms.” Acta Informatica, 1 (4): 290–306, 1972. [Blo08] Bloch, Joshua. Effective Java Second Edition. AddisonWesley, 2008. [DeR75] DeRemer, Frank and Hans Kron. “Programminginthe large versus pro gramminginthesmall.” 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. DomainDriven Design: Tackling Complexity in the Heart of Software. AddisonWesley 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 ObjectOriented Software. Addi sonWesley, 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 0201895021. doi:http://doi.acm.org/10.1145/234286.1057828. [Kay03] Kay, Alan C. An Email to Stefan Ram on the Meaning of the Term “Objectoriented 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 Largescale 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++. AddisonWesley, 1991. [Mey00] Meyer, Bertrand. ObjectOriented 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 00045411. 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). AddisonWesley, 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.” HigherOrder 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 hasharray 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.” HigherOrder 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. |