Basisinformationstechnologie HK-Medien

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

ALP II: Objektorientierte Programmierung Sommersemester 2006
Asymptotische Notation
ALGOL ALGOrithmic Language.
Frame-Logik Eine Einführung Andreas Glausch.
10. Grundlagen imperativer Programmiersprachen
Seminar Internetdienste Web 2.0 und Rich Internet Applications (RIA) JavaFX Rainer Scholz.
Puck eine visuelle Programmiersprache für die Schule
Lösung 7.1 Syntax und Semantik
Kapitel 4 Datenstrukturen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Entwicklung der Programmiersprachen
DOM (Document Object Model)
Philosophie der Logik nach Frege I
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Sommersemester 2003 Lars Bernard
Fakten, Regeln und Anfragen
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Beispiele für Ausdrucksalgebren
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zhaohan Chen SS061 SIMULA-an Algol Based Simulation Language geschrieben von: Zhaohan Chen Betreuer: Prof. Dr. Rainer Manthey.
RDF-Schema Seminar: „Semantic Web“ André Rosin,
Konzepte von Programmiersprachen
Michelle Sommer, Jessica Czesky, Luisa Hohensee und Lisa Buchweitz
FH-Hof Algorithmen und Datenstrukturen - Einführung Richard Göbel.
Die einzelnen Datenbank-Modelle unterscheiden sich in ihrer theoretischen Basis und in der Art der physikalischen Speicherung. Das Konzept für eine relationale.
Plattformunabhängige Programmiersprache
? Was ist Informatik? Was ist Informatik? Alexander Lange
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Entwicklung der Programmiersprachen
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Proseminar Programmiersprachen Python
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Software-Entwicklung & Programmiersprachen
CGI (Common Gateway Interface)
Historische Entwicklung und ihre Einteilung
2.4 Rekursion Klassifikation und Beispiele
Programmieren in C Einführung
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
MODULA-2.
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Objektorientierung.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
7. Formale Sprachen und Grammatiken
(Syntax, Strings/Zahlen, Variablen, Arrays)
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Geschichte der Informatik
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Programmiersprache PASCAL
Objektorientierte (OO) Programmierung
Seminar Internettechnologie Prof. Dr. Lutz Wegner Julia Mikov WS 06/07
Datentypen: integer, char, string, boolean
 Präsentation transkript:

Basisinformationstechnologie HK-Medien Teil 1, 9.Sitzung WS 02/03 BIT – Schaßan – WS 02/03

Geschichte der Programmiersprachen Seit der Entwicklung des ersten Computers wurden ca. Eintausend Programmiersprachen (PSS) entwickelt Turm von Babylon der Programmiersprachen  Sammet, J.: Programming Languages: History and Fundamentals. Prentice Hall, 1969. BIT – Schaßan – WS 02/03

PSS Wie natürliche Sprachen haben PSS eine Grammatik mit Syntax Semantik PSS verlangen allerdings genaueres Einhalten der Regeln, da sonst ein Ausdruck (und damit evtl. das ganze Programm) nicht verstanden wird. BIT – Schaßan – WS 02/03

Höhere PSS Höhere PSS bieten abstraktere Sicht auf Daten und Operationen Daten nicht mehr als Register- oder Speicherzelleninhalte, sondern als mathematische Objekte statt Speicherzelle  Variable Operationen werden durch Befehle ausgeführt, die das (abstrakte) Ergebnis durch gezielte Verknüpfungen und Speicherveränderungen erzielt  befehlsorientierte, imperative PSS BIT – Schaßan – WS 02/03

Typen von PSS imperative (befehls-, problemorientierte, prozedurale) objektorientierte vs. deklarative (logische)  meist keine strenge Trennung der Konzepte funktionale (applikative) operationale Semantik BIT – Schaßan – WS 02/03

Imperative PSS Zur Lösung eines Problems müssen die verfügbaren Operationen des Rechners durch geschickte Kombinationen verbunden werden In höheren PSS abstraktere Formulierungen und Loslösung von Eigenarten der Hardware z.B. BASIC, Pascal, C, C++, Java BIT – Schaßan – WS 02/03

