Sie sind auf Seite 1von 9

Was ist das:

eine Programmiersprache?

ł Formale Sprache*), die zur Beschreibung von


Berechnungen in Computern verwendet wird:
6. Programmiersprachen
Programme = Daten + Algorithmen
im Überblick
*) Mengen von Wörtern über einem Alphabet: L Ž A*
(Folge von Symbolen)

ł Wichtig:
- Sprache für menschlichen Leser verständlich;
- effizient implementierbar

ł Sprache hat Syntax (vgl. Grammatiken, EBNF)


und Semantik (Bedeutung, Wirkung).
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 21. Okt. 2015 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 2

Probleme und Fragen Programmiersprachen: eine Auswahl


Forth
Mehr als 1000 unterschiedliche Programmiersprachen in Algol 60 Fortran
Smalltalk YACC
Forschungsgruppen, internationalen Komitees sowie in Algol 68 PL/1
Computerfirmen entwickelt [Wilson 93] IBM: Fortran, PL1 SETL CLU LEX
Simula 67 SPSS
Sun: Java awk
IFIP: Algol 60, Algol 68 Snobol Pascal Concurrent Pascal
Universitäten: Pascal, Modula-2, CLU Cobol SQL
Turbo-Pascal Alphard SDL
DoD: Cobol, Ada DELPHI
Oberon OPS-5 Latex
• Sprachen, Dialekte, Versionen Object Cobol Eiffel Hope
Postscript
... und das Hauptproblem der Vielfalt: Portabilität Modula-2 Prolog
APL Miranda
Ada Chill HTML
• Klassifikation: CDL 2 Beta Lisp
Scheme
Wie kann eine Ordnung in die Vielfalt gebracht werden? Ada 95 Modula-3 Opal UML

Prolog II Common Lisp


• Klassifikation … Mesa BCPL Z
Oberon-2
... nach Anwendungsgebieten C C++ C# Act-One
... nach der Historie Assemblersprachen CSP Haskell Basic
... nach Programmiersprachengenerationen
Objective-C Standard-ML VDM
... nach Programmierparadigmen Clipper Java
... nach Verbreitungsgrad Maschinensprachen
RPG
Occam T Linda PHP
Lotus

K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 3 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 4
Programmiersprachen und Varianten Welche Programmiersprache ...
Pascal
Sprachdialekt • ... sollte man beherrschen?
• Pascal-P Fortran
• Standard-Pascal
• ... ist weit verbreitet?
• Concurrent Pascal • Fortran 77
• VAX-Pascal • Fortran IV
• DEC-Pascal • Fortran 90, 95
• ... ist die beste?
• Turbo-Pascal Version • HP-Fortran
- Version 2 ... • ... • ... ist modern?
- Version 3 ...
- Version 4...
- Version 5 ... Compiler
Æ Portabilitätsprobleme
- Version 6 ... Sollte man möglichst viele
• Object Pascal C Programmiersprachen beherrschen?
• DELPHI Pascal
• Kernighan-Ritchie-C
Java • ANSI C (Standard)
- Version 1.3 (Mai 2000)
- Version 1.4.0
• Visual C Wie kann eine Ordnung in die Vielfalt
Hauptziel: Portabilität
Ækeine Dialekte - Version 1.4.2 • Borland C von Programmiersprachen gebracht
- Version 1.5.0 • ... werden?

- Version 8 (März 2014)
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 5 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 6

Klassifikationen Klassifikationen

... nach Anwendungsgebieten ... nach Anwendungsgebieten


... nach der Historie
... nach Programmiersprachengenerationen
... nach Programmierparadigmen
... nach Verbreitungsgrad

K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 7 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 8
Programmiersprachen und Programmiersprachen und
Anwendungen (1) Anwendungen (2)
• Wissenschaftlich-technischer Bereich (Physik):
Fortran • Statistik:
• Kommerzieller Bereich (Banken, Verwaltung): SPSS
Cobol R (statistische Auswertung von „big data“, 1990,
• Künstliche Intelligenz (Expertensysteme ...): pupulär ab 2010)
Prolog, Lisp, Haskell ...
• Systemsoftware (Compiler, Betriebssysteme):
• Schriften / Texte: Nicht mehr
C, C++, Ada, Java, CDL 2 Latex, Postscript Programmiersprachen
• Echtzeit: • Compiler-Generatoren: im engeren Sinne
Ada95, Pearl
Lex, Yacc
• Datenbanken:
SQL
• formale Spezifikationen:
• Telekommunikation:
Chill Z
• SW-Architekturen:
Achtung: Viele Sprachen sind universell anwendbar
UML
(C, C++, Ada, Java, Pascal, Python ...)

