Sie sind hier
E-Book

Grundkurs funktionale Programmierung mit Scala

AutorLothar Piepmeyer
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2010
Seitenanzahl306 Seiten
ISBN9783446424166
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis23,99 EUR

FUNKTIONALE PROGRAMMIERUNG REVISITED
- Steigen Sie in die funktionale Programmierung auf der Basis Ihrer Java-Kenntnisse ein.
-Lernen Sie die Programmiersprache Scala und ihre Vorzüge kennen.
-Jedes Kapitel enthält Übungsaufgaben.
-Auf der Website zum Buch: Die Lösungen der Übungsaufgaben und ein Foliensatz für Dozenten


GRUNDKURS FUNKTIONALE PROGRAMMIERUNG MIT SCALA
Funktionale Programmierung erlebt eine Renaissance - viele Programmiersprachen nutzen inzwischen Ideen der funktionalen Programmierung, etwa zur Parallelisierung von Software. Und es gibt jetzt auch eine neue, moderne funktionale Programmiersprache: Scala. Sie ist mit Java kompatibel und genießt nicht zuletzt deshalb große Aufmerksamkeit. Ausreichend Gründe also, um sich mit den Grundlagen der funktionalen Programmierung auseinanderzusetzen.
Dieser Grundkurs führt Sie in die funktionale Programmierung ein. Sie lernen die Besonderheiten dieses Programmierparadigmas zunächst an Java kennen. Im nächsten Schritt steigen Sie auf die Sprache Scala um. Am Beispiel von Scala erklärt Ihnen der Autor die typischen Elemente funktionaler Sprachen und zeigt, wie Sie sie in der Praxis anwenden können.
"Das ist doch nur was für Spinner." Diese Meinung hat man lange Zeit explizit oder zwischen den Zeilen gehört, wenn man in Projekten den Einsatz funktionaler Programmierung vorgeschlagen hat. Die Zeiten ändern sich aber: Nach über 50 Jahren hat diese Art der Softwareentwicklung die Hörsäle verlassen und gewinnt im Alltag des Entwicklers zunehmend an Bedeutung. In diesem Buch werden Sie die funktionale Programmierung und die Sprache Scala kennenlernen. Freuen Sie sich auf das Abenteuer Lambda!
Lothar Piepmeyer

Kaufen Sie hier:

Horizontale Tabs

Leseprobe
Kapitel 8 Die Scala-Entwicklungsumgebung (S. 97-98)

Um mit Scala arbeiten zu können, benötigen wir Werkzeuge wie einen Compiler. Die Website www.scala-lang.org ist das Eingangstor zur Scala-Welt. Hier finden wir Dokumentation, Beispiele, Artikel, Diskussionen und eine kostenlose Entwicklungsumgebung für Scala, die von Entwicklern auf der ganzen Welt gepflegt wird.

8.1 Ohne Java geht nichts

Obwohl die Programmiersprache Scala grundsätzlich an kein spezielles Betriebssystem und keine Laufzeitumgebung gebunden ist, erzeugen die Scala-Compiler seit der Version 2 ausschließlich Java-Bytecode. Zuvor gab es auch Entwicklungsumgebungen für die .Net- Plattform. Mag sein, dass neue Releases künftig wieder .Net unterstützen, zur Zeit ist die Verzahnung mit der Java-Plattform aber sehr eng. Da unsere übersetzten Scala-Programme also in Form von Java-Bytecode vorliegen, benötigen wir zur Ausführung eine Java-Umgebung. Im aktuellen Scala-Release 2.8 liegen auch die beiden Compiler scalac und fsc im Java-Bytecode vor, so dass wir Java benötigen, um überhaupt Scala-Programme übersetzen zu können. Dabei reicht eine Java-Runtime, die komplette Java-Entwicklungsumgebung in Form eines JDK brauchen wir nicht.

