1 / 24

Einführung in die Informatik II Vergleich von Programmierstilen und Abschluss-Besprechung

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. Überblick für Heute. Vergleich von Programmierstilen Allerlei

hesper
Download Presentation

Einführung in die Informatik II Vergleich von Programmierstilen und Abschluss-Besprechung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Einführung in die Informatik IIVergleich von Programmierstilenund Abschluss-Besprechung Prof. Bernd Brügge, Ph.D Institut für Informatik Technische Universität München Sommersemester 2004 22. Juli 2004 2

  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. System-Klasse Sprach- Niveau Adaptive Systeme Modellierungs- sprache (UML, OMT,E/R...) Eingebettete Systeme Höhere Programmier- sprache (Java, C++, C,...) Prozess- überwachung 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

  6. System-Klasse Sprach- Niveau Adaptive Systeme PMI Bumpers Modellierungs- sprache (UML, OMT,E/R...) 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. Übersichtstabelle Objekt- basiert Ereignis- orientiert Objekt- orientiert Funktional Imperativ - Sicherheit 0 - 0 + Effizienz + 0 + 0 - Nachweis der Korrektheit + - 0 - 0 Nachweis der Terminierung + - - -- - - - + - + Enkapsulierung Erweiterbarkeit - - 0 - + Lesbarkeit 0 0 0 - 0 Wiederverwend- barkeit - - 0 - + 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: bruegge@in.tum.de

  16. Evaluierung • Stoff • Werkzeuge • Folien • Vorlesungsbetrieb

  17. 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

  18. 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

  19. 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

  20. Werkzeuge • Wahlfreiheit lassen bei Entwicklungsumgebungen, Betriebssystemen, Programmiersprachen

  21. 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

  22. 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

  23. Ein weiteres Experiment • Interaktives Fragesystem iVote • Erstellt von Studierenden im Webobjects Praktikum • URL fuer Endbenutzer • http://macbruegge27.informatik.tu-muenchen.de/cgi-bin/WebObjects/iVote • 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?

  24. 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!

More Related