K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 9 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 10

Entwicklung von Programmiersprachen


(Quelle: nach Appelrath, Ludewig 'Scriptum Informatik‘‚ 1995)
1950 Assemblersprachen
alte Sprachen Algol-Familie
1957 Fortran Algol58 Außenseiter
1960 OO Sprachen Algol60

Klassifikationen 1962
1966
APL
Basic
Cobol
Lisp

Simula 67 Algol-W
PL/1
1968 Algol68
BCPL
1970 Fortran IV Pascal
... nach der Historie FORTH Concurrent
1074 C
Pascal
PROLOG

1976 Modula Mesa


Fortran 77 OPS5
1980 Smalltalk-80 Modula-2 Ada

1984
C++
1988 Eiffel
1995 HP-Fortran Delphi Java Ada95
Ruby (1995), Python (1995), PHP (1997), C# (2000), Swift (Apple, 2014), Cuda (2015)
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 11 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 12
Internet: Informationen zu
Programmiersprachen

 Liste (aller) Programmiersprachen (Stand 6. 10. 2015):


http://de.wikipedia.org/wiki/Liste_von_Programmiersprachen
Klassifikationen
 Liste objektorientierter Programmiersprachen
(Stand 30. Mai 2015):
http://de.wikipedia.org/wiki/Liste_objektorientierter_Programmiersprachen
... nach Programmiersprachengenerationen
 Zeittafel:
http://de.wikipedia.org/wiki/Zeittafel_der_Programmiersprachen

K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 13 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 14

Programmiersprachgenerationen

• Programmiersprachen der 1. Generation:


Maschinensprachen Klassifikationen
• Programmiersprachen der 2. Generation:
Assemblersprachen
• Programmiersprachen der 3. Generation: ... nach Programmierparadigmen
höhere algorithmische u. objektorientierte Sprachen
Æ Pascal, Ada, C, Basic, Java ...
• Programmiersprachen der 4. Generation:
Tabellenkalkulation, Datenbanksprachen
Æ Lotus, SuperCalc, dBase ... Ganz wichtig!
• Programmiersprachen der 5. Generation:
Sprachen der künstlichen Intelligenz
ÆProlog, Lisp, OPS-5 ...
deskriptive Sprachen Æ Abstraktionsniveau
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 15 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 16
Programmiermodell (Paradigma) Programmiermodell (Paradigma)
Programmiersprachen Programmiersprachen

imperative deskriptive imperative Klassifikation deskriptive


krrip
(algorithmische) (algorithmische) wird später
noch einmal
maschinennah höhere objektorientierte funktionale logische maschinennah höhere kttorie diskutiert
objektorientierte ffunktionale
unk nalle logische

Assembler- Pascal, Oberon-2, Haskell, Prolog, Assembler-


Assembler- Pascal, Oberon-2, Haskell,
H as Prolog,
sprachen Ada, Eiffel, Lisp, Prolog II, sprachen
sprrachen Ada,
Ada, Eiffel, Lisp,
L isp Prolog II,
C, Simula 67, Scheme, OPS-2 C
C,, S imula
Simula a 67,
6 7, Sch
Scheme, OPS-2
Fortran, C++, Hope, Fortr
ran,
Fortran, C ++,
C++, Ho
Hope,
Cobol, Object Cobol, Miranda, Cobol, Object Cobol, Mi
Miranda,
Chill, Beta, Standard ML Chill, Beta, St
Standard ML
PL/1 Java, Programmentwicklung folgt PL/1 Java,
Forth, Delphi einem Modell – konzentriert sich Forth, Delphi
Basic C# auf Beschreibung von … Basic C#
Achtung: Mischformen - Algorithmen Achtung: Mischformen
- Java: objektorientiert, imperativ - Objekten - Java: objektorientiert, imperativ
- Common Lisp: objektorientiert, - Funktionalen Zusammenhängen - Common Lisp: objektorientiert,
funktional, imperativ - Logik des Problems funktional, imperativ
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 17 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 18

Programmiermodell: imperativ Programmiermodell: objektorientiert

• Orientiert am Algorithmusbegriff: • Orientiert auf Beschreibung von kooperierenden Objekten:


- Programme als Folgen sequentiell auszuführender
Anweisungen Objekt =
• Auf von-Neumann-Rechner ausgerichtet:
Semantische Einheit aus
- Anweisungen verändern Daten im Speicher
- Daten (Variablen)
• Basiskonzepte:
- Operationen / Algorithmen
- Variable: zur Datenspeicherung zur Bearbeitung der Daten
- Anweisung: zur Bearbeitung von Variablen-Werten
• Strukturierungsmethode:
- Teilalgorithmus, d. h.
Prozedur, Methode, Funktion Klasse = Beschreibungsform für ähnliche Objekte
Programm = Menge von Klassen

K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 19 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 20
Programmiermodell: logisch Programmiermodell: funktional
• Programm = Programm =
auf die logische Beschreibung eines Problems orientiert Ein funktionales Programm beschreibt eine Komposition
von (mathematischen) Funktionen.
Beschreibung von Relationen zwischen 'Daten' / d.h.
Mathematische Funktion
f: D Æ W (Definitionsbereich, Wertevorrat)
zwischen 'Objekten der Realität'

mittels der Prädikatenlogik - Keine Zuweisung von Werten an Variablen;


Beispiel: elternteil (lisa, maria). - Keine Beschreibung von Algorithmen; z.B. kein Zyklus
elternteil (hans, maria). - Kein Von-Neumann-Rechner als Hardware-Modell
Beispiel:
schwester (X, Y) :-
Programm map, das Funktion f auf alle Elemente einer Liste
elternteil (Z, X), anwendet, z.B
elternteil (Z, Y), map (add 1) [1,2,3] => [2,3,4]
weiblich (X). map (mult 2) [1,2,3] => [2,4,6]

weiblich (maria). Realisiert durch folgendes funktionales Programm map:


Problem beschrieben;
map f [] = [] (1. Fall: leere Liste [])
weiblich (lisa). nicht: Algorithmus map f (x:xs) = f x : map f xs (2. Fall: nicht-leere Liste)
(Funktion f auf nicht-leere Liste x:xs angewandt, wobei
maennlich (hans). x erstes Element, xs die Restliste ist; „:“ ist Verkettung))
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 21 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 22