Deklarative PSS Aus einer nach bestimmten Regeln gebilde-ten mathematischen Formulierung des Problems wird automatisch ein Programm erzeugt. Funktionsdefinition, -anwendung, -komposition auf mathematischen Kalkülen basierend Prädikatenlogik (logische Sprachen)  PROLOG Lambda-Kalkül (funktionale Sprachen)  LISP BIT – Schaßan – WS 02/03

Prädikatenlogik Aussagenlogik: Prädikatenlogik: Darstellung von Aussagen (Theoremen) Vollständigkeit, Widerspruchsfreiheit, Ableitbarkeit Prädikatenlogik: zweiwertige Logik (t/f) Prädikat stellt Eigenschaften der Argumente oder deren Beziehungen untereinander dar BIT – Schaßan – WS 02/03

Prädikat Ein Prädikat im logischen Sinn ist eine Aneinanderreihung von Wörtern einer natürlichen Sprache, die mindestens null Leerstellen enthält und die zu einem Aussagesatz der natürlichen Sprache wird, wenn in jede Leerstelle ein Eigenname eingesetzt wird. Die Zahl der Leerstellen, die ein Prädikat enthält, ist die Stelligkeit des Prädikats. Sokrates ist ein Mensch  keine Leerstelle, nullstellig BIT – Schaßan – WS 02/03

Lambda-Kalkül Besteht aus Kalkülsprache (Alphabet, wohlge-formten Ausdrücken) und Deduktionsgerüst (Axiome, Ableitungsregeln) Funktionsabstraktion λ x . A Funktion x mit Funktionskörper A Funktionsapplikation F A Funktion F auf Ausdruck A angewandt keine Zahlen, Funktionsnamen, Wahrheitswerte, etc. BIT – Schaßan – WS 02/03

Lambda-Kalkül (2) abstrakte Syntax: <λ-Ausdruck> = <Variable> Variablenname | <λ-Ausdruck> <λ-Ausdruck> Applikation | <λ-Ausdruck> . <λ-Asudruck> Abstraktion BIT – Schaßan – WS 02/03

Lambda-Kalkül (3) Beispiele: Identität: λ x . x Zweimalige Anwendung einer Funktion auf ein Argument: (λ f . (λ x . f (f x))) u v  (λ x . u (u x)) v  u (u v) BIT – Schaßan – WS 02/03

Konzepte deklarativer PSS ein der Mathematik entlehntes Variablen-konzept  Variable als Name für einen Wert  keine Speicherveränderung  keine Zuweisungen, keine Kontrollstrukturen (while, repeat etc.) Rekursion u.a. BIT – Schaßan – WS 02/03

imperativ vs. deklarativ deklarative meist interpretiert, imperative kompiliert  imperative effizienter Umstieg auf deklarativ schwierig KI vorwiegend mit Hilfe deklarativer BIT – Schaßan – WS 02/03

Charles Babbage (1792-1871) Charles Babbage (1792-1871) entwarf zwei Rechenmaschinen, die Difference Machine (1823) und die Analytical Engine (1834). Die Maschinen wurden niemals fertig gestellt. Die einzige arithmetische Operation, die ausgeführt werden sollte, war die Addition mit 27-stelligen Dezimalzahlen. Bedeutung der Addition BIT – Schaßan – WS 02/03

Konrad Zuse (1910-1995) Konrad Zuse baute mit dem Rechner Z3 (1941) eine Programmgesteuerte Rechenmaschine, basierend auf dem binären Zahlensystem (Gleitkomma-Arithmetik), die wirklich funktionierte. Die erste Programmiersprache der Welt für Rechner (Computer) wurde von 1942-1945 von Konrad Zuse /ZUSE45/ entwickelt. Er nannte sie den Plankalkül. BIT – Schaßan – WS 02/03

Plankalkül basiert auf dem Aussagen- und Prädikatenkalkül Rechner, wie die Z3 und Z4, bezeichnete er als algebraische Rechenmaschinen Mit Hilfe des Plankalkül sollten kombinatorische Aufgaben beschrieben werden und dann in Programme für algebraische Rechengeräte umgesetzt werden Der Plankalkül wurde nie implementiert, er diente aber als Diskussionsgrundlage für Programmier-sprachen, wie z.B. ALGOL58 / 60, EIFFEL. Ein Kalkül ist ein System, das die Syntax einer logischen Sprache festlegt BIT – Schaßan – WS 02/03

