CARL HANSER VERLAG. Peter Henning, Holger Vogelsang. Taschenbuch Programmiersprachen

Größe: px
Ab Seite anzeigen:

Download "CARL HANSER VERLAG. Peter Henning, Holger Vogelsang. Taschenbuch Programmiersprachen"

Transkript

1 CARL HANSER VERLAG Peter Henning, Holger Vogelsang Taschenbuch Programmiersprachen

2 17 1 Einleitung Holger Vogelsang und Peter A. Henning 1.1 Definition und Geschichte Ein Programm ist eine Abfolge von Daten und Befehlen an einen Prozessor, um diese Daten in andere Daten umzuwandeln. Es wird in einer formal definierten Sprache verfasst, der Programmiersprache. Die erste höhere Programmiersprache war der 1945 von Konrad Zuse entwickelte Plankalkül [Z72, PK]. Konrad Zuse ( ) ist damit nicht nur der Erbauer des ersten Computers mit Von-Neumann-Architektur (1941), sondern auch der Erfinder der Programmiersprachen. Hinweis: Ein im folgenden Text markiert einen Eintrag im Glossar (Abschnitt 1.5) Computer waren lange Zeit nur in Maschinensprache oder Assembler programmierbar, bis 1954 FORTRAN als erste praktisch einsetzbare höhere Programmiersprache entwickelt wurde. Die ersten Programmiersprachen waren problemorientiert und folgten dem prozeduralen Programmierparadigma. Die Blockorientierung kam erst mit ALGOL auf, um 1970 begann sich mit Pascal die so genannte strukturierte Programmierung durchzusetzen. Parallel dazu entwickelte sich ab ca das objektorientierte Programmierparadigma, im Wesentlichen über die Stufen der Sprache Smalltalk. Es mündete ab ca in die Einbringung objektorientierter Aspekte in die meisten Programmiersprachen. Symbolische Programmierung zur Lösung nicht-nummerischer Probleme begann um 1960 mit LISP und mündet heute in das deklarative Programmierparadigma. Ab 1960 entwickelten sich aus der Job Control Language JCL eine Vielzahl von Skriptsprachen, die eine einfache Integration anderer Programme und Abläufe ermöglichen. Nach 1975 entstanden deskriptive Sprachen, die jeweils mehr oder weniger Programmlogik beinhalten, vgl. Tabelle 1.3 in Abschnitt 1.7. Heute existieren weit über 1000 verschiedene Programmiersprachen, die teilweise nur wenige Jahre en vogue sind [S96].

3 18 1 Einleitung Deskriptive Sprachen SGML HTML VRML XML BASIC DSL PostScript Perl REXX Tcl JCL Tcl/Tk Maschinensprache Assembler APL FORTH SQL JavaScript PHP COBOL 68 COBOL 74 awk Python VB.NET VBasic FORTRAN COBOL SNOBOL COBOL 85 C Lambda-Kalkül ALGOL 60 ALGOL 68 FORTRAN 77 FORTRAN 90 FORTRAN 95 COBOL 2002 FORTRAN 2000 PL/I Pascal Ada C++ Simula Oberon LOGO Lisp PROLOG MODULA-2 Miranda Object Pascal/ Delphi Ada95 Scheme Logikkalküle CLOS Java C# Dylan Smalltalk 80 Eiffel Haskell Oz Mondrian Smalltalk CSP Occam CLP Bild 1.1: "Stammbaum" der wichtigsten Programmiersprachen und ihrer Abkömmlinge. Vgl. dazu auch Tabelle 1.3

4 1.2 Programmentwicklung Programmentwicklung Die Entwicklung von Programmen erfolgt heute als ingenieurmäßige Arbeit (Software Engineering) und besteht aus mehreren Phasen. In der Spezifikationsphase werden die zu lösenden Probleme im Klartext exakt beschrieben und ggf. Eingrenzungen des Lösungsraumes (z.b. durch Limitierung der Hardware, der Kosten oder der Entwicklungszeit) festgelegt. In der Regel wird dabei ein Lastenheft erstellt. In der Konzeptionsphase wird eine Funktionsplanung des Programmes erstellt, gefolgt von einer Aufwands- und Terminplanung für die Entwicklungsarbeit. In der Entwurfsphase erfolgt zunächst der Systementwurf, in welchem Datenstrukturen, Algorithmen und Schnittstellen festgelegt werden. Er wird vom Programmentwurf gefolgt, in dem die Programmstruktur festgelegt und schrittweise verfeinert wird. Oft erfolgt dies durch Formulierung in einer Zwischensprache, z.b. als Programmablaufplan, Struktogramm oder in einer Modellierungssprache. In der Codierungsphase wird Quelltext in der ausgewählten Programmiersprache erzeugt. Dabei werden in der Regel mehrere Edit-Compile- Test-Zyklen durchlaufen. Tests sind in der Regel aber auf syntaktische und semantische Aspekte beschränkt und überprüfen nicht die eigentliche Programmlogik. Diese Überprüfung erfolgt in der Testphase, meist in Form von Moduloder Klassentests sowie Integrationstests. Im Fehlerfall führt dies zum Rücksprung in die Codierungsphase oder gar in eine noch frühere Phase. Letzteres sollte vermieden werden, weil es den Projekterfolg gefährdet. In der Freigabephase oder Releasephase wird das fertige Software- Produkt an den Endanwender ausgeliefert. Selbstverständlich wird der gesamte Arbeitsablauf vollständig in einer Dokumentation niedergelegt, diese ist mindestens in Teilen auch dem Endanwender auszuhändigen und bildet die Basis für Schulungen Industrielle Software-Entwicklung Die industrielle Programmentwicklung versucht heute, mehr und mehr standardisierte Verfahren zu verwenden. Ziel ist einerseits, bereits existierende Programmbestandteile ( Unterprogramme, Module, Klas-

5 20 1 Einleitung sen, Objekte, Bibliotheken) möglichst ohne Anpassung wiede zu verwenden. Andererseits sollen auch bewährte Architekturen von Programmen oder Programmteilen wieder verwendet werden ( Entwurfsmuster). Im industriellen Sektor haben sich deshalb integrierte Entwicklungsumgebungen ( IDE) weitgehend durchgesetzt. Viele dieser Systeme erlauben auch die gemeinsame Bearbeitung großer Projekte durch Zugriff auf ein gemeinsames Code-Repository, welches eine automatisierte Versionskontrolle bietet. Darüber hinaus bieten solche Entwicklungsumgebungen häufig Code-Generatoren und Möglichkeiten zur visuellen Programmierung an, man spricht dann von CASE-Tools (CASE = Computer Aided Software Engineering). Für die industrielle Software-Entwicklung gibt es eine Vielzahl von Vorgehensmodellen, vom Wasserfallmodell [WM] über das V-Modell [VM] bis zum Extreme Programming [XP]. Bisher hat sich kein Verfahren allgemein durchgesetzt. Der Grund dafür ist in der Vielzahl von unterschiedlichen Firmenkulturen zu suchen, sowie in der Tatsache, dass nach wie vor Menschen mit allen individuellen Stärken und Schwächen die Programme schreiben. Näheres siehe in [TBI] Open Source-Software Es ist bewiesen, dass kein formales Verfahren zur Verifizierung beliebiger Programme existiert. Damit kann die Fehlerfreiheit von Programmen weitestgehend nur dann gewährleistet werden, wenn seine Bestandteile lange genug der Kritik von Benutzern ausgesetzt waren. Dies gilt insbesondere für Programme, bei denen auch der Quelltext öffentlich zur Verfügung steht: Fehler können nicht nur entdeckt, sondern von einer Vielzahl von Personen auch im Quelltext lokalisiert werden. Die ersten Open Source-Projekte entstanden schon ab 1965, richtig an Boden gewonnen hat dieses Prinzip aber erst mit dem Aufstieg des Internet. Zwei wichtige Beispiele dafür sind das Open Source-Betriebssystem Linux und der Web-Server Apache. Bei großen Open Source-Projekten arbeiten teilweise mehrere hundert Programmierer zusammen, ohne sich jemals persönlich zu treffen. Das Verfahren ist damit von erheblicher Bedeutung für die Zukunft der Programmentwicklung.

