Vorlesung Programmieren Einführung 20.10.2014 Prof. Dr. Ralf H. Reussner Version 1.0 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), FAKULTÄT FÜR INFORMATIK sdq.ipd.kit.edu KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Was ist Programmieren? 2 20.10.2014 Vorlesung Programmieren: Einführung
Anfänge der Programmierung 1840er Jahre: Ada Lovelace (1815-1852) beschreibt Lösungsverfahren für ein mathematisches Problem auf einem mechanischen Rechenapparat Erstes Programm Ada Lovelace gilt als erste Programmiererin 1940er Jahre: Konrad Zuse (1910-1995) entwickelt den Plankalkül Erste höhere Programmiersprache Abstrahiert von Maschinensprache P1 max3 (V0[:8.0],V1[:8.0],V2[:8.0]) R0[:8.0] max(v0[:8.0],v1[:8.0]) Z1[:8.0] max(z1[:8.0],v2[:8.0]) R0[:8.0] END (...) Quelle: http://de.wikipedia.org/wiki/plankalkül 3 20.10.2014 Vorlesung Programmieren: Einführung
Rückblick: Ferranti Mark 1 (1951) Alan Turing (1912-1954) 4
Ferranti Mk. 1 Manual Elektronische Computer sind dazu gedacht, jeden präzise festgelegten Berechnungsprozess auszuführen, der auch durch einen menschlichen Operator in einer disziplinierten, aber stupiden Weise bewerkstelligt werden könnte. Alan Turing (1912-1954) 5
Programmierung Wie kann nun ein Computer dazu gebracht werden, jeden präzise festgelegten Berechnungsprozess auszuführen? Durch Programmierung! 6
Programmierung illustriert Aufgabe: Aufstellung der Personen der Größe nach Verfügbare Instruktionen: 1. nach links oder rechts weitergeben 2. nach links oder rechts weitergeben 3. Personen, die oder halten, wechseln den Platz Beispielablauf: 1. nach rechts 2. Platz wechseln 3. nach links 4. Platz wechseln 7
War das nun Programmieren? Zum Teil ja: Präzise festgelegter Prozess Eindeutige Instruktionen Aber nicht:... in stupider Weise bewerkstelligt... Es fehlt: Ein allgemeiner Plan, der angibt, welcher Schritt als nächstes zu tun ist Allgemein: für beliebige Anzahl von Personen Möglichst abstrakt, d.h. (z.b.) nicht nur auf Personen bezogen Dies wäre dann ein Programm! 8
Unsere Programmiersprache: Java Java Designziele: Einfach, objekt-orientiert und vertraut (familiar) Robust und sicher Hardware-architekturneutral und portabel Performant Nebenläufigkeit (parallele Ausführbarkeit angebbar) und dynamische Bindung Warum Java als Programmiersprache? Warum nicht Maschinensprache? Warum nicht Umgangssprache? 9
Warum nicht Umgangssprache? mehrdeutig! 10
Was Sie in dieser Vorlesung lernen Umsetzen von Verfahren (Algorithmen) zur Lösung einfacher Probleme in eine Programmiersprache Problem-Modellierung in einer Programmiersprache Fähigkeit zur Abstraktion Sauber zu programmieren! Lesbare, verständliche, leicht wartbare Programme Sie schrieben nicht für den Computer, sondern für den nächsten Menschen, der es lesen muss. Nachvollziehbare Modellierung Gute Strukturierung, gute Dokumentation 11
Rolle der Programmierung Für die Software-Technik Programmcode nur eine von vielen Sichten auf ein Software-System Weitere zentrale Sichten... Software-Architektur Anforderungen Programmcode Fokus dieser Vorlesung Für das weitere Studium Grundlegende Programmierfähigkeiten unerlässlich! Fördert strukturiertes und algorithmisches Denken. 12 20.10.2014 Vorlesung Programmieren: Einführung
Was kann ich mit guten Programmierkenntnissen anfangen? Mitarbeit in Open-Source-Projekten Mitarbeit an interessanten Projekten in einem Unternehmen Selbständig machen Gesellschaftiche Probleme lösen: neue Mobilitätskonzepte Energieversorgung Fabrik der Zukunft Neue medizinische Geräte Hilfsdienste für alte Menschen... 13
Literaturhinweis Es gibt viele Bücher und online-materialen Einziger Tip: Dietmar Ratz, Jens Scheffler, Detlef Seese und Jan Wiesenberger Grundkurs Programmieren in Java, 7. Auflage, 2014 (mit Java 8), Hansa-Verlag 14 20.10.2014 Vorlesung Programmieren: Einführung
Wohin geht die Reise? Alan Turing über den Ferranti Mark I Computer: This is only a foretaste of what is to come (...). (...) I do not see why it should not enter any of the fields normally covered by the human intellect and eventually compete on equal terms. 15