Plankalkül (2) Oberflächlich gesehen nahm der PK wesentliche Züge der späteren algorithmischen Sprachen, wie ALGOL vorweg. Entsprechungen für die gängigen Kontrollkon-strukte wie IF und REPEAT-UNTIL-Anweisungen. alle in höheren Programmiersprachen übliche skalare Datentypen wie boolean, integer, real , complex Allerdings z.B. kein "Verstecken" der Datentypen BIT – Schaßan – WS 02/03

Datentypen Datentypen = Objektarten, mit denen in den Anwendungen gerechnet wird (z.B. logische Größen, Zahlen der verschiedensten Art, abstrakte Bezeichner, usw.), einschließlich der Operationen, die auf die einzelnen Objektarten angewandt werden können auf der Hardwareebene durch Bitketten repräsentiert BIT – Schaßan – WS 02/03

Datentypen (2) Prinzip, dass der Programmierer nach Möglichkeit nur die Typen der Sprache sieht, nicht jedoch die sie repräsentierenden Bitketten (die nur der Maschine bekannt sein müssen) Das Verbergen der Datenrepräsentation gibt dem Programmierer eine abstrakte, anwendungsbezogene Sicht der Datentypen und macht so die Programmierung einfacher und fehlerfreier andererseits wird dem Programmierer die Möglichkeit genommen, eigene Typen definieren zu können BIT – Schaßan – WS 02/03

Datentypen (3) Jeder Datentyp ist definiert durch die Menge der zulässigen Werte (Wertebereich) und die Menge der zulässigen Operationen. Zwei Datentypen heißen strukturgleich, wenn sie denselben Wertebereich besitzen. BIT – Schaßan – WS 02/03

Datentypen (4) Unterscheidung zwischen Typdefinition Beschreibung eines Datentyps durch Angabe des Wertebereichs (und impliziter Festlegung der Operationen) Typdeklaration Bekanntgabe eines neuen Datentyps durch Angabe des neuen Typnamens und der zugehörigen Typdefinition. Diskrete, reelle, Zeiger, Arrays BIT – Schaßan – WS 02/03

Polymorphes Typsystem Polymorph heißt ein Typsystem, wenn die Definitions- und Wertebereiche nicht starr durch atomare Typen oder Kombinationen aus atomaren Typen festgelegt sind, sondern durch die Verwendung von Typvariablen flexibel gehalten werden. Eine Funktion kann dann mit verschiedenen konkreten Typen arbeiten. BIT – Schaßan – WS 02/03

Datentypen: Beispiel Java In Java gibt es folgende grundlegende Basis-Datentypen: byte 8 Bit Zahlenwert (-128..127) short 16 Bit, int 32 Bit, long 64 Bit Zahlenwert float 32 Bit IEEE 754 Fließkommazahl, double 64 Bit char 16 Bit Unicode Zeichen boolean echter 1 Bit Wert Arrays String Unicode String StringBuffer BIT – Schaßan – WS 02/03

FORTRAN Formula Translator John Backus 1954-1962 Zur Durchführung numerischer Berechnungen BIT – Schaßan – WS 02/03

COBOL Common Business Oriented Language ab 1959 auf Anregung des US Department of Defense entwickelt Eine der englischen Sprache angenäherte PS für kaufmännische Aufgaben BIT – Schaßan – WS 02/03

ALGOL 58/60 Algorithmic Language Naur, Bauer, Perlis, Hoare, Samuelsen Entwicklung in Wechselbeziehung mit der Fortentwicklung der funktionellen Fähigkeiten der Rechenanlagen symbolische Adresse (Wilkes 1953) indirekte Adressierung (Schecher 1955) unter dem Eindruck der Probleme der maschinellen Übersetzung von algorithmischen Sprachen in Maschinensprachen Peter Naur, Friedrich Bauer, Alan Perlis, Charles Hoare und Klaus Samuelsen wesentlicher Beitrag zu der Entwicklung und Struktur von PSS BIT – Schaßan – WS 02/03

ALGOL-Nachfolger Aus der Sprache ALGOL entstanden viele andere imperative Sprachen, wie PASCAL SIMULA ALGOLW, ALGOL68 PL/1 C und besonders ADA BIT – Schaßan – WS 02/03