6 1.3 Programmierung Normung Die internationale Normung von Programmiersprachen erfolgt durch verschiedene Gremien, etwa die International Standardization Organisation ISO und die European Computer Manufacturers Association ECMA. Von Bedeutung ist auch das American National Standards Institute ANSI. Die Bedeutung einer solchen Normung ist jedoch zu relativieren: Einerseits dauert es u.u. Jahrzehnte bis zu einer Normung, andererseits unterlaufen Hersteller die geltenden Normen oft durch rasche Weiterentwicklung proprietärer Sprachen. Die Verwendung genormter Sprachen spielt deshalb in der Neuentwicklung oft eine untergeordnete Rolle - sie ist hingegen eminent wichtig bei der Wartung oder gar Wiederverwendung von älterem Programmcode. Die "natürliche Lebensdauer" einer Software steht deshalb in Zusammenhang mit der Normungsfrage. 1.3 Programmierung Vorgehensweise Unter Programmierung verstehen wir im Speziellen die Entwurfs- und Codierungsphase des in Abschnitt 1.3 beschriebenen Ablaufs, also Systementwurf, Programmentwurf und Codierung. Dabei werden zunächst die Eingabedaten, die zu verarbeitenden Daten und die Ausgabedaten definiert, strukturiert und mit Namen versehen. Als Nächstes müssen die Programmstruktur entsprechend dem Programmierparadigma der ausgewählten Programmiersprache definiert werden sowie für jede zu erstellende Quelltextdatei ein Programmkopf mit Hinweisen auf Autor, Erstellungsdatum etc. eingegeben werden. Bei integrierten Entwicklungsumgebungen ( IDE) und CASE-Tools erfolgt dies in der Regel halbautomatisch. Schließlich sind die Programmkomponenten als Quelltext einzugeben, hierbei kann in integrierten Umgebungen evtl. eine Unterstützung durch visuelle Programmierung erfolgen. Kommentare sind dabei bereits während der Code-Erzeugung einzubauen, erzeugter Code ist - falls dies nicht automatisch geschieht - mit Versionsnummern zu versehen und zu archivieren.

7 22 1 Einleitung Regeln guter Programmierung Quelltext muss unbedingt durch Einrückung von Schleifenebenen, Kommentarzeilen und Leerzeilen strukturiert werden. Variablennamen sollen aussagekräftig sein, wenn möglich sollen ihre Namen durch Binnenmajuskeln (Großbuchstaben im Wortinneren) strukturiert werden. Das Grundprinzip des defensiven Sprachgebrauchs ist zu beachten: Nicht der kürzeste und am schwersten lesbare Code ist der Beste, sondern derjenige mit der größten Einfachheit und Klarheit. Code sollte portabel, d.h. keinesfalls auf einen bestimmten Compiler oder eine bestimmte Laufzeitumgebung zugeschnitten sein. Code für eine bestimmte Rechnerarchitektur oder ein bestimmtes Betriebssystem sollte eindeutig als solcher gekennzeichnet und von der Hauptlogik des Programms möglichst trennbar sein. Direkte Sprungbefehle entsprechen nicht mehr dem Stand der Technik und sollten vermieden werden. 1.4 Klassifizierung von Programmiersprachen Tabelle 1.1: Klassifizierung von Programmiersprachen nach Generationen Generation 1 Binäre Maschinensprachen 2 Assemblersprachen 3 Problemorientiert, imperative/prozedurale Sprachen 4 4GL-Sprachen sind anwendungsorientiert, z.b. SQL, Maple 5 Deklarative Programmiersprachen Tabelle 1.2: Klassifizierung von Programmiersprachen nach dem Programmierparadigma. Zur Erklärung siehe Glossar (Abschnitt 1.5) Paradigma Hier behandelt Weitere Beispiele imperativ/ prozedural funktional/ applikativ logisch/ prädikativ Ada83, BASIC, C, COBOL, FORTRAN, MODULA-2, Pascal LISP PROLOG ALGOL, COMAL, ELAN, PL/I, Simula, SNOBOL Scheme, LOGO, ML, Miranda, Erlang, Haskell CLP

8 1.4 Klassifizierung von Programmiersprachen 23 objektbasiert objektorientiert JavaScript Ada95, C++, C#, Java, Smalltalk AppleScript Self, Oberon, Eiffel Tabelle 1.3: Die wichtigsten Programmiersprachen Sprache Kurzbeschreibung Ada Vgl. Kapitel 9 ALGOL "Algorithmic Language", ab 1960 ANSYS APL APT "Analysis Systems", zur Beschreibung von Berechnung mit der Finite-Elemente-Methode "A Programming Language", spezifiziert 1961 von Iverson "Automatic Programmed Tools", Sprache für Werkzeugmaschinen ab 1959 Assembler Vgl. Glossar in Abschnitt 1.5 AutoCAD awk BASIC Vgl. Kapitel 12 BCL 4GL-Sprache für Copmputer Aided Design Stringverarbeitungssprache im Betriebssystem Unix Vorläufer von C C Vgl. Kapitel 2 C* C-Dialekt für Parallelprogrammierung C# Vgl. Kapitel 5 C++ Vgl. Kapitel 3 CHILL "CCITT HIgh Level Language", ab 1976 für Telekommunikationszwecke entwickelt CLOS Common LISP Object System, 1988 CLP "Constrained Logic Programming Language" ab 1990 COBOL Vgl. Kapitel 11 CSP Delphi DSL Formale Sprache zur Beschreibung paralleler Prozesse Objektorientierter Nachfolger von Pascal Design System Language, Vorläufer von PostScript Dylan "Dynamic Language", Abkömmling von Scheme, 1992 Eiffel Abkömmling von Smalltalk, 1987 Erlang Echtzeitfähige Sprache mit funktionalem Paradigma FORTH Problemorientierte Sprache ab 1971 FORTRAN 1. höhere Programmiersprache ab 1954, vgl. Kapitel 10

9 24 1 Einleitung Sprache Kurzbeschreibung Haskell Funktionale Programmiersprache, ab 1990 HTML IDL Java Vgl. Kapitel 4 "Hypertext Markup Language", deskriptive Sprache für Web-- Seiten. Vgl. [TBMM] "Interface Definition Language" zur abstrakten Beschreibung von verteilten Objekten JavaScript Vgl. Kapitel 14 JCL "Job Control Language", Skriptsprache ab 1960 LISP "List Processor", symbolorientierte Sprache ab 1960 LOGO LISP-Abkömmling ab 1970 Maple Vgl. Kapitel 23 Mathematica Vgl. Kapitel 22 Matlab Vgl. Kapitel 24 Miranda Funktionale Skriptsprache Modula-2 Vgl. Kapitel 8 Mondrian Oberon Occam Funktionale Sprache ähnlich Haskell Nachfolger von Modula-2 und Pascal Sprache für Parallelprogrammierung von Transputern Pascal Vgl. Kapitel 6 und 7 PEARL Perl Vgl. Kapitel 15 PHP Vgl. Kapitel 17 "Process and Experimental Automation Realtime Language". PL/I "Programming Lanuage I", Vorläufer von C, ab 1964 PostScript PROLOG Vgl. Kapitel 20 Seitenbeschreibungssprache, vgl. [TBMM] Python Skriptsprache, ab 1991 Scheme LISP-Dialekt, 1975 Self Objektorientierte Sprache, ab 1991 SGML "Standard Generalized Markup Language", deskriptive Sprache zur Markierung von Texten ab 1978 Simula Vorläufer von Smalltalk, 1966 Smalltalk Vgl. Kapitel 21 SNOBOL "String oriented Symbolic Language", 1965 SQL "Standard Query Language", Datenbanksprache seit 1980

