14
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 Koziolek Version 1.0

Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 2: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 3: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 4: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 5: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 6: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 7: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 8: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 9: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 10: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 11: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 12: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 13: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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

Page 14: Vorlesung Programmieren...Science Museum, Creative Commons BY-NC-ND 5 Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements Engineering, Institut für Programmstrukturen

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