Die Scala- Bibliotheken und Werkzeuge setzen die Version 5 von Java voraus, falls auf unserem System nur die Java-Version 1.4 verfügbar ist, muss eine spezielle Scala-Distribution heruntergeladen werden. Auf der Scala Website finden wir nicht nur Entwicklungsumgebungen für Windows und Unix, sondern auch Plugins für Eclipse oder NetBeans. Die zunehmend beliebte Plattform OSGi, die eine komponentenorientierte Softwareentwicklung auf der Java-Plattform ermöglicht, wird ebenfalls unterstützt: Die Scala Bibliotheken sind als OSGi-Bundles verfügbar

8.2 Installation und erste Schritte

Die Entwicklungsumgebung umfasst unter anderem ein Werkzeug zum Ausführen unserer Scala-Programme und zwei Scala-Compiler. Um die Werkzeuge bequem und ohne lange Pfadangaben handhaben zu können, empfiehlt es sich, das bin-Verzeichnis der Scala- Distribution in die Umgebungsvariable PATH des Betriebssystems einzufügen. Nachdem wir die Installation erfolgreich durchgeführt haben, probieren wir die Werkzeuge gleich aus. Im bin-Verzeichnis der Scala-Installation finden wir für jedes Kommando eine Datei mit der Erweiterung bat für Microsoft-Plattformen und eines ohne Erweiterung für Unix-Plattformen.
Inhaltsverzeichnis
Inhaltsverzeichnis8
Vorwort16
I Abenteuer Lambda18
1 Mehr denken, weniger tippen20
1.1 Sag, was du willst!20
1.2 Der alte Weg21
1.3 Abstraktion der Hardware22
1.4 Was ist funktionale Programmierung?23
1.5 Funktionen – Unsere Bausteine23
1.5.1 Was ist eine Funktion?23
1.5.2 Was steckt in einer Funktion?24
1.5.3 Eigenschaften von Funktionen25
1.6 Die referentielle Transparenz28
1.7 Das wirkliche Leben29
2 Ein Hauch von Babylon32
2.1 Lisp – Die Mutter aller funktionalen Sprachen32
2.1.1 Listen – Der Stoff, aus dem Lisp gemacht ist33
2.1.2 Operatoren in Lisp34
2.1.3 Lambda-Ausdrücke35
2.1.4 Mythos Lisp37
2.2 ML – Der Pionier38
2.2.1 Typableitung – Der Compiler erkennt den Typ39
2.2.2 Muster und Ausdrücke39
2.2.3 Generische Funktionen und Datentypen41
2.3 Haskell – Funktionale Programmierung in Reinform42
2.3.1 Haskell – Ein fauler Hund43
2.4 Wann ist eine Sprache funktional?45
2.5 Und die Performance?45
2.6 Welche Sprache darf's denn sein?46
2.6.1 Java46
2.6.2 Scala47
2.7 Aufgaben48
II Die funktionale Seite von Java50
3 Rekursion52
3.1 Eine Schleife – was ist das eigentlich?52
3.2 Die Rekursion – das unbekannte Wesen53
3.3 Ist Rekursion praxistauglich?54
3.4 Wie werden rekursive Funktionen verarbeitet?55
3.5 Endrekursion, die schnelle Rekursion57
3.6 Eine einfache Formel und ihre schwerwiegenden Folgen60
3.7 Aufgaben63
4 Alles bleibt, wie es ist66
4.1 Konsistenz66
4.2 Nichts ist beständiger als der Wandel67
4.3 Versteckte Daten sind gute Daten68
4.4 Invarianten – darauf ist Verlass69
4.5 Ein Beispiel71
4.6 Die Methode equals72
4.7 Sichere Ergebnisse mit defensiven Kopien72
4.8 Konkurrierende Zugriffe74
4.9 Geänderte Hash-Codes75
4.10 Unveränderbare Klassen76
4.11 Performance77
4.12 Unveränderbare Klassen in der Java-API78
4.13 Aufgaben79
5 Funktionen höherer Ordnung80
5.1 Arrays sortieren leicht gemacht80
5.2 Eine flexiblere Lösung82
5.3 Funktionen als Ergebnisse von Funktionen85
5.4 Aufgaben88
6 Unveränderbare Listen90
6.1 Arrays raus!90
6.2 Verkettete Listen – Vom Nobody zum Star91
6.3 Nützliche Methoden für die Arbeit mit Listen93
6.4 Das schwer erreichbare Listenende94
6.5 Die Faltung – eine universelle Funktion95
6.6 Eine Leihgabe aus der imperativen Programmierung98
6.7 Aufgaben100
7 Anfragen an Listen102
7.1 Auswahlen aus Listen103
7.2 Listenelemente abbilden104
7.3 Quicksort105
7.4 Primzahlen107
7.5 Verknüpfungen von Listen108
7.6 Aufgaben110
III Scala112
8 Die Scala-Entwicklungsumgebung114
8.1 Ohne Java geht nichts114
8.2 Installation und erste Schritte115
8.3 Scala-Skripts115
8.4 Eigene Typen mit Scala-Klassen116
8.5 Noch ein Compiler117
8.6 Der Scala-Bazar118
8.7 Aufgaben119
9 Ausdrücke in Scala122
9.1 Erste Eindrücke mit einfachen Ausdrücken122
9.2 Konstante123
9.3 Variable125
9.4 Alle kennen Predef125
9.5 Kontrollstrukturen126
9.6 Importe127
9.7 Aufgaben127
10 Scala-Typsystem130
10.1 In Scala gibt es keine primitiven Typen130
10.2 Alles ist ein Objekt131
10.3 Objekte vergleichen132
10.4 Werte- und Referenztypen133
10.5 Literale und Typumwandlungen133
10.6 Der Typ Unit134
10.7 Der Typ Null134
10.8 Der Typ Nothing135
10.9 Aufgaben136
11 Methoden in Scala138
11.1 Jede Methode hat einen Typ138
11.2 Generische Methoden139
11.3 Konstante als Grenzfall von Methoden139
11.4 Was steht in einer Methode?140
11.5 Methoden ohne Rückgabewert142
11.6 Methoden in Methoden142
11.7 Methoden für beliebig viele Argumente143
11.8 Endrekursion144
11.9 Aufgaben146
12 Funktionen in Scala148
12.1 Die Definition einer Funktion148
12.2 Funktionen sind auch Objekte150
12.3 Die partielle Anwendung einer Funktion151
12.4 Eine scharfe Sache: Das Curry-Prinzip153
12.5 Funktionen höherer Ordnung155
12.6 Aufgaben157
13 Tupel160
13.1 Eigenschaften von Tupeln161
13.2 Die Tupel-Klassen162
13.3 Mustererkennung für Tupel163
13.4 Aufgaben164
14 Klassen und Vererbung in Scala166
14.1 Klassendefinitionen in Scala166
14.1.1 Ein alter Bekannter zum Einstieg166
14.1.2 Konstruktoren167
14.1.3 Attribute und parameterfreie Methoden169
14.1.4 Mehrere Fliegen mit einer Klappe schlagen170
14.1.5 Was bedeutet „rechtsassoziativ“?171
14.2 Vererbung171
14.2.1 Methoden überschreiben171
14.2.2 Konstruktorverkettung173
14.2.3 Polymorphie174
14.2.4 Abstrakte Klassen175
14.3 Aufgaben176
15 Singletons: Objekte können einsam sein178
15.1 Es kann nur einen geben179
15.2 Statische Mitglieder waren gestern180
15.3 Begleiter180
15.4 Singletons zur Objektverwaltung182
15.5 Singletons importieren182
15.6 Aufgaben183
16 Mustererkennung184
16.1 Muster in Java185
16.2 Einfache Muster in Scala186
16.3 Muster für Tupel187
16.4 Welche Muster gibt es?188
16.5 Muster für Typen189
16.6 Muster in Funktionen191
16.7 Partielle Funktionen191
16.8 Exceptions und Mustererkennung192
16.9 Aufgaben193
17 Extraktoren und Case-Typen194
17.1 Besser als null: Der Typ Option195
17.2 Extraktormuster195
17.3 Optionale Attribute196
17.4 Extraktoren sind universelle Inspektoren197
17.5 Lesbarer Code mit apply199
17.6 Variable Extraktoren200
17.7 Alles frei Haus mit Case-Typen200
17.8 Aufgaben204
18 Listen206
18.1 Die leere Liste206
18.2 Listen erzeugen207
18.3 Einfache Methoden für Listen207
18.4 Listenmuster208
18.5 Weitere einfache Methoden209
18.6 Mengenoperationen211
18.7 Das Begleitobjekt212
18.8 Methoden höherer Ordnung für Listen213
18.8.1 Beispiel: Quicksort214
18.8.2 Die Faltung215
18.9 Das Springerproblem217
18.10 Aufgaben219
19 Scala kann auch faul sein220
19.1 Die Initialisierung kann warten220
19.2 Faule Parameter mit Call-By-Name222
19.3 Streams: Daten bei Bedarf223
19.4 Unendliche Streams225
19.5 Aufgaben226
20 Es müssen nicht immer Listen sein228
20.1 Mengen228
20.2 Der Typ Set230
20.3 Der Typ Map231
20.4 Collections in anderen Geschmacksrichtungen235
20.5 Aufgaben236
21 Fast wie zu Hause: for-Ausdrücke238
21.1 Eine nicht ganz so funktionale Methode höherer Ordnung238
21.2 Komplexere for-Ausdrücke239
21.3 for-Ausdrücke mit filter und map239
21.4 Mehr Übersicht mit flatMap240
21.5 for-Ausdrücke sind keine Schleifen241
21.6 for-Ausdrücke für eigene Typen242
21.7 Aufgaben243
IV Scala kann mehr244
22 Veränderbare Daten246
22.1 Variable246
22.2 Veränderbare Attribute247
22.3 Die Rückkehr der Arrays249
22.4 Aufgaben250
23 Traits252
23.1 Traits und Java-Interfaces253
23.2 Konkrete Methoden253
23.3 Mehrfachvererbung255
23.4 Aufgaben256
24 Varianz258
24.1 Kovarianz von Java-Arrays258
24.2 Kovarianz von generischen Java-Typen259
24.3 Mehr Kovarianz in Java260
24.4 Kontravarianz in Java261
24.5 Varianz in Scala261
25 Pakete und Sichtbarkeit266
25.1 Pakete in Scala266
25.2 Sichtbarkeit in Scala267
25.3 Privater als privat269
26 Typumwandlung272
26.1 Implizite Methoden für implizite Casts272
26.2 Wozu noch explizite Casts?274
26.3 Angereicherte Typen274
26.4 Pimp Your Library!275
26.5 Sprachfeatures mit impliziten Casts umsetzen276
26.6 Aufgaben276
27 Parallele Programmierung mit Aktoren278
27.1 Viele Köche verderben den Brei279
27.2 Parallele Programmierung mal anders279
27.3 Erste Versuche mit Aktoren281
27.4 Der Typ Actor282
27.5 Die Actor-Fabrik283
27.6 Einfache Standardprobleme und ihre Lösung284
27.7 Aktoren können antworten285
27.8 Producer-Consumer-Probleme286
27.9 Blockierende Stacks288
27.10 Deadlocks – Nichts geht mehr289
27.11 Aufgaben293
Literaturverzeichnis293
Stichwortverzeichnis296

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