10 1.5 Glossar Programmiersprachen 25 Sprache Kurzbeschreibung Tcl Vgl. Kapitel 16 VBasic Visual Basic, vgl. Kapitel 13 VRML XML "Virtual Reality Modeling Language", eine deskriptive Sprache zur Modellierung dreidimensionaler Welten. vgl. [TBMM] "extensible Markup Language", eine Metasprache zur Definition von deskriptiven Sprachen. Vgl. [TBMM] 1.5 Glossar Programmiersprachen Abgeleitete Klasse Eine abgeleitete Klasse ist eine Spezialisierung einer Basisklasse und erbt deren Eigenschaften. Abstrakte Klasse Von abstrakten Klassen können keine Objekte erzeugt werden. Sie dienen dazu, gemeinsam genutzte Funktionalität für abgeleitete Klassen zur Verfügung zu stellen. Weiterhin erlaubt eine abstrakte Klasse die Festlegung einer gemeinsamen Schnittstelle für alle daraus abgeleiteten Klassen. Abstrakte Operation Es handelt sich hierbei um die Festlegung einer Signatur für eine Operation, ohne das Verhalten (die Methode) zu implementieren. Enthält eine Klasse eine abstrakte Operation, so ist die Klasse selbst auch abstrakt. Abstrakte Operationen können in abgeleiteten Klassen überschrieben und damit implementiert werden. Aggregation Die Aggregation beschreibt eine Beziehung zwischen Klassen, die sich in einer Ganzes-Teile-Hierarchie ausdrückt. Eine Klasse als Ganzes setzt sich aus mehreren anderen Klassen, den Teilen, zusammen. Objekte der Teile können auch weiterexistieren, wenn das Ganze gelöscht wurde. Aktive Klasse Jedes Objekt der Klasse besitzt einen eigenen Kontrollfluss (Thread).

11 26 1 Einleitung Aktives Objekt Objekt einer aktiven Klasse. Algorithmus Rechenvorschrift Anwendungsorientierte Programmiersprache Sprachen der 4. Generation(vgl. Tabelle 1.1) sind in der Regel an spezielle Zwecke angepasst. Die damit erzeugten Programme liegen nicht als Binärcode vor, sondern werden von speziellen Laufzeitumgebungen meist interpretativ abgearbeitet. Applikatives Programmierparadigma Funktionales Programmierparadigma Architektur Die Architektur definiert die grundlegende Struktur eines Softwaresystems, d.h., seine Zerlegung in Module und deren Zusammenwirken. Argument Parameter einer Operation oder Funktion. Assembler Am Prozessor orientierte Programmiersprache, in welcher direkt der ausführbare Maschinencode programmiert wird. Assoziation Eine Assoziation beschreibt eine allgemeine Beziehung zwischen Klassen. Beispielsweise kann eine Klasse Bild eine Beziehung zur Klasse Position haben, die die Position des Bildes auf dem Bildschirm beinhaltet. Objekte beider Klassen dürfen unabhängig voneinander existieren. Assoziationen können gerichtet (unidirektional) sein. Damit kennt beispielsweise das Bild zwar seine Position, die Position aber nicht das Bild. Die Klassen an den Enden einer Assoziation werden Assoziationsrollen genannt. Kardinalitäten an einer Assoziation drücken aus, wie viele Objekte der Klassen untereinander in Beziehung stehen. Assoziationsrolle Beschreibt die Aufgabe, die eine Klasse in einer Assoziation erfüllt.

12 17 1 Einleitung Holger Vogelsang und Peter A. Henning 1.1 Definition und Geschichte Ein Programm ist eine Abfolge von Daten und Befehlen an einen Prozessor, um diese Daten in andere Daten umzuwandeln. Es wird in einer formal definierten Sprache verfasst, der Programmiersprache. Die erste höhere Programmiersprache war der 1945 von Konrad Zuse entwickelte Plankalkül [Z72, PK]. Konrad Zuse ( ) ist damit nicht nur der Erbauer des ersten Computers mit Von-Neumann-Architektur (1941), sondern auch der Erfinder der Programmiersprachen. Hinweis: Ein im folgenden Text markiert einen Eintrag im Glossar (Abschnitt 1.5) Computer waren lange Zeit nur in Maschinensprache oder Assembler programmierbar, bis 1954 FORTRAN als erste praktisch einsetzbare höhere Programmiersprache entwickelt wurde. Die ersten Programmiersprachen waren problemorientiert und folgten dem prozeduralen Programmierparadigma. Die Blockorientierung kam erst mit ALGOL auf, um 1970 begann sich mit Pascal die so genannte strukturierte Programmierung durchzusetzen. Parallel dazu entwickelte sich ab ca das objektorientierte Programmierparadigma, im Wesentlichen über die Stufen der Sprache Smalltalk. Es mündete ab ca in die Einbringung objektorientierter Aspekte in die meisten Programmiersprachen. Symbolische Programmierung zur Lösung nicht-nummerischer Probleme begann um 1960 mit LISP und mündet heute in das deklarative Programmierparadigma. Ab 1960 entwickelten sich aus der Job Control Language JCL eine Vielzahl von Skriptsprachen, die eine einfache Integration anderer Programme und Abläufe ermöglichen. Nach 1975 entstanden deskriptive Sprachen, die jeweils mehr oder weniger Programmlogik beinhalten, vgl. Tabelle 1.3 in Abschnitt 1.7. Heute existieren weit über 1000 verschiedene Programmiersprachen, die teilweise nur wenige Jahre en vogue sind [S96].

13 18 1 Einleitung Deskriptive Sprachen SGML HTML VRML XML BASIC DSL PostScript Perl REXX Tcl JCL Tcl/Tk Maschinensprache Assembler APL FORTH SQL JavaScript PHP COBOL 68 COBOL 74 awk Python VB.NET VBasic FORTRAN COBOL SNOBOL COBOL 85 C Lambda-Kalkül ALGOL 60 ALGOL 68 FORTRAN 77 FORTRAN 90 FORTRAN 95 COBOL 2002 FORTRAN 2000 PL/I Pascal Ada C++ Simula Oberon LOGO Lisp PROLOG MODULA-2 Miranda Object Pascal/ Delphi Ada95 Scheme Logikkalküle CLOS Java C# Dylan Smalltalk 80 Eiffel Haskell Oz Mondrian Smalltalk CSP Occam CLP Bild 1.1: "Stammbaum" der wichtigsten Programmiersprachen und ihrer Abkömmlinge. Vgl. dazu auch Tabelle 1.3