BASIC Beginners All Purpose Symbolic Instruction Code 1963/4 Kemeny, Kurtz vereinfachte Fassung von Fortran verfügt allerdings über kein adäquates Prozedurkonzept für mittlere bis große Aufgaben und keine problemorientierten Datenstrukturen Anders: VisualBASIC, besonders zur Programm-ierung graphischer Benutzerschnittstellen Qualität eines Programms umgekehrt proportional ist zur Dichte der GOTO-Anweisungen in diesem Programm BIT – Schaßan – WS 02/03

PL/1 Programming Language 1 Mitte 60er Jahre Versuch, universelle PS zu entwickeln unübersichtlich, schwer zu implementieren, aber maßgeschneidert für Anforderungen vieler Programmierer BIT – Schaßan – WS 02/03

Pascal nach Blaise Pascal (1623-1662) benannt N. Wirth 1968-73 als einfachere, systematische Alternative zu ALGOL68 und PL/1 zum Einsatz im Informatikunterricht erstmals systematisches Typkonzept strukturierte PS (if-, while-Anweisungen) Anwenderdefinierte Datentypen (zusammengesetzte, Teilbereiche –Buchstaben von A-Z-, Mengen) Stapelmaschine  Rekursion Virtuelle Maschine als schrittweise Verbesserung[1] (stepwise refinement) [1] Schon Descartes hat beschrieben, wie man ein komplexes Problem lösen könne; man zerlege es in Teile, und zerlege diese weiter, bis die Teile klein genung sind, um einfacher lösbar zu sein. Dieses rekursive Prinzip hat Wirth auf die Programmierung übertragen. BIT – Schaßan – WS 02/03

Pascal-Nachfolger darauf aufbauend: Modula-2  modulorientiert Mesa OBERON(-2)  objektorientiert Mesa Euklid ELAN  für dt. Schulunterricht Delphi BIT – Schaßan – WS 02/03

Ada Ada Augusta, der Gräfin von Lovelace von US- DoD in Auftrag gegeben, 1979 ein europäischer Entwurf als Basis akzeptiert enthält Konzepte wie Modularisierung, separate Compilierung Parallelverarbeitung Ausnahmebehandlung polymorphes Typsystem BIT – Schaßan – WS 02/03

C / C++ Dennis Ritchie 1972 (Bell Laboratories) immer noch eine Reihe maschinennaher Sprachkonstrukte  "höhere Maschinensprache" UNIX ist in C geschrieben (C ist durch UNIX entstanden) C++ ursprünglich als objektorientierter Zusatz implementiert  Präprozessor übersetzte C++ nach C, dann nach Maschinensprache Krebsgeschwür in der Informatik (Mangelnde Syntax und Typprüfungen, kein modulares Design) ++ = Inkrement, Nachfolger  vgl. Programmierung BIT – Schaßan – WS 02/03

(DEF FAK (N) (COND ((ZeroP N) 1) (T (Times N (FAK (SUB 1 N)))))) LISP List Processor McCarthy (1959) Funktionale Sprache (Lambda-Kalkül) als PS zur nichtnumerischen (symbolischen) DV konzipiert  KI Listen als Möglichkeit, verschiedenartige Objekte aufzubauen, zu zerlegen und zu bearbeiten (DEF FAK (N) (COND ((ZeroP N) 1) (T (Times N (FAK (SUB 1 N)))))) Detlev Zaun BIT – Schaßan – WS 02/03

ML Meta Language keine rein funktionale Sprache, einige imperative Elemente Wegweisendes polymorphes Typsystem BIT – Schaßan – WS 02/03

PROLOG PROgrammation en LOGique Kowalski, 1971-74 Logische Sprache (Prädikantenlogik) interaktive Verständigung zwischen dem Anwender und dem PROLOG-System, in dem der Anwender z.B. folgendes vornehmen kann: Fakten für Objekte und Beziehungen deklarieren Regeln für Objekte und Beziehungen definieren sowie über Objekte und Beziehungen Anfragen stellen. Aufbau eines Expertensystems BIT – Schaßan – WS 02/03

