Sieben Wochen, sieben Sprachen

Ähnliche Dokumente
Funktionale Programmierung (in Clojure)

Programmierkurs Python I

Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013

1. Einführung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Organisatorisches/Einstieg

Softwareentwicklung Allgemeines und prozedurale Konstrukte

Programmiersprachen und Programmierkonzepte

Übersicht. Einführung in die Funktionale Programmierung: Einleitung & Motivation. Klassifizierung von Programmiersprachen (1)

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

Informatik Programmiersprachen eine kurze Übersicht

Modellierung und Programmierung 1

Einleitung und Begriffliches. Einleitung. Programmiersprachen. Software-Komplexität ist inhärent und hat vor allem folgende Ursachen

Algorithmen und Programmieren II Einführung in Python

Programmieren in Haskell Einführung

Programmierausbildung mehrsprachig von Anfang an eine erste Bilanz

Programmieren. Programmieren. Webseiten aufpeppen. Grafikkarte ausreizen. Coole Sprachen. Kinect am PC. 3D-Programmierung

Funktionale Programmierung bringt s! Ein Ausflug mit Haskell in die Praxis

Einführung in PROLOG. Christian Stocker

Petra Kopp. Georg Bartenschlager. VBA mit Excel

Vorwort. Hello World (2. Auflage)

Irgendwas ist anders...

Programmierung - Paradigmen und Konzepte

Fachhochschule Wiesbaden - Fachbereich DCSM. Skriptsprachen. Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby

Verteiltes Programmieren mit Space Based Computing

Programmieren für Fortgeschrittene

Softwaretechnik (Medieninformatik) Überblick: 6. Objektorientiertes Design

Programmieren 3. Programmieren in C und Python. Prof. Dr. Peter Barth. Hochschule RheinMain. Fachbereich Design Informatik Medien.

Pr og r ammier kur s

Einführung in die Programmiersprache Python

Teil 1: Einführung 1.5 Programmierparadigmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 Tel: 07531/ Oliver Haase Hochschule Konstanz 1

CURRICULUM'VITAE' ' PERSÖNLICHE'DATEN'

2 Grundlagen der Programmierung

Scala & Lift. Ferenc Lajko

Selda Garip MatrikelNr.: Kennzahl: 533

Softwaretechnik. Wesentliche Inhalte der Vorlesung

Stichworte zur Ideengeschichte der Programmiersprachen

Programmieren mit Python in der Sek. 1

Vorwort. Dieses Buch ist für alle,

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Einführung in die Softwareentwicklung am Beispiel von Java und C++ Vom Programmieren zur erfolgreichen Software-Projektarbeit

Seminararbeit Ruby Uno Kartenspiel

Programmiersprachen gestern, heute, morgen

JavaScript: Von einfachen Scripten zu komplexen Anwendungen. MMT Dezember 2011

Programmieren I + II

INP (1) Prof. Dr.-Ing. S. Gössner. University of Applied Sciences Lippe & Höxter

Modulhandbuch für das BA Kombinationsfach Angewandte Informatik Multimedia

Lua. June 9, Marcus Brenscheidt Marcin Golkowski ( Dynamische Programmiersprachen Lua )

Semantik von Programmiersprachen

Fuse. Filesystem in Userspace PRÄSENTATION VON TIM WELGE

Groovy eine dynamische Ergängzung zu Java

Erste Schritte in Java

Das Lehren von objektorientierter Programmierung in Java mit

Warum Üben großer Mist ist

In den weiterführenden Vorlesungen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 1. Einführung und Grundbegriffe

Bernd KLEIN EINFÜHRUNG IN PYTHON3 IN EINER WOCHE PROGRAMMIEREN LERNEN. Im Internet: Musterlösungen zu den Übungen

Funktionale Programmierung

Android Kurs Online Kurs Entwicklung auf Android-Handys

Was ist ein Compiler?

Programmieren lernen mit Minecraft-Plugins

Objektorientiertes JavaScript

Propädeutikum. Dipl.-Inf. Frank Güttler

Clojure in Lehre und Forschung

Programmieren in Python

Built to last: Modernisierung von Java-Anwendungen

Java Schulung. Objektorientierte Programmierung in Java. Prof. Dr. Nikolaus Wulff

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise?

Grundlagen der Programmierung UE

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Programmiersprachen und ihre Übersetzer

Hochschule Darmstadt Prof.Dr. H.P.Weber. Programmieren Pearson Education, Inc. All rights reserved.

Algorithmen mit Python

Grundlagen von Python

Grundlagen der Programmierung UE

Objektorientierte Programmierung OOP

Mac- Programmierung. Mac-Programmierung. Holger Hinzberg. Hinzberg. 2. Auflage

Programmiersprachen gestern, heute, morgen

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Python ist leicht zu erlernen, unterstützt mehrere Programmierparadigmen und ist klar strukturiert.

Handout zur Vorlesung DBSP PHP I Unit 4 DBSP. Unit PHP I. Programmierparadigma Grundlegende Elemente eines PHP Programms (I)

Maurice Bromund stellt sich vor