14 1.2 Programmentwicklung Programmentwicklung Die Entwicklung von Programmen erfolgt heute als ingenieurmäßige Arbeit (Software Engineering) und besteht aus mehreren Phasen. In der Spezifikationsphase werden die zu lösenden Probleme im Klartext exakt beschrieben und ggf. Eingrenzungen des Lösungsraumes (z.b. durch Limitierung der Hardware, der Kosten oder der Entwicklungszeit) festgelegt. In der Regel wird dabei ein Lastenheft erstellt. In der Konzeptionsphase wird eine Funktionsplanung des Programmes erstellt, gefolgt von einer Aufwands- und Terminplanung für die Entwicklungsarbeit. In der Entwurfsphase erfolgt zunächst der Systementwurf, in welchem Datenstrukturen, Algorithmen und Schnittstellen festgelegt werden. Er wird vom Programmentwurf gefolgt, in dem die Programmstruktur festgelegt und schrittweise verfeinert wird. Oft erfolgt dies durch Formulierung in einer Zwischensprache, z.b. als Programmablaufplan, Struktogramm oder in einer Modellierungssprache. In der Codierungsphase wird Quelltext in der ausgewählten Programmiersprache erzeugt. Dabei werden in der Regel mehrere Edit-Compile- Test-Zyklen durchlaufen. Tests sind in der Regel aber auf syntaktische und semantische Aspekte beschränkt und überprüfen nicht die eigentliche Programmlogik. Diese Überprüfung erfolgt in der Testphase, meist in Form von Moduloder Klassentests sowie Integrationstests. Im Fehlerfall führt dies zum Rücksprung in die Codierungsphase oder gar in eine noch frühere Phase. Letzteres sollte vermieden werden, weil es den Projekterfolg gefährdet. In der Freigabephase oder Releasephase wird das fertige Software- Produkt an den Endanwender ausgeliefert. Selbstverständlich wird der gesamte Arbeitsablauf vollständig in einer Dokumentation niedergelegt, diese ist mindestens in Teilen auch dem Endanwender auszuhändigen und bildet die Basis für Schulungen Industrielle Software-Entwicklung Die industrielle Programmentwicklung versucht heute, mehr und mehr standardisierte Verfahren zu verwenden. Ziel ist einerseits, bereits existierende Programmbestandteile ( Unterprogramme, Module, Klas-

15 20 1 Einleitung sen, Objekte, Bibliotheken) möglichst ohne Anpassung wiede zu verwenden. Andererseits sollen auch bewährte Architekturen von Programmen oder Programmteilen wieder verwendet werden ( Entwurfsmuster). Im industriellen Sektor haben sich deshalb integrierte Entwicklungsumgebungen ( IDE) weitgehend durchgesetzt. Viele dieser Systeme erlauben auch die gemeinsame Bearbeitung großer Projekte durch Zugriff auf ein gemeinsames Code-Repository, welches eine automatisierte Versionskontrolle bietet. Darüber hinaus bieten solche Entwicklungsumgebungen häufig Code-Generatoren und Möglichkeiten zur visuellen Programmierung an, man spricht dann von CASE-Tools (CASE = Computer Aided Software Engineering). Für die industrielle Software-Entwicklung gibt es eine Vielzahl von Vorgehensmodellen, vom Wasserfallmodell [WM] über das V-Modell [VM] bis zum Extreme Programming [XP]. Bisher hat sich kein Verfahren allgemein durchgesetzt. Der Grund dafür ist in der Vielzahl von unterschiedlichen Firmenkulturen zu suchen, sowie in der Tatsache, dass nach wie vor Menschen mit allen individuellen Stärken und Schwächen die Programme schreiben. Näheres siehe in [TBI] Open Source-Software Es ist bewiesen, dass kein formales Verfahren zur Verifizierung beliebiger Programme existiert. Damit kann die Fehlerfreiheit von Programmen weitestgehend nur dann gewährleistet werden, wenn seine Bestandteile lange genug der Kritik von Benutzern ausgesetzt waren. Dies gilt insbesondere für Programme, bei denen auch der Quelltext öffentlich zur Verfügung steht: Fehler können nicht nur entdeckt, sondern von einer Vielzahl von Personen auch im Quelltext lokalisiert werden. Die ersten Open Source-Projekte entstanden schon ab 1965, richtig an Boden gewonnen hat dieses Prinzip aber erst mit dem Aufstieg des Internet. Zwei wichtige Beispiele dafür sind das Open Source-Betriebssystem Linux und der Web-Server Apache. Bei großen Open Source-Projekten arbeiten teilweise mehrere hundert Programmierer zusammen, ohne sich jemals persönlich zu treffen. Das Verfahren ist damit von erheblicher Bedeutung für die Zukunft der Programmentwicklung.

16 1.3 Programmierung Normung Die internationale Normung von Programmiersprachen erfolgt durch verschiedene Gremien, etwa die International Standardization Organisation ISO und die European Computer Manufacturers Association ECMA. Von Bedeutung ist auch das American National Standards Institute ANSI. Die Bedeutung einer solchen Normung ist jedoch zu relativieren: Einerseits dauert es u.u. Jahrzehnte bis zu einer Normung, andererseits unterlaufen Hersteller die geltenden Normen oft durch rasche Weiterentwicklung proprietärer Sprachen. Die Verwendung genormter Sprachen spielt deshalb in der Neuentwicklung oft eine untergeordnete Rolle - sie ist hingegen eminent wichtig bei der Wartung oder gar Wiederverwendung von älterem Programmcode. Die "natürliche Lebensdauer" einer Software steht deshalb in Zusammenhang mit der Normungsfrage. 1.3 Programmierung Vorgehensweise Unter Programmierung verstehen wir im Speziellen die Entwurfs- und Codierungsphase des in Abschnitt 1.3 beschriebenen Ablaufs, also Systementwurf, Programmentwurf und Codierung. Dabei werden zunächst die Eingabedaten, die zu verarbeitenden Daten und die Ausgabedaten definiert, strukturiert und mit Namen versehen. Als Nächstes müssen die Programmstruktur entsprechend dem Programmierparadigma der ausgewählten Programmiersprache definiert werden sowie für jede zu erstellende Quelltextdatei ein Programmkopf mit Hinweisen auf Autor, Erstellungsdatum etc. eingegeben werden. Bei integrierten Entwicklungsumgebungen ( IDE) und CASE-Tools erfolgt dies in der Regel halbautomatisch. Schließlich sind die Programmkomponenten als Quelltext einzugeben, hierbei kann in integrierten Umgebungen evtl. eine Unterstützung durch visuelle Programmierung erfolgen. Kommentare sind dabei bereits während der Code-Erzeugung einzubauen, erzeugter Code ist - falls dies nicht automatisch geschieht - mit Versionsnummern zu versehen und zu archivieren.

17 22 1 Einleitung Regeln guter Programmierung Quelltext muss unbedingt durch Einrückung von Schleifenebenen, Kommentarzeilen und Leerzeilen strukturiert werden. Variablennamen sollen aussagekräftig sein, wenn möglich sollen ihre Namen durch Binnenmajuskeln (Großbuchstaben im Wortinneren) strukturiert werden. Das Grundprinzip des defensiven Sprachgebrauchs ist zu beachten: Nicht der kürzeste und am schwersten lesbare Code ist der Beste, sondern derjenige mit der größten Einfachheit und Klarheit. Code sollte portabel, d.h. keinesfalls auf einen bestimmten Compiler oder eine bestimmte Laufzeitumgebung zugeschnitten sein. Code für eine bestimmte Rechnerarchitektur oder ein bestimmtes Betriebssystem sollte eindeutig als solcher gekennzeichnet und von der Hauptlogik des Programms möglichst trennbar sein. Direkte Sprungbefehle entsprechen nicht mehr dem Stand der Technik und sollten vermieden werden. 1.4 Klassifizierung von Programmiersprachen Tabelle 1.1: Klassifizierung von Programmiersprachen nach Generationen Generation 1 Binäre Maschinensprachen 2 Assemblersprachen 3 Problemorientiert, imperative/prozedurale Sprachen 4 4GL-Sprachen sind anwendungsorientiert, z.b. SQL, Maple 5 Deklarative Programmiersprachen Tabelle 1.2: Klassifizierung von Programmiersprachen nach dem Programmierparadigma. Zur Erklärung siehe Glossar (Abschnitt 1.5) Paradigma Hier behandelt Weitere Beispiele imperativ/ prozedural funktional/ applikativ logisch/ prädikativ Ada83, BASIC, C, COBOL, FORTRAN, MODULA-2, Pascal LISP PROLOG ALGOL, COMAL, ELAN, PL/I, Simula, SNOBOL Scheme, LOGO, ML, Miranda, Erlang, Haskell CLP