Gegenstand der Vorlesung GdP Resümee


Es kommt nicht so sehr darauf an, möglichst viele
Programmiersprachen Programmiersprachen zu beherrschen, sondern vielmehr:

• Konzepte (Anweisungen, Typen ...)


imperative deskriptive
(algorithmische)
• Programmiertechniken (Sortieren, Suchen ...)
• Komponentenbildung (Modularisierung: Zerlegung von großen
Programmen)
maschinennah höhere objektorientierte funktionale logische • Paradigmen (objektorientiert, imperativ, logisch, funktional)
• Methoden zur Entwicklung komplexer Software
Assembler- Pascal, Oberon-2, Haskell, Prolog, (Software Engineering)
sprachen Ada, Eiffel, Lisp, Prolog II, • theoretische Grundlagen der Programmierung
C, Simula 67, Scheme, OPS-2 • Teamarbeit
Fortran, C++, Hope, • Kenntnisse der Fachdisziplin
Î Man muss in der Lage sein, sich zielgerichtet in eine neue Sprache
Cobol, Object Cobol, Miranda,
Chill, Beta, Standard ML
PL/1 Java, einzuarbeiten!
Forth, Delphi
Basic C#
Logik für Î Man sollte Vertreter wichtiger Sprachklassen aktiv beherrschen:
Informatiker Java (oder C++, Eiffel, Smalltalk, Delphi), C (oder Pascal), Prolog,
Lisp ...
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 23 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 24
Warum denn so viele und immer
wieder neue Programmiersprachen?
Forth
Algol 60 Fortran
Smalltalk Algol 68 PL/1 YACC

SETL CLU LEX


Simula 67 SPSS
awk
Snobol Pascal Concurrent Pascal

Programmiersprachen: Cobol Turbo-Pascal Alphard SQL SDL


DELPHI
OPS-5 Latex
Warum so viele und immer Object Cobol
Oberon

Modula-2
Eiffel Hope
Postscript
APL Prolog Miranda

wieder neue? Ada


CDL 2
Chill
Beta Lisp
Scheme
HTML

Ada 95 Modula-3 Opal UML

Mesa BCPL Prolog II Common Lisp Z


Oberon-2
C C++ C# Act-One
Assemblersprachen CSP Haskell Basic

Objective-C Standard-ML VDM


Clipper Java
Maschinensprachen
RPG Linda
Occam Lotus T PHP

PHP (1997), C# (2000)


K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 25 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 26

Warum denn so viele und immer wieder


Kooperationsprojekte der Gruppe neue Programmiersprachen?
Softwaretechnik (Bothe) Kandidaten für DIE endgültige Sprache – in der Vergangenheit
1950 Assemblersprachen

 Daimler (Stuttgart): Java (Diplomarbeit)


 Leipniz-Institut:
1957 Fortran Algol58
1960 Algol60
Lisp
1962 Cobol
Fortran 77, 90, 95 (zwei Diplomarbeiten) APL

 Institut für Physik der HU: C++


1966 Basic
Simula 67 Algol-W
PL/1

 Hahn-Meitner-Institut: Turbo-Pascal, LabVIEW


1968 Algol68
BCPL
1970 Fortran IV Pascal
(visuelle Programmierung)
 Siemens: C#
FORTH Concurrent
1074 C
Pascal
PROLOG

 Institut für Psychologie der HU: Smalltalk 1976


Fortran 77
Modula Mesa
OPS5
1980 Smalltalk-80 Modula-2 Ada

1984
C++
1988 Eiffel
1995 HP-Fortran Delphi Java Ada95
Ruby (1995), Python (1995), PHP (1997), C# (2000), Swift (Apple, 2014), Cuda (2015)
K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 27 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 28
Alte Sprachen und immer wieder neue Sprachen: Die Macht der alten Sprachen
neue Programmiertechnologien und -aufgaben
1950 Assemblersprachen
Neue Erkenntnisse Fakten zu Cobol
und Technologien • 1960 entwickelt
Fortran Algol58
1957
• Anwendung: kommerzieller Bereich (Banken, Verwaltung)
1960 Algol60
Die Macht der Lisp
• weltweit mehr als 200 Milliarden LOC Cobol-Code
1962 Strukturierte Cobol
im Einsatz
altenAPL
Sprachen
Basic
1966
Programmierung:
Simula 67 Algol-W • pro Jahr: 5 Milliarden LOC neu geschriebener
PL/1
1968 Anweisungen und DatenAlgol68 Andere Cobol-Code
Paradigmen
BCPL
• 86 % aller Geschäftsdaten durch Cobol-Systeme verarbeitet
1970 Fortran IV Pascal
Komplexität von SW:
1074
FORTH Modulare und
Concurrent
C Gründe:
Pascal
Objektorientierte PROLOG
- Reife von Cobol durch ihre Weiterentwicklung,
1976 Programmierung Modula Mesa Spezielle Ziele: - Spezialalgorithmen für kaufmännische Berechnungen,
Fortran 77
1980 Smalltalk-80 Modula-2 Ada
OPS5
- Portabilität - Routine
Spezialaufgaben: - Flexibilität (Quelle: Computer Zeitung, 3. März 2003)
1984 wiss. Rechnen, C++
- Sicherheit
kommerzieller Bereich - ……………..
1988 Eiffel
HP-Fortran Delphi Java Ada95
1995
Ruby (1995), Verändertes
K. Bothe, Institut für Informatik, HU
Python (1995), technologisches Umfeld:
PHP (1997), C# (2000),
Berlin, GdP, WS 2015/16 Internet,
Swift (Apple, 2014),Webseiten
Cuda (2015)
29 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 30

The 2015 Top Ten Programming


Languages *)

Klassifikationen

... nach Verbreitungsgrad

*) Quelle: IEEE Spectrum, Juli 2015


http://spectrum.ieee.org/computing/software/the-2015-top-ten-programming-languages/?utm_source=techalert&utm_medium=email&utm_campaign=072315

K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 31 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 32
The 2015 Top Ten Programming The 2015 Top Ten Programming
Languages Languages
(2015)
(2014)

“What are the most popular programming languages?


The only honest answer: It depends.
Are you trying to land a job at a hot mobile app startup,
model electricity flows across a continent,
or create an electronic art project?
Languages are tools, and what’s a “must have”
in one domain can be a “whatever” in another.”

• “Java and C are in first place,


• data-analysis language R is rising in popularity,
• newcomers like Apple's Swift and Nvidia's Cuda are making waves.”

Quelle: IEEE Spectrum, Juli 2015


K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 33 K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Quelle: IEEE Spectrum, Juli 2015
34