CARL HANSER VERLAG. Peter Henning, Holger Vogelsang. Taschenbuch Programmiersprachen
|
|
- Irma Kästner
- vor 5 Jahren
- Abrufe
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
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.
MehrGeschichte 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,
MehrInhalt. 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
MehrTaschenbuch 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
Mehrn 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
Mehr1. 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
Mehr10. 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
MehrIII.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
Mehr7. 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:
MehrHandbuch 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
Mehr1. 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
Mehr1. 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
Mehr6. 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
Mehr2. 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
Mehr1.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,
MehrEinfü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
MehrEinfü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
MehrDefinitionen/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
MehrKapitel 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
Mehr1. 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
MehrEinfü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
Mehrn 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
MehrSoftwaretechnik. 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
MehrProgrammieren 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
MehrProgrammiersprachen und Programmierkonzepte
Programmiersprachen und Programmierkonzepte Inhalt Programmiersprachen- Entwicklung Programmiersprachen und Programmierparadigmen Die Geschichte der Programmiersprachen Anfänge vor 200 Jahren Programmierbare
MehrKonzepte 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
Mehr1. 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
MehrGliederung. 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
MehrSemantik 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
MehrProgrammiersprachen. 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
MehrProf. 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
MehrProgrammiersprachen 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
MehrWie entsteht ein Computerprogramm?
Wie entsteht ein Computerprogramm Grundstrukturen von Programmen Programmiersprachen Entwicklungsschritte eines Programms Programmdokumentation Seite 1 Telefonanruf-Algorithmus Start Rufnummer bereitstellen
MehrEIDI 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?
MehrProgrammiersprache. 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
Mehr2. 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)
MehrHö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
MehrEin 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
Mehr2. 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
MehrSoftware 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
MehrSemantik 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
MehrEs 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
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
Mehr2. 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)
MehrEinleitung 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
MehrObjektorientiertes 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
MehrEinfü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
MehrVorlesung 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
MehrVorlesung 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
MehrWintersemester 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
MehrModellierung 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,
Mehr2. 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)
MehrSoftware- und Systementwicklung
Software- und Systementwicklung Seminar: Designing for Privacy 11.11.2009 Moritz Vossenberg Inhalt Vorgehensmodelle Wasserfallmodell V-Modell Phasen (Pflichtenheft) UML Klassendiagramm Sequenzdiagramm
MehrEinfü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)
MehrProgrammieren 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
MehrComputergrundlagen 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,
MehrStichworte 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
MehrInhalt. 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
MehrProgrammentwurf 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
MehrAllgemeines. 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 Gliederung Funktionale Programmierung Einführung Aspekte Vergleich: Funktional vs Imperativ Bending the language towards the problem
MehrALP 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
MehrEinfü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)
MehrAnalyse 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
MehrComputergrundlagen 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,
MehrInformatik 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
MehrSoftware-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
MehrProgrammiersprachen: 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 =
Mehr1 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
MehrFACHHOCHSCHULE 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
MehrWS 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
MehrGrundlagen 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
MehrComputergrundlagen 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
MehrGrundlagen 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
MehrTeil 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
MehrEinfü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
MehrALGOL 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
MehrGrundlagen 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
MehrInformatik 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:
MehrEIGENSCHAFTEN 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
Mehrwenige 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,
MehrClient/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
MehrIn 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!
Mehr5.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
Mehr6. 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
MehrALP 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
MehrObjektorientierte 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,
MehrGrundlagen 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
Mehrmonika.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
MehrMixed 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)
MehrProgrammieren 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