18 1.4 Klassifizierung von Programmiersprachen 23 objektbasiert objektorientiert JavaScript Ada95, C++, C#, Java, Smalltalk AppleScript Self, Oberon, Eiffel Tabelle 1.3: Die wichtigsten Programmiersprachen Sprache Kurzbeschreibung Ada Vgl. Kapitel 9 ALGOL "Algorithmic Language", ab 1960 ANSYS APL APT "Analysis Systems", zur Beschreibung von Berechnung mit der Finite-Elemente-Methode "A Programming Language", spezifiziert 1961 von Iverson "Automatic Programmed Tools", Sprache für Werkzeugmaschinen ab 1959 Assembler Vgl. Glossar in Abschnitt 1.5 AutoCAD awk BASIC Vgl. Kapitel 12 BCL 4GL-Sprache für Copmputer Aided Design Stringverarbeitungssprache im Betriebssystem Unix Vorläufer von C C Vgl. Kapitel 2 C* C-Dialekt für Parallelprogrammierung C# Vgl. Kapitel 5 C++ Vgl. Kapitel 3 CHILL "CCITT HIgh Level Language", ab 1976 für Telekommunikationszwecke entwickelt CLOS Common LISP Object System, 1988 CLP "Constrained Logic Programming Language" ab 1990 COBOL Vgl. Kapitel 11 CSP Delphi DSL Formale Sprache zur Beschreibung paralleler Prozesse Objektorientierter Nachfolger von Pascal Design System Language, Vorläufer von PostScript Dylan "Dynamic Language", Abkömmling von Scheme, 1992 Eiffel Abkömmling von Smalltalk, 1987 Erlang Echtzeitfähige Sprache mit funktionalem Paradigma FORTH Problemorientierte Sprache ab 1971 FORTRAN 1. höhere Programmiersprache ab 1954, vgl. Kapitel 10

19 24 1 Einleitung Sprache Kurzbeschreibung Haskell Funktionale Programmiersprache, ab 1990 HTML IDL Java Vgl. Kapitel 4 "Hypertext Markup Language", deskriptive Sprache für Web-- Seiten. Vgl. [TBMM] "Interface Definition Language" zur abstrakten Beschreibung von verteilten Objekten JavaScript Vgl. Kapitel 14 JCL "Job Control Language", Skriptsprache ab 1960 LISP "List Processor", symbolorientierte Sprache ab 1960 LOGO LISP-Abkömmling ab 1970 Maple Vgl. Kapitel 23 Mathematica Vgl. Kapitel 22 Matlab Vgl. Kapitel 24 Miranda Funktionale Skriptsprache Modula-2 Vgl. Kapitel 8 Mondrian Oberon Occam Funktionale Sprache ähnlich Haskell Nachfolger von Modula-2 und Pascal Sprache für Parallelprogrammierung von Transputern Pascal Vgl. Kapitel 6 und 7 PEARL Perl Vgl. Kapitel 15 PHP Vgl. Kapitel 17 "Process and Experimental Automation Realtime Language". PL/I "Programming Lanuage I", Vorläufer von C, ab 1964 PostScript PROLOG Vgl. Kapitel 20 Seitenbeschreibungssprache, vgl. [TBMM] Python Skriptsprache, ab 1991 Scheme LISP-Dialekt, 1975 Self Objektorientierte Sprache, ab 1991 SGML "Standard Generalized Markup Language", deskriptive Sprache zur Markierung von Texten ab 1978 Simula Vorläufer von Smalltalk, 1966 Smalltalk Vgl. Kapitel 21 SNOBOL "String oriented Symbolic Language", 1965 SQL "Standard Query Language", Datenbanksprache seit 1980

20 1.5 Glossar Programmiersprachen 25 Sprache Kurzbeschreibung Tcl Vgl. Kapitel 16 VBasic Visual Basic, vgl. Kapitel 13 VRML XML "Virtual Reality Modeling Language", eine deskriptive Sprache zur Modellierung dreidimensionaler Welten. vgl. [TBMM] "extensible Markup Language", eine Metasprache zur Definition von deskriptiven Sprachen. Vgl. [TBMM] 1.5 Glossar Programmiersprachen Abgeleitete Klasse Eine abgeleitete Klasse ist eine Spezialisierung einer Basisklasse und erbt deren Eigenschaften. Abstrakte Klasse Von abstrakten Klassen können keine Objekte erzeugt werden. Sie dienen dazu, gemeinsam genutzte Funktionalität für abgeleitete Klassen zur Verfügung zu stellen. Weiterhin erlaubt eine abstrakte Klasse die Festlegung einer gemeinsamen Schnittstelle für alle daraus abgeleiteten Klassen. Abstrakte Operation Es handelt sich hierbei um die Festlegung einer Signatur für eine Operation, ohne das Verhalten (die Methode) zu implementieren. Enthält eine Klasse eine abstrakte Operation, so ist die Klasse selbst auch abstrakt. Abstrakte Operationen können in abgeleiteten Klassen überschrieben und damit implementiert werden. Aggregation Die Aggregation beschreibt eine Beziehung zwischen Klassen, die sich in einer Ganzes-Teile-Hierarchie ausdrückt. Eine Klasse als Ganzes setzt sich aus mehreren anderen Klassen, den Teilen, zusammen. Objekte der Teile können auch weiterexistieren, wenn das Ganze gelöscht wurde. Aktive Klasse Jedes Objekt der Klasse besitzt einen eigenen Kontrollfluss (Thread).

21 26 1 Einleitung Aktives Objekt Objekt einer aktiven Klasse. Algorithmus Rechenvorschrift Anwendungsorientierte Programmiersprache Sprachen der 4. Generation(vgl. Tabelle 1.1) sind in der Regel an spezielle Zwecke angepasst. Die damit erzeugten Programme liegen nicht als Binärcode vor, sondern werden von speziellen Laufzeitumgebungen meist interpretativ abgearbeitet. Applikatives Programmierparadigma Funktionales Programmierparadigma Architektur Die Architektur definiert die grundlegende Struktur eines Softwaresystems, d.h., seine Zerlegung in Module und deren Zusammenwirken. Argument Parameter einer Operation oder Funktion. Assembler Am Prozessor orientierte Programmiersprache, in welcher direkt der ausführbare Maschinencode programmiert wird. Assoziation Eine Assoziation beschreibt eine allgemeine Beziehung zwischen Klassen. Beispielsweise kann eine Klasse Bild eine Beziehung zur Klasse Position haben, die die Position des Bildes auf dem Bildschirm beinhaltet. Objekte beider Klassen dürfen unabhängig voneinander existieren. Assoziationen können gerichtet (unidirektional) sein. Damit kennt beispielsweise das Bild zwar seine Position, die Position aber nicht das Bild. Die Klassen an den Enden einer Assoziation werden Assoziationsrollen genannt. Kardinalitäten an einer Assoziation drücken aus, wie viele Objekte der Klassen untereinander in Beziehung stehen. Assoziationsrolle Beschreibt die Aufgabe, die eine Klasse in einer Assoziation erfüllt.

1 Einleitung. 1.1 Definition und Geschichte. Holger Vogelsang und Peter A. Henning

1 Einleitung. 1.1 Definition und Geschichte. Holger Vogelsang und Peter A. Henning 17 1 Einleitung Holger Vogelsang und Peter A. Henning 1.1 Definition und Geschichte Ein Programm ist eine Abfolge von Daten und Befehlen an einen Prozessor, um diese Daten in andere Daten umzuwandeln.

Mehr

Geschichte der Programmiersprachen