PROLOG-Beispiele Valuable (Gold). /* Gold ist wertvoll.*/ Valuable (Money). /* Geld ist wertvoll.*/ Father (John, Mary). /* John ist der Vater von Mary.*/ Gives (John, Book, Mark). /* John gibt Mark das Buch.*/ King (John, France). /* John ist König von Frankreich.*/ I am. /* Ich bin.*/ BIT – Schaßan – WS 02/03

PROLOG-Beispiele (2) Valuable (Gold)? /* Ist Gold wertvoll*/ Yes Father (x,Mary)? x=John Valuable (x)? x=Gold x=Money BIT – Schaßan – WS 02/03

Smalltalk Alan Kay, Anfang 70er Jahre entwickelt, Anfang 80er publiziert erste konsequent objektorientierte PS mit graphischer Benutzeroberfläche (für Kinder geplant)  aber: Glaube an Effizienzverlust durch virtuelle Maschine zur Ausführung verhindert großen Erfolg Alles ist ein Objekt. Es gibt keine einfachen Datentypen, ja der Typ einer Variable kann geändert werden, Kontrollstrukturen sind Objekte, alles agiert mit Hilfe von Botschaften. Der Name entstand dadurch, dass Programme in Smalltalk sehr wenig Code benötigen, man also "nicht viel reden" muss. BIT – Schaßan – WS 02/03

Java 1991, Sun grundsätzlich auf C aufbauend, jedoch rein objektorientiert, keine Prozedurenelemente Vorteile: Plattformunabhängigkeit aufgrund VM Programme laufen "sicher" in einer Umgebung, ohne auf die Ressourcen des Computers zugreifen zu können Routinen für graphische Oberflächen Zusammenhang Internet BIT – Schaßan – WS 02/03

Übersicht PSS BIT – Schaßan – WS 02/03

Sonstige Sprachen Scriptsprachen Datenbanksprachen Makrosprachen Perl (Practical Extraction and Report Language ) PHP Javascript Datenbanksprachen SQL (Standard Query Language) Makrosprachen VBA (Visual Basic for Applications) Sprachen für bestimmte Anwendungsfelder Publizieren (TeX, PostScript) Perl: system administration and data reduction BIT – Schaßan – WS 02/03

Weitere Konzepte wesentliche Beiträge zu einem einheitlichen und vollständigen begrifflichen System der Program-mierung (zur Schaffung einer semantischen Basis) J.Green 1959 (Namenserzeugung) K.Samuelson 1959 (Blockstruktur) N.Wirth 1965 (Referenzkonzept und die Sprachen ALGOLW, PASCAL, usw.) C.Hoare 1966 (Verbund) BIT – Schaßan – WS 02/03

Software Engeneering Softwarekrise Mitte der 60er  durch neue Rechnergenerationen geschaffenen Möglichkeiten übertrafen bei weitem die bis dahin entwickelten Programmiertechniken Abkehr von der Kunst des Programmierens und Hinwendung zu einer ingenieurmäßigen Software-Entwicklung Softwareherstellung als zusammenhängen-der Prozess BIT – Schaßan – WS 02/03

Modularisierung Grundlegende Ziele: Kriterien: modulare… Korrektheit, Robustheit, Erweiterbarkeit, Widerverwendbarkeit, Kompatibilität Kriterien: modulare… Zerlegung (Reduktion der Komplexität) Zusammensetzung (Erstellung von Softwareelementen aus anderen, bestehenden Softwareelementen) Verstehbarkeit Kontinuität (kleine Änderungen der Spezifikation sollte nur kleine Änderungen am Gesamtsystem nach sich ziehen) Schutz (Ausnahmefehler sind in Modulen zu behandeln) BIT – Schaßan – WS 02/03

Literatur Geschichte der PSS: Kurzerläuterungen zu PSS und Links: http://tunes.org/Review/Languages.html http://www.cs.iastate.edu/~leavens/teaching-prog-lang/home.html http://ivs.cs.uni-magdeburg.de/~dumke/PSK/ Kurzerläuterungen zu PSS und Links: http://users.erols.com/ziring/dopl.html BIT – Schaßan – WS 02/03

Für den Weihnachtsbaum Rolf Hochhuth: Alan Turing. Erzählung. Rowohlt 1987. A.K. Dewdney: Eine Reise ins Innere der Mathematik. Birkhäuser 2000. BIT – Schaßan – WS 02/03