n 1. Der Begriff „Informatik“ n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen Grundlagen von von Programmiersprachen. Programmiersprachen - 1 - 1. Der Begriff „Informatik“ n "Informatik" = Kunstwort aus Information und Mathematik l Wissenschaft der Informationsverarbeitung mit großer Nähe zur Mathematik n Hauptaufgabe der Informatik l Entwicklung formaler, maschinell ausführbarer Verfahren zur Lösung von Problemen der Informationsverarbeitung n Forderung der Durchführbarkeit mittels einer Maschine: l Informationen müssen als maschinell verarbeitbare Daten dargestellt werden l Lösungsverfahren müssen bis ins Detail formal beschrieben werden. I.2. Grundlagen von Programmiersprachen - 2 - Algorithmus n Ein Algorithmus ist ein Verfahren, welches l in einem endlichen Text niedergelegt werden muss l effektiv (durch eine Maschine ) ausgeführt werden kann l aus (direkt maschinell ausführbaren) Elementaroperationen besteht und eindeutig festlegt, welche Elementaroperation als nächstes auszuführen ist (Determinismus) l Ein- und Ausgabe ermöglicht, wobei jeder Eingabe genau eine Ausgabe zugeordnet wird (Determiniertheit) n Anzahl und Ausführungszeit der Elementaroperationen sind beschränkt. n Ein Algorithmus (Programm) wird durch eine Maschine schrittweise ausgeführt l Die ausführende Instanz muss die Vorschrift interpretieren und korrekt ausführen. l Ein Algorithmus terminiert, wenn er nach endlich vielen Schritten abbricht. I.2. Grundlagen von Programmiersprachen - 4 - Deterministischer Algorithmus Berechnung von |x-y| 1. Lies Eingaben x und y. 2. Falls x ≤ y: Weiter mit Schritt 3. Falls x > y: Weiter mit Schritt 4. 3. Berechne a = y - x. Weiter mit Schritt 5. 4. Berechne a = x - y. 5. Gib a aus. I.2. Grundlagen von Programmiersprachen - 5 - Indeterministischer Algorithmus Berechnung von |x-y| 1. Lies Eingaben x und y. Weiter mit Schritt 2 oder Schritt 3. 2. Berechne a = x - y. Weiter mit Schritt 4. 3. Berechne a = y - x. 4. Falls a ≥ 0: Gib a aus. Falls a < 0: Gib -a aus. I.2. Grundlagen von Programmiersprachen - 6 - Fragen n Wie kann man aus einer Lösungsidee einen Algorithmus konstruieren? l "schrittweise Programmentwicklung" n Wie zeigt man, dass ein Algorithmus tatsächlich das tut, was er tun soll? l Verifikation: partielle Korrektheit l Terminierung n Wie "gut" ist ein Algorithmus? l Speicherverbrauch, benötigte Zeit (Effizienz) l Aufwandsabschätzungen I.2. Grundlagen von Programmiersprachen - 7 - n 1. Der Begriff „Informatik“ n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen Grundlagen von von Programmiersprachen. Programmiersprachen - 8 - 2. Syntax & Semantik von Programmiersprachen Ein erstes Java-Programm: public class Rechnung { public static void main (String [] arguments) { int x, y; x = 10; y = 23 * 33 + 3 * 7 * (5 + 6); System.out.print ("Das Resultat ist "); System.out.println (x + y); } } I.2. Grundlagen von Programmiersprachen - 9 - Programmiersprachen n Die Programmiersprache bildet die Schnittstelle zwischen Mensch und Rechner Programmiersprache Rechner Beide haben unterschiedliche Anforderungen l Mensch w Erlernbarkeit Höhere Programmiersprachen w Lesbarkeit w Ausdrucksstärke l Rechner w einfaches Übersetzen in Maschinensprache w Generierung von effizientem Code Maschinensprachen I.2. Grundlagen von Programmiersprachen - 10 - Kenntnis verschiedener Sprachen n Eigene Ideen bei der Software-Entwicklung können besser ausgedrückt werden n Nötig, um in konkreten Projekten geeignete Sprache auszuwählen n Erleichtert das Erlernen weiterer Programmiersprachen n Nötig für den Entwurf neuer Programmiersprachen I.2. Grundlagen von Programmiersprachen - 11 - Übersicht Imperative Sprachen l Folge von nacheinander ausgeführten Anweisungen n Prozedurale Sprachen l Variablen, Zuweisungen, Kontrollstrukturen n Objektorientierte Sprachen l Objekte und Klassen l ADT und Vererbung Deklarative Sprachen l Spezifikation dessen, was berechnet werden soll l Festlegung, wie Berechnung verläuft durch Compiler n Funktionale Sprachen l keine Seiteneffekte l Rekursion n Logische Sprachen l Regeln zur Definition von Relationen I.2. Grundlagen von Programmiersprachen - 13 - Wichtige Programmiersprachen 1950 Fortran 1960 Cobol Algol 60 PL/1 1970 Lisp Simula Algol 68 Pascal Smalltalk C 1980 Scheme Prolog ML Ada C++ Eiffel Modula-3 1990 Ada-95 Miranda Java 2000 Python Haskell Scala prozedural objektorientiert funktional logisch I.2. Grundlagen von Programmiersprachen - 14 - Populäre Programmiersprachen Quelle: www.tiobe.com, Oct. 2015 I.2. Grundlagen von Programmiersprachen - 15 - Programmiersprachen - Definition n Programmiersprachen sind Sprachen, deren Syntax und Semantik genau festgelegt ist. n Syntax: l Definition aller zulässigen Wörter / Programme, die in einer Sprache formuliert werden können n Semantik: l Bedeutung der zulässigen Wörter / Programme l Syntaktisch falsche Wörter / Programme haben keine Semantik I.2. Grundlagen von Programmiersprachen - 16 -