Geschichte der Programmiersprachen Erster Vorläufer: das Plankalkül, 1942 von K. Zuse, erst 1975 erstmals vollständig beschrieben und implementiert, keine praktische Relevanz Sprachen der 1. Generation (1.GL): Maschinensprachen: binär,

Mehr

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms. Inhalt Algorithmus Euklidscher Algorithmus Sortieren Programmiersprachen Entwicklungsschritte eines Programms Algorithmen 1 Algorithmus Eindeutige Beschreibung eines allgemeinen Verfahrens unter Verwendung

Mehr

Taschenbuch Programmiersprachen

Taschenbuch Programmiersprachen Taschenbuch Programmiersprachen von Peter A. Henning, Holger Vogelsang 2., neu bearbeitete Auflage Hanser München 2007 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 40744 2 Zu Inhaltsverzeichnis

Mehr

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 - n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information

Mehr

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Ein Zitat zu Beginn Vor der Wahl, ein theoretischer Physiker oder ein Programmierer

Mehr

10. Programmierungs-Phase: Objektorientierung Software Engineering

10. Programmierungs-Phase: Objektorientierung Software Engineering 10. Programmierungs-Phase: Objektorientierung Software Engineering Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 15. Dezember 2005 Einordnung in den Kontext

Mehr

III.1 Prinzipien der funktionalen Programmierung - 1 -

III.1 Prinzipien der funktionalen Programmierung - 1 - 1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung

Mehr

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik

7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 7. Programmierungs- Phase Software Engineering (FB EIT) Wintersemester 2007 / 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, FB Informatik 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik:

Mehr

Handbuch Programmiersprachen

Handbuch Programmiersprachen Handbuch Programmiersprachen Peter A. Henning, Holger Vogelsang Softwareentwicklung zum Lernen und Nachschlagen ISBN 3-446-40558-5 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40558-5

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

6. Programmiersprachen im Überblick. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

6. Programmiersprachen im Überblick. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 6. Programmiersprachen im Überblick K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 21. Okt. 2015 2 Was ist das: eine Programmiersprache? Formale Sprache *), die zur Beschreibung

Mehr

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure

2. JAVA-Programmierung. Informatik II für Verkehrsingenieure 2. JAVA-Programmierung Informatik II für Verkehrsingenieure Problem-Algorithmus-Umsetzung Problemstellung Algorithmus Umsetzung 2 Beispiele für Algorithmen 3 Definitionsversuch Algorithmus Anleitung, wie

Mehr

1.3 Geschichte der Programmiersprachen

1.3 Geschichte der Programmiersprachen 50er Jahre erste Definition höherer Programmiersprachen Effizienz maßgebliches Designziel FORTRAN (Backus) als Sprache für wissenschaftliches Rechnen (komplexe Berechnungen, einfachen Daten), Arrays, Schleifen,

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einleitung Gliederung Einführung in die Programmierung Wintersemester 2017/18 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einleitung Gliederung Einführung in die Programmierung Wintersemester 08/09 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering

Mehr

Definitionen/Vorarbeit zum Thema Java

Definitionen/Vorarbeit zum Thema Java Definitionen/Vorarbeit zum Thema Java Programmiersprachen: System von Wörtern und Symbolen, die zur Formulierung von Programmen für die elektronische Datenverarbeitung verwendet werden. Arten: z.b. Javascript

Mehr

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren

Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Kapitel 1: Einleitung Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Gliederung Zum Begriff Informatik

Mehr

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 -

1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog. IV.1 Grundkonzepte der logischen Programmierung - 1 - 1. Grundkonzepte der logischen Programmierung 2. Syntax von Prolog 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen Folge von

Mehr

Einführung in die Programmierung Wintersemester 2016/17

Einführung in die Programmierung Wintersemester 2016/17 Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einleitung Gliederung Zum Begriff Informatik Zum

Mehr

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 -

n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - n 1. Grundkonzepte der logischen Programmierung n 2. Syntax von Prolog n 3. Rechnen in Prolog IV.1 Grundkonzepte der logischen Programmierung - 1 - Übersicht Imperative Sprachen Deklarative Sprachen l

Mehr

Softwaretechnik. Wesentliche Inhalte der Vorlesung

Softwaretechnik. Wesentliche Inhalte der Vorlesung Softwaretechnik Prof. Dr. Bernhard Schiefer schiefer@informatik.fh-kl.de http://www.informatik.fh-kl.de/~schiefer Prof. Dr. Bernhard Schiefer 1-1 Wesentliche Inhalte der Vorlesung Phasen der Software-Entwicklung

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Agenda Elementare Einführung C Programm Syntax Datentypen, Variablen und Konstanten Operatoren und Ausdrücke Kontrollstrukturen

Mehr

Programmiersprachen und Programmierkonzepte

Programmiersprachen und Programmierkonzepte Programmiersprachen und Programmierkonzepte Inhalt Programmiersprachen- Entwicklung Programmiersprachen und Programmierparadigmen Die Geschichte der Programmiersprachen Anfänge vor 200 Jahren Programmierbare

Mehr

Konzepte der Programmiersprachen

Konzepte der Programmiersprachen Konzepte der Programmiersprachen Lehrstuhl Prof. Plödereder Eduard Wiebe Institut für Softwaretechnologie Abteilung Programmiersprachen und Übersetzerbau Sommersemester 2007 Programm-Ausführung Programmiersprachen

Mehr

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

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

Mehr

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2017 1. Einführung 1.1 Sprachen und

Mehr

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen

Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung

Mehr

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

Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise? Prof. Dr.-Ing. Dietrich Schröder GIS und Programmiersprachen: Wohin geht die Reise? 1954 1960 1965 1970 1975 1980 1985 1990 1995 01 02 03 04 40 Jahre Programmierenausbildung im Studiengang VG Programmiersprachen

Mehr

Programmiersprachen Proseminar

Programmiersprachen Proseminar Programmiersprachen Proseminar Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz/Softwaretechnologie Programmiersprachen Proseminar SS 2005 p.1/25 Personen Prof. Dr. Manfred Schmidt-Schauß, Zimmer

Mehr

Wie entsteht ein Computerprogramm?

Wie entsteht ein Computerprogramm? Wie entsteht ein Computerprogramm Grundstrukturen von Programmen Programmiersprachen Entwicklungsschritte eines Programms Programmdokumentation Seite 1 Telefonanruf-Algorithmus Start Rufnummer bereitstellen

Mehr

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217 EIDI 1 Einführung in die Informatik 1 PGdP Praktikum Grundlagen der Programmierung Harald Räcke 2/217 Wie löst man Probleme mithilfe von Computern? 0 Harald Räcke 3/217 Inhalte: EIDI 1 1. Was ist das Problem?

Mehr

Programmiersprache. Emily & rica

Programmiersprache. Emily & rica Programmiersprache Emily & rica inhaltsangabe Programmiersprache Def inition/funktion Arten Gängige Algorithmus/Syntax Compiler, Interpreter Def inition Unterscheidung Vor- und Nachteile Compiler/ Interpreter

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Höhere Programmiersprachen

Höhere Programmiersprachen Höhere Programmiersprachen Prof. Dr. Dr. h.c. Gerhard Goos Dipl.-Inform. Sebastian Hack (ggoos hack)@ipd.info.uni-karlsruhe.de Institut für Programmstrukturen und Datenorganisation Universität Karlsruhe

Mehr

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

Ein Streifzug durch die Programmiersprachenlandschaft in der Schule. Gerald Futschek TU Wien Informatiktag 2013 Ein Streifzug durch die Programmiersprachenlandschaft in der Schule Gerald Futschek TU Wien Informatiktag 2013 Urwald der Programmiersprachen COBOL Visual Basic Modula-2 Logo Pascal SQL APL BASIC LISP

Mehr

2. Einführung. Informatik II für Verkehrsingenieure