Über den Autor 7. Teil I Los geht s mit Java für die Android-Entwicklung 25. Kapitel 1 Alles über Java und Android 27

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

ht t p://w w w.kebel.de/

Visual Basic 2010 für Kids

Persönlicher Brief II./ Grammatiktraining

Wie sollte ein Manager coachen?

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Vorwort. vii. 1)

Ruby. Programmieren mit Zucker. Thomas Kühn

Netzwerk Technologien in LabVIEW

Liebe Team-Mitglieder der Einstein-Constructors, liebe Interessierte,

Kapitel 1 Begegnung mit Python

Pflegende Angehörige Online Ihre Plattform im Internet

Transkript:

The Pragmatic Programmers Sieben Wochen, sieben Sprachen Verstehen Sie die modernen Sprachkonzepte Deutsche Übersetzung von O REILLY Bruce A. Tate Übersetzt von Peter Klicman

Ein wenig über viele Sprachen zu wissen ist eine nützliche Fähigkeit. Ich musste häufig ein wenig von Python oder Ruby verstehen, um ein bestimmtes Problem lösen zu können. Die Programme, die ich aus dem Internet herunterlade, sind in den unterschiedlichsten Sprachen geschrieben und verlangen eine gewisse Anpassung, bevor ich sie nutzen kann. Jede Sprache hat ihren eigenen Satz an Idiomen, Stärken und Schwächen. Indem Sie verschiedene Programmiersprachen lernen, sind Sie in der Lage zu erkennen, welche Sprache für die Art von Problemen am besten geeignet ist, die Sie lösen möchten. Ich freue mich zu sehen, dass Bruces Geschmack bei Programmiersprachen so vielseitig ist. Er behandelt nicht nur so etablierte Sprachen wie Ruby, sondern auch weniger bekannte Sprachen wie Io. Letztlich geht es beim Programmieren um das Verstehen, und beim Verstehen geht es um Ideen. Die Auseinandersetzung mit neuen Ideen ist daher wesentlich für ein tieferes Verständnis dessen, worum es beim Programmieren eigentlich geht. Ein Zen-Meister könnte Ihnen empfehlen, Latein zu lernen, um Mathematik besser zu verstehen. Das gilt auch für das Programmieren. Um das Wesentliche an der OO-Programmierung zu verstehen, sollten Sie sich die logische und funktionale Programmierung (FP) ansehen. Und um die FP besser zu meistern, sollten Sie sich Assembler anschauen. Programmiersprachen vergleichende Bücher waren populär, als ich Programmierer wurde. Doch meist handelte es sich um akademische Schinken, die nur wenige praktische Hinweise zur Nutzung einer Sprache lieferten. Das reflektierte die Technik jener Zeit. Sie konnten etwas über die Ideen einer Sprache nachlesen, doch sie auszuprobieren war nahezu unmöglich. Heute können wir nicht nur etwas über diese Ideen nachlesen, sondern sie auch gleich in der Praxis ausprobieren. Das macht den Unterschied aus: am Beckenrand stehen und sich zu fragen, ob schwimmen Spaß macht, oder einzutauchen und das Wasser genießen. Ich lege Ihnen dieses Buch wärmstens ans Herz und hoffe, dass Sie es so geniessen wie ich. Joe Armstrong, Entwickler von Erlang 2. März 2010 Stockholm Vorwort 9

Kapitel 1 Einführung Menschen lernen Sprachen aus den unterschiedlichsten Gründen. Ihre Muttersprache haben Sie gelernt, um überhaupt leben zu können. Sie stellt das Werkzeug dar, das ihnen dabei hilft, den Alltag zu meistern. Wenn Sie eine zweite Sprache erlernt haben, kann das verschiedene Gründe gehabt haben. Manchmal muss man eine zweite Sprache der Karriere wegen lernen, oder um sich an eine veränderte Umgebung anzupassen. Doch manchmal lässt man sich auf eine neue Sprache ein, nicht weil man sie lernen muss, sondern weil man sie lernen will. Eine zweite Sprache kann Ihnen dabei helfen, neue Welten zu entdecken. Sie könnten sogar Erleuchtung suchen, da Sie wissen, dass jede neue Sprache auch das Denken formt. Das Gleiche gilt für Programmiersprachen. In diesem Buch werde ich Ihnen sieben verschiedene vorstellen. Dabei möchte Sie auf eine Reise mitnehmen, die Sie aufklären und Ihren Blick auf das Programmieren verändern soll. Ich werde Sie nicht zum Experten machen, aber ich werden Ihnen mehr beibringen als bloß Hallo Welt! 1.1 Wahnsinn mit Methode Wenn ich eine neue Programmiersprache oder ein neues Framwork erlerne, suche ich meist nach einem kurzen, interaktiven Tutorial. Mein Ziel ist es, die Sprache in einer komtrollierten Umgebung zu erleben. Bei Bedarf kann ich etwas eingehender untersuchen, doch im Wesentlichen geht es mir um eine schnelle Dosis Koffein, einen Schnappschuss des syntaktischen Zuckers und um die Kernkonzepte.