Leben 3.0

E-Book Leben 3.0
Mensch sein im Zeitalter Künstlicher Intelligenz Format: ePUB

Die Nobelpreis-Schmiede Massachusetts Institute of Technology ist der bedeutendste technologische Think Tank der USA. Dort arbeitet Professor Max Tegmark mit den weltweit führenden Entwicklern k…

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

Management von IT-Projekten

E-Book Management von IT-Projekten
Von der Planung zur Realisierung Format: PDF

Projektmanagement (PM) wird immer noch zu selten und zu inkonsequent eingesetzt. Viele problematische Projekte sprechen eine eindeutige Sprache. Kenntnisse des PM und seine Anwendungsmöglichkeiten…

Python 3 - Intensivkurs

E-Book Python 3 - Intensivkurs
Projekte erfolgreich realisieren Format: PDF

Python ist eine vollwertige Programmiersprache, mit der sich auch größere Anwendungen entwickeln lassen. In den letzten Jahren hat sie an Beliebtheit gewonnen, und mit Python 3 steht eine stark…

Fundiert entscheiden

E-Book Fundiert entscheiden
Ein kleines Handbuch für alle Lebenslagen Format: PDF

Orientierungshilfe in postfaktischen Zeiten Dieses Buch ist ein Rettungsanker in der Flut der Informationen, die ununterbrochen auf uns einströmen. Tag für Tag müssen Sie sich Meinungen bilden, sei…

Prozessübergreifendes Projektmanagement

E-Book Prozessübergreifendes Projektmanagement
Grundlagen erfolgreicher Projekte Format: PDF

Projektmanagement ist in Zeiten von enger werdenden Projektbudgets und Projektzeitplänen eine zunehmende Herausforderung geworden. Die Autoren geben wertvolle Hilfestellungen in Krisensituationen und…

Management von IT-Projekten

E-Book Management von IT-Projekten
Von der Planung zur Realisierung Format: PDF

Projektmanagement (PM) wird immer noch zu selten und zu inkonsequent eingesetzt. Viele problematische Projekte sprechen eine eindeutige Sprache. Kenntnisse des PM und seine Anwendungsmöglichkeiten…

Weitere Zeitschriften

Archiv und Wirtschaft

Archiv und Wirtschaft

Fachbeiträge zum Archivwesen der Wirtschaft; Rezensionen Die seit 1967 vierteljährlich erscheinende Zeitschrift für das Archivwesen der Wirtschaft "Archiv und Wirtschaft" bietet Raum für ...

Augenblick mal

Augenblick mal

Die Zeitschrift mit den guten Nachrichten "Augenblick mal" ist eine Zeitschrift, die in aktuellen Berichten, Interviews und Reportagen die biblische Botschaft und den christlichen Glauben ...

bank und markt

bank und markt

Zeitschrift für Banking - die führende Fachzeitschrift für den Markt und Wettbewerb der Finanzdienstleister, erscheint seit 1972 monatlich. Leitthemen Absatz und Akquise im Multichannel ...

BMW Magazin

BMW Magazin

Unter dem Motto „DRIVEN" steht das BMW Magazin für Antrieb, Leidenschaft und Energie − und die Haltung, im Leben niemals stehen zu bleiben.Das Kundenmagazin der BMW AG inszeniert die neuesten ...

cards Karten cartes

cards Karten cartes

Die führende Zeitschrift für Zahlungsverkehr und Payments – international und branchenübergreifend, erscheint seit 1990 monatlich (viermal als Fachmagazin, achtmal als ...

SPORT in BW (Württemberg)

SPORT in BW (Württemberg)

SPORT in BW (Württemberg) ist das offizielle Verbandsorgan des Württembergischen Landessportbund e.V. (WLSB) und Informationsmagazin für alle im Sport organisierten Mitglieder in Württemberg. ...

VideoMarkt

VideoMarkt

VideoMarkt – besser unterhalten. VideoMarkt deckt die gesamte Videobranche ab: Videoverkauf, Videoverleih und digitale Distribution. Das komplette Serviceangebot von VideoMarkt unterstützt die ...

Euphorion

Euphorion

EUPHORION wurde 1894 gegründet und widmet sich als „Zeitschrift für Literaturgeschichte“ dem gesamten Fachgebiet der deutschen Philologie. Mindestens ein Heft pro Jahrgang ist für die ...