2. Einführung. Informatik II für Verkehrsingenieure 2. Einführung Informatik II für Verkehrsingenieure Überblick ZIEL DER EINFÜHRUNG Was ist Informatik Historische Entwicklung von Programmiersprachen 2 Was ist Informatik? 3 Was ist Informatik? FRANZÖSISCH

Mehr

Software Engineering. 5. Architektur

Software Engineering. 5. Architektur Software Engineering 5. Architektur Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung Konfigurationsmanagement

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Semantik von Programmiersprachen 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Sommersemester 2013 1. Einführung 1.1 Sprachen und

Mehr

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus. 1 Einführung Programmiersprachen: Ermöglichen formale Beschreibung von Problemlösungsverfahren, die auf einem Computer oder Computersystemen ausführbar sind. Bilden die Basis zur Entwicklung von Software

Mehr

Übung - Modellierung & Programmierung II

Übung - Modellierung & Programmierung II 1 Übung - Modellierung & Programmierung II Mathias Goldau, Stefan Koch, Wieland Reich, Dirk Zeckzer, Stefan Philips, Sebastian Volke math@informatik.uni-leipzig.de stefan.koch@informatik.uni-leipzig.de

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

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

Einleitung und Begriffliches. Einleitung. Programmiersprachen. Software-Komplexität ist inhärent und hat vor allem folgende Ursachen Einleitung Einleitung und Begriffliches Software-Komplexität ist inhärent und hat vor allem folgende Ursachen Komplexität des gegebenen Problems Schwierigkeiten beim Management des Entwicklungsprozesses

Mehr

Objektorientiertes Software-Engineering

Objektorientiertes Software-Engineering Objektorientiertes Software-Engineering TIT99BPE/TIT99CPE BA Mannheim WS 2001/2 F. Schönleber Organisatorisches Kurs 1: TIT99BPE 6.Studienhalbjahr Termin Mo. 13.00 14.30 Raum: 037B Kurs 1: TIT99CPE 6.Studienhalbjahr

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Klaus Knopper 09.11.2004 Inhaltsverzeichnis Programmiersprachen Eine Programmiersprache ist eine formale Sprache zur Darstellung (Notation) von Computerprogrammen. Sie vermittelt

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen

Vorlesung Programmieren. Programmiersprachen-Paradigmen. Programmierparadigmen. Eine Programmiersprache dient dem Aufschreiben von Algorithmen Vorlesung Programmieren Programmierparadigmen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Programmiersprachen-Paradigmen Eine Programmiersprache

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 37

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 37 Skript Informatik Seite 1 von 37 Was ist Informatik? - Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere deren automatisierte Verarbeitung mit Hilfe von

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 21. Oktober 2015 Automat versus Computer Ein Automat ist eine Maschine,

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Software- und Systementwicklung

Software- und Systementwicklung Software- und Systementwicklung Seminar: Designing for Privacy 11.11.2009 Moritz Vossenberg Inhalt Vorgehensmodelle Wasserfallmodell V-Modell Phasen (Pflichtenheft) UML Klassendiagramm Sequenzdiagramm

Mehr

Einführung in die Programmierung WS 2014/15. 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

Einführung in die Programmierung WS 2014/15. 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1 Einführung in die Programmierung WS 2014/15 2. Algorithmus, Berechenbarkeit und Programmiersprachen 2-1 2. Alg., Ber. & PS Inhalt 1. Algorithmen 2. Programmiersprachen Algorithmus und Programm(iersprache)

Mehr

Programmieren für Fortgeschrittene

Programmieren für Fortgeschrittene Programmieren für Fortgeschrittene 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Wintersemester 2013/2014 1. Einführung 1.1 Sprachen

Mehr

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Was sind Programme? In dieser Vorlesung: Python,

Mehr

Stichworte zur Ideengeschichte der Programmiersprachen

Stichworte zur Ideengeschichte der Programmiersprachen Stichworte zur Ideengeschichte der Programmiersprachen Faculty of Technology robert@techfak.uni-bielefeld.de Vorbemerkung Diese Notzien dienen zur Erläuterung des O Reilly Posters über die Entwicklung

Mehr

Inhalt. Java-Programmierkurs SS Steinzeit der Programmiersprachen. Vor den Steinzeit. Erste Programmiersprachen.

Inhalt. Java-Programmierkurs SS Steinzeit der Programmiersprachen. Vor den Steinzeit. Erste Programmiersprachen. Java-Programmierkurs Einführung in die Objektorientierte Programmierung mit Java SS 2003 Inhalt Geschichtliche Einführung Grundlagen der Imperativen Programmierung Objektorientiertes Programmieren in Java

Mehr

Programmentwurf mittels strukturierter Programmierung. Programmentwurf. Nassi-Shneiderman-Diagramm [DIN ]

Programmentwurf mittels strukturierter Programmierung. Programmentwurf. Nassi-Shneiderman-Diagramm [DIN ] Programmentwurf Bevor man sich daran macht, den Quelltext eines Programmes zu schreiben, sollte man sich einen Plan der Struktur des zukünftigen Programmes machen. Diese Phase eines Softwarentwicklungsprojekts

Mehr

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h> Allgemeines Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C #include int main() { printf( hello world\n ); return 0; } Peter Sobe 1 Verschiedene Sprachkonzepte

Mehr

(Building) Flexible Functional Programming Interfaces. Von Amos Treiber

(Building) Flexible Functional Programming Interfaces. Von Amos Treiber (Building) Flexible Functional Programming Interfaces Von Amos Treiber Gliederung Funktionale Programmierung Einführung Aspekte Vergleich: Funktional vs Imperativ Bending the language towards the problem

Mehr

ALP I Geschichtliche Einführung in die Programmiersprachen

ALP I Geschichtliche Einführung in die Programmiersprachen ALP I Geschichtliche Einführung in die Programmiersprachen Sammet, J. Programming Languages. History and Fundamentals. Prentice Hall, 1969. SS 2011 1 Wie viele Programmiersprachen? Es gibt mehr als 2000

Mehr

Einführung in die Programmierung. Michael Gamer

Einführung in die Programmierung. Michael Gamer Einführung in die Programmierung / 2015 1 Entwicklung der Programmiersprachen (1/5) Die Entwicklung der Programmiersprachen wird in Generationen eingeteilt. Erste Generation: Maschinensprache (ab 1950)

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2014/15 1 / 26 Allgemeines Progammiersprachen Objektorientierte Programmierung Grundlegende Eigenschaften

Mehr

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker

Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Computergrundlagen Programmiersprachen, Interpreter, Compiler, Linker Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Was sind Programme? In dieser Vorlesung: Python,

Mehr

Informatik für Chemieingenieurwesen Sommersemester 2018

Informatik für Chemieingenieurwesen Sommersemester 2018 Informatik für Chemieingenieurwesen Sommersemester 2018 Prof. Dr.-Ing. habil. Peter Sobe HTW Dresden Fakultät Informatik / Mathematik Zur Person: Prof. Dr.-Ing. habil. Peter Sobe Fakultät Informatik/Mathematik

Mehr

Software-Entwicklung

Software-Entwicklung SWE-0 Software-Entwicklung Prof. Dr. Uwe Kastens 2001 bei Prof. Dr. Uwe Kastens Vorlesung Software-Entwicklung / Folie 00 Ziele der Vorlesung SWE-1 Die Studierenden sollen die Programmentwicklung in Java

Mehr

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -

Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =

Mehr

1 Programmiersprachen 1.1 1

1 Programmiersprachen 1.1 1 1 Programmiersprachen 1.1 1 Meilensteine imperativer Programmiersprachen (teilweise objektorientiert) Fortran 1960 Cobol Algol 60 PL/I Algol W Simula 67 Algol 68 1970 Pascal C Smalltalk Modula 1980 Ada