12 Kapitel 1: Einführung Aber üblicherweise ist diese Erfahrung nicht besonders erhellend. Wenn Sie den wahren Charakter einer Sprache kennenlernen wollen, die mehr ist als eine bloße Erweiterung einer Sprache, die Sie schon kennen, dann wird ein kurzes Tutorial niemals funktionieren. Sie müssen schnell und tief eintauchen. Dieses Buch bietet Ihnen diese Erfahrung nicht nur ein-, sondern gleich siebenmal. Sie finden Antworten auf die folgenden Fragen: Welches Modell der Typisierung wird verwendet? Die Typisierung kann stark (Java) oder schwach (C), statisch (Java) oder dynamisch (Ruby) sein. Die Sprachen in diesem Buch reichen vom stark typisierten Ende des Spektrums bis hin zu einem breiten Mix aus statisch und dynamisch. Sie werden sehen, wie sich die jeweiligen Kompromisse bzw. Nachteile für den Entwickler auswirken. Das Typisierungsmodell prägt die Art und Weise, in der Sie ein Problem angehen, und kontrolliert, wie die Progammiersprache funktionert. Jede Sprache in diesem Buch hat ihre eigenen Typisierungs-Eigenarten. Welches Programmiermodell wird verwendet? Ist es objektorientiert, funktional, prozedural oder irgendeine Art Hybrid? Dieses Buch behandelt Sprachen mit vier verschiedenen Programmiermodellen, manchmal auch Kombinationen mehrerer Modelle. Sie werden eine logikbasierte Programmiersprache (Prolog) vorfinden, zwei Sprachen, die vollständig objektorientierte Konzepte unterstützen (Ruby, Scala), vier Sprachen funktionaler Natur (Scala, Erlang, Clojure, Haskell) sowie eine Prototyp-Sprache (Io). Mehrere Sprachen unterstützen auch mehrere Paradigmen, z. B. Scala. Clojures Multimethoden erlauben es Ihnen sogar, ein eigenes Paradigma zu implementieren. Das Erlernen neuer Programmierparadigmen ist eines der wichtigsten Konzepte dieses Buches. Wie interagiert man mit ihr? Sprachen werden kompiliert oder interpretiert und einige verwenden virtuelle Maschinen, andere hingegen nicht. Ich beginne meine Erkundung mit einer interaktiven Shell, wenn es denn eine gibt. Ich gehe dann zu Dateien über, wenn es an der Zeit ist, größere Projekte anzugehen. Unsere Projekte werden aber nicht groß genug sein, um vollständig in die Paketmodelle einzutauchen.

Die Sprachen 13 Was sind die Entscheidungskonstrukte und die Kern-Datenstrukturen? Sie werden überrascht sein, wie viele Sprachen Entscheidungen mit etwas anderem als Varianten von ifs und whiles treffen können. Sie werden die Mustererkennung (Pattern Matching) in Erlang und die Vereinigung (unification) in Prolog kennenlernen. Collections ( Sammlungen ) spielen in nahezu jeder Sprache eine wichtige Rolle. Bei Sprachen wie Smalltalk und Lisp definieren Collections die Charakeristika der Sprache. Bei anderen, wie C++ und Java, sind Collections überall verstreut und definieren das Erleben des Benutzers durch ihr Fehlen und ein geringeres Maß an Stringenz. So oder so sollte man sich mit Collections gut auskennen. Welche Kerneigenschaften machen die Sprache einzigartig? Einige Sprachen besitzen fortgeschrittene Fähigkeiten für die nebenläufige Programmierung (concurrent programming). Andere bieten einzigartige High-Level-Konstrukte wie etwa Clojures Makros oder Ios Message-Interpretation. Andere bieten eine leistungsfähige virtuelle Maschine, wie etwa Erlangs BEAM: Dank ihr kann man mit Erlang fehlertolerante, verteilte Systeme wesentlich schneller aufbauen, als es mit anderen Sprachen möglich ist. Einige Programmiersprachen unterstützen Programmiermodelle, die sich auf ein bestimmtes Problem konzentrieren. Etwa die Verwendung von Logik zur Lösung von Beschränkungen (constraints). Wenn Sie mit diesem Buch fertig sind, werden Sie kein Experte für eine dieser Sprachen sein, aber Sie werden wissen, welche einzigartigen Eigenschaften sie besitzen. Sehen wir uns die Sprachen an. 1.2 Die Sprachen Die Auswahl der Sprachen für dieses Buch war wesentlich einfacher, als Sie vielleicht glauben: Ich habe einfach potenzielle Leser gefragt. Nachdem wir uns alle Daten näher angesehen hatten, blieben acht Kandidaten übrig. Ich habe JavaScript gestrichen, weil es mir zu beliebt ist, und durch die zweitpopulärste Prototypsprache Io ersetzt. Ich habe auch Python gestrichen, weil ich nur eine objektorientierte Sprache wollte und Ruby höher auf der Liste stand. Das schuf Raum für einen überraschenden Kandidaten, Prolog, das auf der Liste unter den Top- Ten war. Hier die Sprachen, die es geschafft haben, sowie die Gründe für ihre Wahl: