Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Java, Java, Java R. Morelli

Ähnliche Präsentationen


Präsentation zum Thema: "Java, Java, Java R. Morelli"—  Präsentation transkript:

1 Java, Java, Java R. Morelli
Einführung in die Informatik II Vergleich von Programmierstilen und Abschluss-Besprechung Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität München Sommersemester 2004 22. Juli 2004 2 Copyright 2000 by Ralph Morelli. All rights reserved.

2 Überblick für Heute Vergleich von Programmierstilen Allerlei
Kurzfristiges Jobangebot Interaktives Antwortsystem Preisinformationen Evaluierung der Vorlesung

3 Programmierstile Funktionale Programmierung Imperative Programmierung
Objekt-basierte Programmierung Objekt-orientierte Programmierung Ereignis-basierte Programmierung Regel-basierte Programmierung (in Info I/II nicht behandelt, Vorlesung Wissensbasierte Systeme)

4 System-Kategorien und Sprachniveaus
Der Programmierstil ist nur eine von vielen Dimensionen, um Aspekte eines Informatik-Systems zu berurteilen. Andere Aspekte: System-Kategorie Sprachniveau System-Kategorie 1. Berechnung von Funktionen 2. Interaktive Systeme 3. Prozeßüberwachung 4. Eingebettete Systeme 5. Adaptive Systeme Sprachniveau Modellierungssprache Höhere Programmiersprache Maschinennahe Sprache Maschinensprache

5 Sprach- Niveau Programmierstil
Modellierungs- sprache (UML, OMT,E/R...) Höhere Programmier- (Java, C++, C,...) Maschinen- nahe Sprache (Intel Assembler, PMI Assembler) Sprache (PMI, Java- Bytecode) Sprach- Niveau System-Klasse Berechnung von Funk- tionen Interaktive Systeme Prozess- überwachung Eingebettete Adaptive Programmierstil Funk- tional Impe- rativ Objekt- Basiert Orientiert Ereignis- Regel- basiert

6 Sprach- Niveau Programmierstil
System-Klasse Adaptive Systeme PMI Modellierungs- sprache (UML, OMT,E/R...) Bumpers Fibo- nacci Kon- trol -Struk- turen Such- Sortier- Algorith- men Eingebettete Systeme Höhere Programmier- sprache (Java, C++, C,...) Prozess- überwachung Fibo- nacci Interaktive Systeme Maschinen- nahe Sprache (Intel Assembler, PMI Assembler) Berechnung von Funk- tionen Maschinen- Sprache (PMI, Java- Bytecode) Funk- tional Impe- rativ Objekt- Basiert Objekt- Orientiert Ereignis- Orientiert Regel- basiert Programmierstil

7 Dimensionen von Programmierstilen
Elemente: Was sind die wesentlichen Bestandteile des Stils? Sicherheit: Sind Seiteneffekte möglich? Effizienz: Wie hoch ist die Laufzeiteffizienz? Nachweis der Korrektheit: Wie leicht ist es zu beweisen, dass ein im Stil geschriebenes Programm das Spezifikationsmodell korrekt implementiert? Nachweis der Terminierung: Wie leicht ist es, zu beweisen, dass das Programm anhält? Enkapsulierbarkeit: Erlaubt der Stil Zugriffsschutz (z.b. durch Sichtbarkeitsregeln) Erweiterbarkeit: Unterstützt der Stil die Einführung von neuen Typen? Lesbarkeit: Wieweit kann man das Programm durch Lesen des Quelltextes verstehen? Wiederverwendbarkeit: Wie leicht kann man existierende Programme bei der Lösung anderer Probleme einsetzen?

8 Funktionaler Programmierstil
Wesentliche Elemente: Funktionsanwendung, Fallunterscheidung, Rekursion Sicherheit: hoch, keine Seiteneffekte Effizienz: für jeden Aufruf wird eine Inkarnation (Aktivierungssegment) angelegt Nachweis Korrektheit : partielle Korrektheit durch strukturelle Induktion Nachweise Terminierung: Terminierungsfunktion Enkapsulierung: Gering Erweiterbarkeit: Schwierig Lesbarkeit OK Wiederverwendbarkeit: Gering

