vorlesung programmieren...science museum, creative commons by-nc-nd 5 jun.-prof. dr.-ing. anne...
TRANSCRIPT
KIT – Universität des Landes Baden-Württemberg und
nationales Forschungszentrum in der Helmholtz-Gemeinschaft
ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE)
INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), KIT-FAKULTÄT FÜR INFORMATIK
www.kit.edu
are.ipd.kit.edu
Vorlesung Programmieren
Einführung
26.10.2016 | Jun.-Prof. Dr.-Ing. Anne KoziolekVersion 1.0
2 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Was ist Programmieren?
Vorlesung Programmieren: Einführung26.10.2016
3 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Anfänge der Programmierung
1840er Jahre: Ada Lovelace beschreibt Lösungsverfahren für ein
mathematisches Problem auf einem mechanischen Rechenapparat
Erstes „Programm“
Ada Lovelace gilt als
erste Programmiererin
1940er Jahre: Konrad Zuse entwickelt den Plankalkül
Erste höhere Programmiersprache
Abstrahiert von Maschinensprache
Vorlesung Programmieren: Einführung
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
26.10.2016
Quellen: de.wikipedia.org/wiki/Analytical_Engine,
de.wikipedia.org/wiki/Ada_Lovelace
4 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Rückblick: Ferranti Mark 1 (1951)
Alan Turing(1912-1954)
Vorlesung Programmieren: Einführung26.10.2016
Science Museum, Creative Commons BY-NC-ND
5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
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)
26.10.2016 Vorlesung Programmieren: Einführung
6 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Programmierung
Wie kann nun ein Computer dazu gebracht werden,
jeden präzise festgelegten Berechnungsprozess
auszuführen?
Durch Programmierung!
26.10.2016 Vorlesung Programmieren: Einführung
7 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
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
26.10.2016 Vorlesung Programmieren: Einführung
8 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
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!
26.10.2016 Vorlesung Programmieren: Einführung
9 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Unsere Programmiersprache: Java
Java Entwurfsziele:
Einfach, objekt-orientiert und „vertraut“ (familiar) (für Programmierer)
Robust und sicher
Architekturneutral und portabel
Performant
Interpretiert, nebenläufig und dynamisch
Warum Java als Programmiersprache?
Warum nicht Maschinensprache?
Warum nicht Umgangssprache?
26.10.2016 Vorlesung Programmieren: Einführung
10 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Warum nicht Umgangssprache?
mehrdeutig!
26.10.2016 Vorlesung Programmieren: Einführung
11 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Was Sie in dieser Vorlesung lernen
Entwicklung von Verfahren (Algorithmen) zur Lösung einfacher Probleme
Problem-Modellierung in einer Programmiersprache
Fähigkeit zur Abstraktion
Sauber zu programmieren!
Lesbare, verständliche, leicht wartbare Programme
Nachvollziehbare Modellierung
Gute Strukturierung, gute Dokumentation
26.10.2016 Vorlesung Programmieren: Einführung
12 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Für die Softwaretechnik
Programmcode nur eine von vielen Sichten auf ein Softwaresystem
Weitere zentrale Sichten...
Für das weitere Studium
Grundlegende Programmierfähigkeiten unerlässlich!
Fördert strukturiertes und algorithmisches Denken
Rolle der Programmierung
Vorlesung Programmieren: Einführung26.10.2016
Software-Architektur
Programmcode
Fokus dieser Vorlesung
Anforderungen
13 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
Was kann ich mit guten Programmierkenntnissen
anfangen?
Mitarbeit in Open-Source-Projekten
Mitarbeit an interessanten Projekten in einem Unternehmen
Selbständig machen
Entwicklung von Apps für Smartphones
Gesellschaftliche Probleme lösen (Digitalisierung)
Neue Mobilitätskonzepte
Energieversorgung
Fabrik der Zukunft
Neue medizinische Geräte
…
26.10.2016 Vorlesung Programmieren: Einführung
14 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven
Requirements Engineering, Institut für Programmstrukturen und Datenorganisation
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.
26.10.2016 Vorlesung Programmieren: Einführung