Mehr

FACHHOCHSCHULE MANNHEIM

FACHHOCHSCHULE MANNHEIM Objektorientierte Programmierung 2. Vorlesung Prof. Dr. Peter Knauber Email: P.Knauber@fh-mannheim.de FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Kurzer Vor der Objektorientierung Programmierstile

Mehr

WS 2011/2012. Georg Sauthoff 1. October 12, 2011

WS 2011/2012. Georg Sauthoff 1. October 12, 2011 in in WS 2011/2012 Georg 1 AG Praktische Informatik October 12, 2011 1 gsauthof@techfak.uni-bielefeld.de Kontakt in Dr. Georg Email: gsauthof@techfak.uni-bielefeld.de M3-128 in Organisation der Übungen

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I Vorlesung Grundlagen der Informatik für Ingenieure I G. Bolch, C.-U. Linster, F.-X. Wurm Informatik 4 SS 2003.1 1 Einführung und Informationen zur Vorlesung 1 Einführung und Informationen zur Vorlesung

Mehr

Computergrundlagen Turingmaschinen und Programmierung

Computergrundlagen Turingmaschinen und Programmierung Computergrundlagen Turingmaschinen und Programmierung Jens Smiatek und Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2016/17 Was ist ein Computer? Ein Computer (Rechner oder

Mehr

Grundlagen der Informatik für Ingenieure I

Grundlagen der Informatik für Ingenieure I Vorlesung Grundlagen der Informatik für Ingenieure I C.-U. Linster, G. Bolch, F.-X. Wurm Informatik 4 SS 2005.1 1 Einführung und Informationen zur Vorlesung 1 Einführung und Informationen zur Vorlesung

Mehr

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

Teil 1: Einführung 1.5 Programmierparadigmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt Grundzüge der Informatik 1 Teil 1: Einführung 1.5 Programmierparadigmen Prof. Dr. Max Mühlhäuser FG Telekooperation TU-Darmstadt Agenda Was sindprogrammierparadigmen? Die wichtigsten Programmiersprachentypen

Mehr

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 1. Einführung und Grundbegriffe 1 Kapitel 1 2 Ziele Begriffsbildungen: Informatik, Algorithmus, Programm, Compiler, Einordnung von Java Ein einfaches Java-Programm erstellen, übersetzen und ausführen Java-Programme dokumentieren 3 Informatik

Mehr

ALGOL 68 im Aspekt einer modernen Programmiersprache???

ALGOL 68 im Aspekt einer modernen Programmiersprache??? ALGOL 68 im Aspekt einer modernen Programmiersprache??? General-purpose-Programmiersprache: Ein sehr wichtiges Kriterium ist die Möglichkeit, alle Algorithmen (=Lösungsverfahren) in einer Programmiersprache

Mehr

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE Grundlagen der Programmierung UE Research and teaching network GdP UE H. Prähofer, R. Wolfinger 1 Vortragende Dr. Herbert Praehofer (G1 u. G2) Mag. Reinhard Wolfinger (G3 u. G4) Institute for System Software

Mehr

Informatik Vorkurs Sommersemester 2015

Informatik Vorkurs Sommersemester 2015 Informatik Vorkurs Sommersemester 2015 Vom Algorithmus zum Programm Werner Struckmann / Marvin Priedigkeit, Stephan Mielke 31. März 10. April 2015 Kann ein Computer rechnen? Ist das Programm korrekt? Wiederholung:

Mehr

EIGENSCHAFTEN VON SPRACHEN

EIGENSCHAFTEN VON SPRACHEN Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler EIGENSCHAFTEN VON SPRACHEN EWS, WS 2016/17, Pfahler C-1 Einführung Sprachen in der Informatik werden für bestimmte Zwecke

Mehr

wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken

wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken 1 Java ist... gut erlernbar wenige Konzepte, keine Adressen, Anlehnung an C++ -Syntax objektorientiert Vererbung, Polymorphie/dynamisches Binden, umfangreiche Klassenbibliotheken robust keine Adressen,

Mehr

Client/Server-Programmierung

Client/Server-Programmierung Client/Server-Programmierung WS 2017/2018 Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/740-4050, Büro: H-B 8404 Stand: 12. Januar 2018 Betriebssysteme / verteilte

Mehr

In den weiterführenden Vorlesungen

In den weiterführenden Vorlesungen 1.1 Inhalte dieser und weiterer Vorlesungen Elemente der sog. Strukturierten Programmierung zur Darstellung der Algorithmen (Kontrollstrukturen, Methoden) Datentypen (Datenstrukturen) zusammen --> Objekte!

Mehr

5.1 Algorithmen Der Algorithmenbegriff

5.1 Algorithmen Der Algorithmenbegriff 5.1 Algorithmen 5.1.1 Der Algorithmenbegriff Duden: Algorithmus nach einem bestimmten Schema ablaufender Rechenvorgang Brockhaus: Algorithmus systematisches Rechenverfahren, das zu einer Eingabe nach endlich

Mehr

6. Programmiersprachen im Überblick

6. Programmiersprachen im Überblick Was ist das: eine Programmiersprache? 6. im Überblick Formale Sprache *), die zur Beschreibung von Berechnungen in omputern verwendet wird: Programme = Daten + Algorithmen *) Mengen von Wörtern über einem

Mehr

ALP I Geschichte der Programmiersprachen

ALP I Geschichte der Programmiersprachen ALP I Geschichte der Programmiersprachen WS 2009/2010 Prof. Dr. Margarita Esponda WS 2009/2010 Prof. Dr. Margarita Esponda 1 Programmiersprachen Eine Programmiersprache ist ein durch einen Rechner interpretierbarer

Mehr

Objektorientierte Programmierung (OOP)

Objektorientierte Programmierung (OOP) orientierte Programmierung (OOP) 1. Motivation Die objektorientierte Sichtweise der Welt Als Motivation für die OOP sieht man sich am besten die reale Welt an: Die reale Welt besteht aus "en", z. B.: Gegenstände,

Mehr

Grundlagen der Programmierung UE

Grundlagen der Programmierung UE Grundlagen der Programmierung UE Research and teaching network GdP UE H. Prähofer, M Löberbauer 1 Vortragende Dipl.-Ing. Markus Löberbauer (G1) Dr. Herbert Praehofer (G2 u. G3) Institute for System Software

Mehr

monika.heiner@informatik.tu-cottbus.de SS 2013 1.4-1 / 16 schrittweise Verfeinerung -> Wirth, 1971, Programm Development by Stepwise Refinement

monika.heiner@informatik.tu-cottbus.de SS 2013 1.4-1 / 16 schrittweise Verfeinerung -> Wirth, 1971, Programm Development by Stepwise Refinement IMPLEMENTIERUNGSSTRATEGIE bis jetzt: Programmstruktur für Programmieren im Kleinen jetzt: Programmstruktur für Programmieren im Großen zunächst allgemein, d. h. sprachunabhängig monika.heiner@informatik.tu-cottbus.de

Mehr

Mixed Language Programming POLINA RAJKO - MIXED LANGUAGE PROGRAMMING 1/35

Mixed Language Programming POLINA RAJKO - MIXED LANGUAGE PROGRAMMING 1/35 Mixed Language Programming PROSEMINAR EFFIZIENTE PROGRAMMIERUNG SOSE 2018 POLINA RAJKO POLINA RAJKO - MIXED LANGUAGE PROGRAMMING 1/35 Einführung Java public class Main { public static int quadrat(int i)

Mehr

Programmieren für Fortgeschrittene

Programmieren für Fortgeschrittene Programmieren für Fortgeschrittene 1. Einführung Werner Struckmann Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme Wintersemester 2016/2017 1. Einführung 1.1 Sprachen

Mehr