9 Imperativer Programmierstil
Wesentliche Elemente: Zuweisung, Kontrollstrukturen, Anweisungssequenzen, Programmzustand Sicherheit: nicht sehr hoch, weil Seiteneffekte auf Variablen/Zustand möglich Effizienz: in Schleifen wird auf eine Variable mehrfach zugewiesen, Zwischenergebnisse können gespeichert werden (i.A.höhere Effizienz) Nachweis Korrektheit: Durch Zusicherungen (Hoare Kalkül) Sehr aufwendig schon für kleine Programme Nachweis Terminierung: Schwierig Enkapsulierbarkeit: Gering Erweiterbarkeit: Schwierig Lesbarkeit OK Wiederverwendbarkeit: Gering

10 Objekt-basierter Programmierstil
Wesentliche Elemente: Imperativer Programmierstil + Klassenkonzept Sicherheit: Seiteneffekte durch Klassenkonzept auf lokale Variablen/Zustand einschränkbar Effizienz: in Schleifen wird auf eine Variable mehrfach zugewiesen, Zwischenergebnisse können gespeichert werden (i.A.höhere Effizienz) Nachweis Korrektheit: Entwurf durch Verträge, aufwendig Nachweis Terminierung: Schwierig Enkapsulierbarkeit: Hoch Erweiterbarkeit: Schwierig Lesbarkeit OK Wiederverwendbarkeit: Nicht sehr hoch

11 Objekt-Orientierter Programmierstil
Wesentliche Elemente Objekt-basierter Programmierstil + Vererbung und Polymorphismus Sicherheit: Seiteneffekte durch Klassenkonzept auf lokale Variablen/Zustand einschränkbar Effizienz: mittelmäßig (i.A. geringere Effizienz als beim imperativen Stil, insbesondere durch dynamischen Polymorphismus) Nachweis Korrektheit: Entwurf durch Verträge, aufwendig Nachweis Terminierung: Schwierig Enkapsulierbarkeit: Hoch Erweiterbarkeit: Sehr gut Lesbarkeit OK Wiederverwendbarkeit: Sehr gut

12 Ereignis-Orientierter Programmierstil
Wesentliche Elemente Kontrollfluss durch Ereignisse, kein Hauptprogramm Sicherheit: gefährdet, weil Seiteneffekte auf Variablen/Zustand möglich Effizienz: hoch (wie beim imperativen Stil) Nachweis Korrektheit: Sehr schwierig wegen fehlendem Kontrollfluss Nachweis Terminierung: Äusserst schwierig (aber im allgemeinen garnicht erwünscht:-) Enkapsulierbarkeit: Gering Erweiterbarkeit: Sehr gut Lesbarkeit Schlecht Wiederverwendbarkeit: Mittelmäßig

13 Legende: + (hoch), 0 (mittel), - (gering/schwierig)
Übersichtstabelle Objekt- basiert Ereignis- orientiert Objekt- orientiert Funktional Imperativ Sicherheit - + - Effizienz + - + Nachweis der Korrektheit + - - Nachweis der Terminierung + - - -- - - - + - + Enkapsulierung Erweiterbarkeit - - - + Lesbarkeit - Wiederverwend- barkeit - - - + Legende: + (hoch), 0 (mittel), - (gering/schwierig)

14 Überblick für Heute Vergleich von Programmierstilen Allerlei
Kurzfristiges Jobangebot Interaktives Antwortsystem Preisinformationen Evaluierung der Vorlesung

15 Software-Entwickler gesucht!
Projekt: Logistiktool für die chemische Industrie Was wir benötigen: Informatikstudenten für 2-3 monatige Hiwi-Anstellung MS Access - Kenntnisse wünschenswert Wann: Semesterferien (ab Anfang August) Was wir anbieten: Echte Projekterfahrung, richtiger Kunde (Fortführung eines aktuellen Softwareprojekts) Extreme Programming Erfahrung sammeln in Visual Basic und Datenbanken Kontakt:

16 Info I und Info II -Preise
2 iPod Minis (24. Juli) Dominik Grusemann Nicolas Heuser Buch: Objektorientierte Softwaretechnik (11.August) Mario Gemoll Andreas Meinl Michael Dörfel Martina Laumeyer Biergarten (Mitte August oder Anfang September) Julia Habel Kariem Morsy Leon v. Tippelskirch Michael Dörfel, Thomas Schicketanz, Tilman Küstner Christian Schroeder & Johannes Stammer Benjamin Frank

17 Evaluierung Stoff Werkzeuge Folien Vorlesungsbetrieb

18 Stoff Bemühung um Modernisierung der VL
GUI Benutzung (könnte auch schon ins 1. Semester) Java, nur eine Programmiersprache, nicht 3 auf einmal Moderne Beispiele Bumpers Erklärung mit UML Aufbau der Vorlesung insgesamt

19 Stoff Mehr Hintergrundwissen zur eigentlichen Informatik
Weniger Themen anschneiden, dafür gründlicher Inhalt nicht redundant aufschreiben, sondern nur Stichpunkte Im Skript nur Sachliches, nicht “Heute fällt die ZU aus” Zuviele abstrakte Konzepte, die im Raum rumgeistern Kein OCL im Grundstudium “Bitte mehr Praxisbezug”, “Bitte mehr Theorie” Gewisses logisches/mathematisches Grundverständnis voraussetzen

20 Vorlesungsbetrieb Skript im Netz
Unterstützung der TUM-BWL Übung in der Innenstadt 2x Tutorübung in der Woche! Pause zwischen langen Vorlesungen Zentralübung nur bei Bedarf

21 Werkzeuge Wahlfreiheit lassen bei Entwicklungsumgebungen, Betriebssystemen, Programmiersprachen

22 Java, Java, Java R. Morelli
Folien Folien sind deutlich überfrachtet. Die letzten Folien länger stehen lassen. Das Konzept der Folien funktioniert einfach nicht, Tafelanschrieb wäre deutlich hilfreicher Prof. Brügge wirkte oft unvorbereitet, als ob er die Folien nicht kennen würde Powerpoint und Animationen Tafelanschrieb ist keine Option. Das Problem waren meiner Ansicht nach die Animationen. Sie sind eigentlich besser als Tafelanschrieb, aber offensichtlich sind hier noch weitere Verbesserungen nötig Copyright 2000 by Ralph Morelli. All rights reserved.

23 Sonstiges Keine Experimente
Wirklich nicht? Warum haben Sie Informatik gewählt? Weniger gequälte Übersetzung englischer Begriffe, Englisch ist nun einmal die Sprache der Informatik Das Problem ist nicht Englisch vs Deutsch, sondern “Denglisch” Es ist nicht Sinn einer Vorlesung, für eine Firma zu werben Ziel war Werbung für die Ferienakademie Manchmal könnte das Mikro lauter sein, da im (vollen) Saal ein gewisser Lärmpegel herrscht. Der Lärmpegel war besonders hoch, als das Mikro gut war. Prof. etwas freundlicher, Überreaktion bei erhöhtem Lärmpegel Schwätzen ist unfair bezüglich der anderen Studierenden Keine Vorlesung um 8:30

24 Ein weiteres Experiment
Interaktives Fragesystem iVote Erstellt von Studierenden im Webobjects Praktikum URL fuer Endbenutzer Fragen Hat es Ihnen geholfen, dass wir die PPS Folien ins Netz gestellt haben? Ja, Nein Sollen wir die Vorlesung interaktiver machen? Ja, Nein, nur die Zentralübung Möchten Sie die Animation für die Huffmann-Codierung sehen? Ja, Nein Haben Sie Interesse an Angeboten wie dem Ferienjob? Ja, Nein Haben Sie Interesse, an der Weiterentwicklung von iVote mitzumachen?

25 Ein letzter Tip: Prüfungsvorbereitung
Ein Skript ist Rohmaterial, kein Kondensat, für die Prüfung. Destillieren Sie die wesentlichen Punkte aus dem Skript Erarbeiten Sie eine Zusammenstellung der Konzepte Üben Sie nochmals möglichst viele Übungsaufgaben Gehen Sie mental durch eine Prüfung durch Was kann passieren? Arbeiten Sie mit anderen zusammen! Viel Glück im weiteren Studium!


Herunterladen ppt "Java, Java, Java R. Morelli"

Ähnliche Präsentationen


Google-Anzeigen