Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
MitScala wird eine aufregende und leistungsstarke Sprache vorgestellt, die alle Vorteile eines modernen objektorientierten Programmiermodells (OOP), funktionaler Programmierung (FP) und eines fortschrittlichen Typensystems bietet. Ursprünglich war Scala für die Java Virtual Machine (JVM) gedacht, aber jetzt ist es auch für JavaScript und native Ausführung geeignet. In diesem umfassenden Buch lernst du anhand von Codebeispielen, wie du mit Scala schnell produktiv werden kannst, und erfährst, was diese Sprache ideal für die skalierbaren, verteilten, komponentenbasierten Anwendungen von heute macht, die in jedem Maßstab laufen.
Erfahre mehr unter http://programming-scala.org oder auf der Katalogseite des Buches.
Willkommen bei Programming Scala, Third Edition
Dean Wampler, April 2021
Programming Scala, second edition wurde vor sechs Jahren, im Herbst 2014, veröffentlicht. Damals stieg das Interesse an Scala aufgrund von zwei Faktoren sprunghaft an.
Erstens waren alternative Sprachen für die JVM anstelle von Java sehr verlockend. Die Entwicklung von Java verlief damals langsam und frustrierte Entwickler, die sich Verbesserungen wie eine prägnantere Syntax für einige Konstrukte und Funktionen wünschten, die sie in anderen Sprachen wie FP gesehen hatten.
Zweitens war Big Data ein heißes Pflaster für die Softwareindustrie, und einige der beliebtesten Tools in diesem Bereich, insbesondere Apache Spark und Apache Kafka, waren in Scala geschrieben und boten prägnante und elegante Scala-APIs.
In sechs Jahren hat sich viel verändert. Oracle gebührt ein großes Lob dafür, dass es Java nach dem Kauf von Sun Microsystems wiederbelebt hat. Das Innovationstempo hat sich erheblich verbessert und viele wichtige Funktionen wurden hinzugefügt, wie z. B. die Unterstützung für anonyme Funktionen, Lambdas genannt, die das größte fehlende Feature für FP darstellen.
Außerdem wurde die Sprache Kotlin von dem Tool-Anbieter JetBrains als "besseres Java" entwickelt, das nicht so anspruchsvoll ist wie Scala. Kotlin erhielt einen großen Auftrieb, als Google es als bevorzugte Sprache für Android-Apps bestätigte. Etwa zur gleichen Zeit führte Apple eine Sprache namens Swift ein, die vor allem für die iOS-Entwicklung gedacht ist und eine Scala-ähnliche Syntax hat, obwohl sie nicht auf die JVM ausgerichtet ist.
Big Data hat die Entstehung von Data Science als Beruf vorangetrieben. Eigentlich war dies nur eine Umbenennung und Verfeinerung dessen, was Datenanalysten und Statistiker schon seit Jahren gemacht haben. Die Spezialgebiete Deep Learning (d.h. die Nutzung neuronaler Netze), Reinforcement Learning und künstliche Intelligenz sind derzeit die heißesten Themen in der Datenwelt. Sie alle werden unter dem Oberbegriff maschinelles Lernen zusammengefasst. Ein großer Teil der beliebten Tools für Data Science und maschinelles Lernen ist in Python geschrieben (oder stellt Python-APIs auf C++-Kerneln zur Verfügung). Infolgedessen wächst das Interesse an Python wieder stark, während sich das Wachstum von Scala in der Datenwelt verlangsamt hat.
Aber Scala ist nicht untätig geblieben. Das Scala Center an der École Polytechnique Fédérale de Lausanne (EPFL) wurde gegründet, um die Entwicklung der Sprache und der wichtigsten Open-Source-Tools für das Ökosystem, wie Build-Tools und integrierte Entwicklungsumgebungen, voranzutreiben, während Lightbend weiterhin der wichtigste Anbieter von kommerziellem Support für Scala in Unternehmen ist.
Die Früchte dieser Arbeit sind zahlreich, aber Scala Version 3 ist das bisher wichtigste Ergebnis. Sie bringt Änderungen, die die Ausdruckskraft und Korrektheit von Scala verbessern und veraltete und weniger nützliche Funktionen entfernen. Scala 3 ist der Schwerpunkt dieser Ausgabe, egal ob du mit Scala 2 Erfahrung hast oder ganz neu in Scala bist.
Scala 3 setzt die beispiellose Erfolgsgeschichte von Scala als führende Sprachforschungsplattform fort und ist gleichzeitig pragmatisch für den breiten industriellen Einsatz. Scala 3 überarbeitet das branchenführende implizite System, damit gängige Idiome einfacher zu verwenden und zu verstehen sind. Dieses System hat die Entwicklung eleganter, typsicherer APIs vorangetrieben, die weit über das hinausgehen, was mit allen anderen gängigen Sprachen möglich ist. Die optionale Syntax ohne Klammern macht den ohnehin schon präzisen Scala-Code noch makelloser und spricht auch Python-Datenwissenschaftler an, die mit Scala-basiertem Data Engineering Code arbeiten. Scalas einzigartige, durchdachte Kombination aus FP und OOP ist die beste, die ich je gesehen habe. Alles in allem ist Scala 3 nach wie vor meine Lieblings-Programmiersprache, prägnant und elegant, aber dennoch mächtig, wenn ich sie brauche.
Außerdem ist Scala jetzt eine brauchbare Sprache, um JavaScript-Anwendungen mit Scala.js anzusteuern. Unterstützung für Scala als native Sprache (direkt in Maschinen-Objektcode kompiliert) ist jetzt über Scala Native verfügbar. Ich werde nicht auf die Einzelheiten der Verwendung von Scala.js und Scala Native eingehen, aber in der Bibliographie sind mehrere Ressourcen aufgeführt, wie [LiHaoyi2020] und [Whaling2020].
Derzeit teile ich meine Zeit zwischen der Python-basierten Welt des maschinellen Lernens und der Scala-basierten JVM-Welt auf. Wenn ich Python verwende, vermisse ich die Prägnanz, Leistungsfähigkeit und Korrektheit von Scala. Die starke Verwendung von Mutation und die unvollständigen Sammlungen verringern meine Produktivität und machen meinen Code langatmiger. Wenn ich Scala verwende, vermisse ich jedoch die Fülle an datenzentrierten Bibliotheken, die in der Python-Welt verfügbar sind.
Alles in allem wächst das Interesse an Scala heute nicht mehr so schnell, aber Entwickler, die die Leistungsfähigkeit und Eleganz von Scala nutzen wollen, sorgen dafür, dass die Community lebendig bleibt und wächst, vor allem in größeren Unternehmen, die JVM-zentriert und Cloud-basiert sind. Wer weiß, was die nächsten fünf oder sechs Jahre bringen werden, wenn die vierte Auflage von Programming Scala erscheint?
Mit jeder Ausgabe dieses Buches habe ich versucht, eine umfassende Einführung in die Funktionen und Kernbibliotheken von Scala zu geben, illustriert mit vielen pragmatischen Beispielen und Tipps, die auf meiner langjährigen Erfahrung in der Softwareentwicklung basieren. Diese Ausgabe stellte mich vor besondere Herausforderungen, denn der Übergang von Scala 2 zu 3 erfordert das Verständnis alter und neuer Funktionen sowie den Plan, alte Funktionen über mehrere Scala 3-Releases hinweg auslaufen zu lassen. Ich habe die wichtigsten Funktionen von Scala 2 erklärt, die du für die Arbeit mit bestehenden Codebasen brauchst, während ich einige selten genutzte Funktionen ignoriert habe, die in Scala 3 weggefallen sind (wie die Prozedursyntax). Wenn ich mich auf Scala 2-Funktionen beziehe, meine ich die Funktionen, die in der letzten Scala 2-Version, 2.13.X, vorhanden waren, sofern nicht anders angegeben.
Außerdem habe ich die Übersichten über die Scala-Bibliotheken in den vorherigen Ausgaben gekürzt. Ich denke, das macht das Buch für dich nützlicher. Eine Google-Suche ist der beste Weg, um zum Beispiel die neueste und beste Bibliothek für die Arbeit mit JSON zu finden. Was sich nicht so schnell ändert und was auf Stack Overflow schwerer zu finden ist, ist das Wissen darüber, wie man Scala am besten für eine robuste, praxisnahe Entwicklung einsetzt. Daher ist es mein Ziel, dir in dieser Ausgabe zu zeigen, wie du Scala effektiv für eine Vielzahl von pragmatischen Problemen einsetzen kannst, ohne dabei jeden Eckfall der Sprache oder die fortschrittlichsten Idiome im Scala-Code zu behandeln.
Schließlich habe ich dieses Buch für professionelle Programmierer geschrieben. Ich werde eher tiefer gehende technische Themen anpacken, als den Stoff leicht zu halten. Es gibt großartige alternative Bücher, wenn du weniger Tiefe bevorzugst. Dies ist ein Buch für alle, die Scala professionell beherrschen wollen.
Wie man dieses Buch liest
Die ersten drei Kapitel bieten einen schnellen Überblick über die Funktionen, ohne zu sehr in die Tiefe zu gehen. Wenn du bereits Erfahrung mit Scala hast, kannst du diese Kapitel überfliegen, um die neuen Funktionen von Scala 3 zu finden, die dort vorgestellt werden. Das "3"-Symbol am linken Rand erleichtert das Auffinden der Scala 3-spezifischen Inhalte im gesamten Buch. Wenn du neu in Scala bist, solltest du sicherstellen, dass du alle Inhalte in diesen Kapiteln gründlich verstanden hast.
In den Kapiteln 4-15 werden die wichtigsten Funktionen noch einmal eingehend behandelt. Wenn du dieses Material gelernt hast, wirst du mit den meisten Scala-Codebasen sehr produktiv arbeiten können. Für erfahrene Leserinnen und Leser sind die Kapitel 5 und 6 am interessantesten, weil sie die neuen Möglichkeiten der Abstraktion über den Kontext (d.h. Implicits) behandeln. Die Kapitel 7bis 12sind für Scala 2 und 3 größtenteils identisch, vor allem der Teil, der sich mit Scala als OOP-Sprache beschäftigt. Allerdings wirst du in all diesen Kapiteln Änderungen an Scala 3 finden. Außerdem verwenden alle Beispiele die neue, optionale Notation von Scala 3, bei der die meisten geschweiften Klammern weggelassen werden.
In den Kapiteln 16 und 17 geht es um den Rest des ausgeklügelten Typensystems von Scala. Ich habe versucht, die wichtigsten Konzepte, die du kennenlernen wirst, in Kapitel 16 zu behandeln und die fortgeschritteneren Themen in Kapitel 17. In diesen Kapiteln findest du viele neue Inhalte zu Scala 3.
Wähle schließlich die Abschnitte in den Kapiteln 18-24 so aus, wie du die darin behandelten Konzepte verstehen musst. Wenn du zum Beispiel auf das beliebte, aber fortgeschrittene Thema der Kategorientheorie stößt, lies Kapitel 18. Wenn du Gleichzeitigkeit und Verteilung für Skalierbarkeit nutzen musst, lies Kapitel 19. Wenn du ein Gleichgewicht zwischen dynamischer und statischer Typisierung finden willst oder domänenspezifische Sprachen schreiben musst, lies Kapitel 20 bzw. 21. Wenn du mehr über die Werkzeuge im Scala-Ökosystem und die Kombination von Java- und Scala-Code wissen willst, findest du in Kapitel 22 Tipps. Kapitel 23 ist gewissermaßen ein zusammenfassendes Kapitel, das meine Gedanken zur effektiven Nutzung von Scala für die langfristige, skalierbare Anwendungsentwicklung zusammenfasst. In Kapitel 24 schließlich werden die leistungsstarken Metaprogrammierfunktionen von Scala vorgestellt, die in Scala 3 erhebliche Änderungen erfahren haben.
Als Nachschlagewerk fasst ein Anhang die optionalen neuen Syntaxkonventionen im Vergleich zur traditionellen Syntax zusammen. Ein Verzeichnis der Referenzen und ein Index schließen das Buch ab.
Willkommen bei Programming Scala, Second Edition
Dean Wampler, November 2014
Die erste Ausgabe vonProgramming Scala wurde vor fünf Jahren, im Herbst 2009, veröffentlicht. Damals war es erst das dritte Buch, das Scala gewidmet war, und es verpasste den zweiten Platz nur um ein paar Monate. Die offizielle Version von Scala war 2.7.5, die Version 2.8.0 steht kurz vor der Fertigstellung.
Seitdem hat sich eine Menge geändert. Zum Zeitpunkt der Erstellung dieses Artikels ist die Scala-Version 2.11.2. Martin Odersky, der Schöpfer von Scala, und Jonas Bonér, der Schöpfer von Akka, einem akteursbasierten Gleichzeitigkeitsframework, haben Typesafe (jetzt Lightbend) mitbegründet, um die Sprache und die darauf aufbauenden Tools zu fördern.
Es gibt auch viele weitere Bücher über Scala. Brauchen wir also wirklich eine zweite Auflage dieses Buches? Es gibt inzwischen viele hervorragende Einsteigerhandbücher zu Scala. Auch ein paar Bücher für Fortgeschrittene sind erschienen. Die enzyklopädische Referenz bleibt Programming in Scala, zweite Auflage, von Odersky et al. (Artima Press).
Dennoch glaube ich, dass Programming Scala, zweite Auflage, einzigartig bleibt, weil es ein umfassender Leitfaden für die Scala-Sprache und das Scala-Ökosystem ist, ein Leitfaden für Anfänger und Fortgeschrittene, und weil es den Fokus auf die pragmatischen Belange von Berufstätigen beibehält. Diese Eigenschaften machten die erste Ausgabe so beliebt.
Scala wird heute von viel mehr Unternehmen eingesetzt als noch 2009, und die meisten Java-Entwickler haben inzwischen von Scala gehört. Es sind einige hartnäckige Fragen aufgetaucht. Ist Scala nicht komplex? Warum sollte ich zu Scala wechseln, da Java 8 wichtige neue Funktionen von Scala enthält?
Ich werde diese und andere Probleme aus der Praxis angehen. Ich habe schon oft gesagt, dass mich Scala mit all seinen Fehlern verführt hat. Ich hoffe, dass es dir nach der Lektüre von Programming Scala, second edition genauso geht.
Willkommen zur Programmierung von Scala, Erste Ausgabe
Dean Wampler und Alex Payne, September 2009
Programmiersprachen werden aus vielen Gründen populär. Manchmal bevorzugen Programmierer auf einer bestimmten Plattform eine bestimmte Sprache, oder eine Sprache wird von einem Anbieter institutionalisiert. Die meisten macOS-Programmierer verwenden Objective-C. Die meisten Windows-Programmierer verwenden C++ und .NET. Die meisten Entwickler von eingebetteten Systemen verwenden C und C++.
Manchmal weicht die Popularität, die sich aus technischen Verdiensten ergibt, einer Mode und Fanatismus. C++, Java und Ruby sind die Objekte fanatischer Hingabe unter Programmierern.
Manchmal wird eine Sprache populär, weil sie zu den Bedürfnissen ihrer Zeit passt. Java wurde zunächst als perfekte Lösung für browserbasierte Rich-Client-Anwendungen angesehen. Smalltalk verkörperte das Wesen der objektorientierten Programmierung, als dieses Modell der Programmierung in den Mainstream eindrang.
Nebenläufigkeit, Heterogenität, Always-on-Dienste und immer kürzer werdende Entwicklungszeiträume treiben heute das Interesse an funktionaler Programmierung in die Höhe. Es scheint, dass die Vorherrschaft der objektorientierten Programmierung vorbei ist. Das Mischen von Paradigmen wird immer beliebter, ja sogar notwendig.
Wir haben uns von anderen Sprachen für Scala entschieden, weil Scala viele der optimalen Qualitäten verkörpert, die wir uns von einer Allzweckprogrammiersprache für die Arten von Anwendungen wünschen, die wir heute entwickeln: zuverlässige, hochleistungsfähige, hochkonkurrierende Internet- und Unternehmensanwendungen.
Scala ist eine Mehrparadigmensprache, die sowohl objektorientierte als auch funktionale Programmieransätze unterstützt. Scala ist skalierbar und eignet sich für alles, von kurzen Skripten bis hin zu großen, komponentenbasierten Anwendungen. Scala ist anspruchsvoll und enthält die modernsten Ideen aus den Informatikfakultäten der ganzen Welt. Und doch ist Scala praktisch. Sein Schöpfer, Martin Odersky, hat jahrelang an der Entwicklung von Java mitgewirkt und kennt die Bedürfnisse von professionellen Entwicklern.
Wir wurden von Scala verführt, von seiner prägnanten, eleganten und ausdrucksstarken Syntax und von der Vielzahl an Werkzeugen, die uns zur Verfügung stehen. In diesem Buch versuchen wir zu zeigen, warum all diese Eigenschaften Scala zu einer überzeugenden und unverzichtbaren Programmiersprache machen.
Wenn du ein erfahrener Entwickler bist, der eine schnelle, gründliche Einführung in Scala sucht, ist dieses Buch genau das Richtige für dich. Vielleicht überlegst du, ob du Scala als Ersatz oder Ergänzung zu deinen bisherigen Sprachen einsetzen willst. Vielleicht hast du dich aber auch schon für Scala entschieden und musst die Funktionen und den richtigen Umgang damit lernen. Wie auch immer, wir hoffen, dir diese mächtige Sprache auf eine zugängliche Art und Weise näher zu bringen.
Wir gehen davon aus, dass du dich mit objektorientierter Programmierung gut auskennst, aber wir gehen nicht davon aus, dass du bereits Erfahrung mit funktionaler Programmierung hast. Wir gehen davon aus, dass du Erfahrung mit einer oder mehreren anderen Programmiersprachen hast. Wir ziehen Parallelen zu Funktionen in Java, C#, Ruby und anderen Sprachen. Wenn du eine dieser Sprachen kennst, werden wir dich auf ähnliche Funktionen in Scala hinweisen, aber auch auf viele neue Funktionen.
Unabhängig davon, ob du aus dem Bereich der objektorientierten oder funktionalen Programmierung kommst, wirst du sehen, wie Scala beide Paradigmen elegant kombiniert und ihre Komplementarität unter Beweis stellt. Anhand vieler Beispiele wirst du verstehen, wie und wann du OOP- und FP-Techniken auf viele verschiedene Designprobleme anwenden kannst.
Am Ende hoffen wir, dass auch du dich von Scala verführen lassen wirst. Selbst wenn Scala nicht zu deiner Alltagssprache wird, hoffen wir, dass du Erkenntnisse gewinnst, die du unabhängig von der Sprache, die du benutzt, anwenden kannst.
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
Code-Beispiele verwenden
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Im Allgemeinen darfst du den Code in diesem Buch in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich.
Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Programming Scala dritte Ausgabe von Dean Wampler (O'Reilly). Copyright 2021 Dean Wampler, 978-1-492-07789-3."
Wenn du der Meinung bist, dass deine Verwendung von Codebeispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, sende bitte eine E-Mail an bookquestions@oreilly.com.
Die Code-Beispiele erhalten
Du kannst die Code-Beispiele von GitHub herunterladen. Entpacke die Dateien an einen geeigneten Ort. In der README-Datei in der Distribution findest du Anweisungen zum Erstellen und Verwenden der Beispiele. Ich werde diese Anweisungen im ersten Kapitel zusammenfassen.
Einige der Beispieldateien können mit dem Befehl scala
als Skript ausgeführt werden. Andere müssen in Klassendateien kompiliert werden. Einige Dateien sind nur mit Scala 2 kompatibel, und einige Dateien sind zusätzliche Beispiele, die nicht von sbt
, dem Build-Tool, erstellt werden. Um diese Gruppen getrennt zu halten, habe ich die folgenden Konventionen für die Verzeichnisstruktur übernommen:
- src/main/scala/.../*.scala
-
Werden alle Scala 3 Quelldateien mit
sbt
erstellt. Die Standard-Dateierweiterung von Scala ist .scala.
- src/main/scala-2/.../*.scala
-
Sind alle Scala 2 Quelldateien, von denen einige nicht mit Scala 3 kompiliert werden können. Sie werden nicht mit
sbt
gebaut.
- src/test/.../*.scala
-
Werden alle Scala 3 Testquelldateien mit
sbt
erstellt und ausgeführt.
- src/script/.../*.scala
-
Das sind alles "Skript"-Dateien, die nicht mit
scalac
kompiliert werden können. Stattdessen sind sie für Experimente in der interaktiven Befehlszeilenschnittstelle (CLI)scala
gedacht.
O'Reilly Online Learning
Hinweis
Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.
Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/programming-scala-3 aufrufen .
Schreib eine E-Mail an bookquestions@oreilly.com, um Kommentare oder technische Fragen zu diesem Buch zu stellen.
Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter http://oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://youtube.com/oreillymedia
Danksagungen für die dritte Ausgabe
Bei der Arbeit mit frühen Versionen von Scala 3 bin ich oft auf nicht implementierte Funktionen und unvollständige Dokumentation gestoßen. Die Mitglieder der Scala-Community haben mir wertvolle Hilfe geleistet, während ich gelernt habe, was neu ist. Die Dokumentation des Scala Center an der EPFL für Dotty lieferte wichtige Informationen. Seit der Veröffentlichung der zweiten Ausgabe hat sich das Scala Center zur wichtigsten Organisation entwickelt, die die Entwicklung der Sprache und der Open-Source-Werkzeuge für das Ökosystem vorantreibt, während Lightbend weiterhin der wichtigste Anbieter von kommerziellem Support für Scala in Unternehmen ist. Besonders dankbar bin ich den Rezensenten dieser Ausgabe - Seth Tisue, der auch das wunderbare Vorwort für diese Ausgabe geschrieben hat, Daniel Hinojosa, Eric Loots, Ramnivas Laddad und Lutz Hühnken - und für die Ratschläge und das Feedback meiner Redakteure bei O'Reilly, Michele Cronin, Katherine Tozer und Suzanne McQuade.
Ein besonderer Dank geht auch an Ann, die mir erlaubt hat, so viel Zeit für dieses Projekt zu verwenden. Ich liebe dich!
Danksagungen für die zweite Ausgabe
Bei der Arbeit an dieser Ausgabe des Buches habe ich weiterhin die Unterstützung und das Feedback vieler meiner Typesafe-Kollegen genossen, sowie das wertvolle Feedback von Leuten, die die Early-Access-Versionen durchgesehen haben. Besonders dankbar bin ich Ramnivas Laddad, Kevin Kilroy, Lutz Hühnken und Thomas Lockney, die Entwürfe des Manuskripts geprüft haben. Meinem langjährigen Kollegen und Freund Jonas Bonér danke ich dafür, dass er ein aktualisiertes Vorwort für das Buch geschrieben hat.
Und ein besonderer Dank geht an Ann, die mir erlaubt hat, so viel von unserer persönlichen Zeit für dieses Projekt aufzuwenden. Ich liebe dich!
Danksagungen für die erste Ausgabe
Bei der Entwicklung dieses Buches haben viele Menschen frühe Entwürfe gelesen und zahlreiche Verbesserungsvorschläge gemacht, für die wir unendlich dankbar sind. Besonders dankbar sind wir Steve Jensen, Ramnivas Laddad, Marcel Molina, Bill Venners und Jonas Bonér für ihr ausführliches Feedback.
Ein Großteil des Feedbacks, das wir erhalten haben, kam über die Safari Rough Cuts und die Online-Ausgabe. Wir sind dankbar für das Feedback von (in keiner bestimmten Reihenfolge) Iulian Dragos, Nikolaj Lindberg, Matt Hellige, David Vydra, Ricky Clarkson, Alex Cruise, Josh Cronemeyer, Tyler Jennings, Alan Supynuk, Tony Hillerson, Roger Vaughn, Arbi Sookazian, Bruce Leidl, Daniel Sobral, Eder Andres Avila, Marek Kubica, Henrik Huttunen, Bhaskar Maddala, Ged Byrne, Derek Mahar, Geoffrey Wiseman, Peter Rawsthorne, Geoffrey Wiseman, Joe Bowbeer, Alexander Battisti, Rob Dickens, Tim MacEachern, Jason Harris, Steven Grady, Bob Follek, Ariel Ortiz, Parth Malwankar, Reid Hochstedler, Jason Zaugg, Jon Hanson, Mario Gleichmann, David Gates, Zef Hemel, Michael Yee, Marius Kreis, Martin Süsskraut, Javier Vegas, Tobias Hauth, Francesco Bochicchio, Stephen Duncan Jr., Patrik Dudits, Jan Niehusmann, Bill Burdick, David Holbrook, Shalom Deitch, Jesper Nordenberg, Esa Laine, Gleb Frank, Simon Andersson, Patrik Dudits, Chris Lewis, Julian Howarth, Dirk Kuzemczak, Henri Gerrits, John Heintz, Stuart Roebuck, und Jungho Kim. Viele andere Leser, von denen wir nur die Benutzernamen kennen, haben uns ebenfalls Feedback gegeben. Wir danken Zack, JoshG, ewilligers, abcoates, brad, teto, pjcj, mkleint, dandoyon, Arek, rue, acangiano, vkelman, bryanl, Jeff, mbaxter, pjb3, kxen, hipertracker, ctran, Ram R., cody, Nolan, Joshua, Ajay, Joe und den anonymen Autoren. Wir entschuldigen uns, wenn wir jemanden übersehen haben!
Unser Redakteur Mike Loukides weiß, wie man sanft schiebt und stupst. Er war uns während dieses verrückten Prozesses eine große Hilfe. Viele andere Leute bei O'Reilly waren immer da, um unsere Fragen zu beantworten und uns weiterzuhelfen.
Wir danken Jonas Bonér, dass er das Vorwort für dieses Buch geschrieben hat. Jonas ist ein langjähriger Freund und Mitarbeiter aus der Gemeinschaft der aspektorientierten Programmierung. Jahrelang hat er Pionierarbeit in der Java-Gemeinschaft geleistet. Jetzt setzt er seine Energie dafür ein, Scala zu fördern und die Gemeinschaft zu vergrößern.
Bill Venners hat uns freundlicherweise das Zitat auf der Rückseite des Buches zur Verfügung gestellt. Das erste veröffentlichte Buch über Scala, Programming in Scala, das er zusammen mit Martin Odersky und Lex Spoon geschrieben hat, ist für Scala-Entwickler unverzichtbar. Bill hat auch die wunderbare ScalaTest-Bibliothek entwickelt.
Wir haben viel von anderen Entwicklern aus der ganzen Welt gelernt. Neben Jonas und Bill haben Debasish Ghosh, James Iry, Daniel Spiewak, David Pollack, Paul Snively, Ola Bini, Daniel Sobral, Josh Suereth, Robey Pointer, Nathan Hamblen, Jorge Ortiz und andere mit ihren Blogeinträgen, Forumsdiskussionen und persönlichen Gesprächen dunkle Ecken erhellt.
Dean dankt seinen Kollegen bei Object Mentor und mehreren Entwicklern bei Kunden für viele anregende Diskussionen über Sprachen, Softwaredesign und die pragmatischen Probleme, mit denen Entwickler in der Industrie konfrontiert sind. Die Mitglieder der Gruppe Chicago Area Scala Enthusiasts (CASE) waren ebenfalls eine Quelle wertvollen Feedbacks und Inspiration.
Alex dankt seinen Kollegen bei Twitter für ihre Ermutigung und ihre hervorragende Arbeit, mit der sie die Effektivität von Scala als Sprache demonstriert haben. Er dankt auch den Bay Area Scala Enthusiasts (BASE) für ihre Motivation und Gemeinschaft.
Vor allem aber danken wir Martin Odersky und seinem Team für die Entwicklung von Scala.
Get Scala programmieren, 3. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.