FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Praktische Informatik

SE3 VL WS09/10

SE3 VL WS09/10 2009-09-06 17:27
Anonymer User
Hallo,
mag mir mal jmd verraten, wie es in SE3 mit den VL FP und Logikprogrammierung aussieht!?
Beide VL sind für Freitags 12-14h angesetzt aber in ESA H und ESA J! Muss ichmich teilen oder ist es wieder nur je ein halbes Semester?
LG

RE: SE3 VL WS09/10 2009-09-06 17:34
Hannes
Es reicht (formal), wenn Du eine der beiden Veranstaltungen belegst.

RE: SE3 VL WS09/10 2009-09-06 17:59
Anonymer User
Ja ok, dass ich nicht zu den VL muss ist mir schon klar, dennoch muss ich beide belegen, oder nicht?
Ich sollte schon beides Mal den Stoff anhören dürfen.

RE: SE3 VL WS09/10 2009-09-06 18:10
Hannes
nee, man muss tatsächlich nur eine SE-3-Vorlesung belegen. In der letzten Vorlesungswoche wird dann kurz auf die Inhalte des jeweils anderen Moduls eingegangen.

RE: SE3 VL WS09/10 2009-09-06 20:01
Anonymer User
Kann jemand vielleicht den Unterschied zwischen beiden Programmierungen kurz erläutern?

RE: SE3 VL WS09/10 2009-09-06 20:21
rothose86
Logikprogrammierung : Programmiermodell geht von Aussagen und Implikationen auf den Aussagen aus. Man schreibt eine Datenbasis wie z.B.

ist_vater_von(hans, susi).
ist_bruder_von(marius, hans).

und baut mittels Regeln dann Folgerungen auf:

ist_onkel_von(X,Y) :- ist_bruder_von(X,Z), ist_vater_von(Z,Y).

Die Regel besagt: X ist der Onkel von Y, falls X der Bruder von Z ist und gleichzeitig Z der Vater von Y ist.
X ,Y,Z sind Variablen, die Strukturen enthalten koennen.
Wenn du das Programm im Prolog-System startest und ist_onkel_von(marius, X). aufrufst, erhaelst du als Ergebnis X=susi.

Funktionale Programmierung kann jemand anders erklaeren ;)

RE: SE3 VL WS09/10 2009-09-06 21:20
7wingera
Also ich habe LP besucht und habe daher weniger Ahnung von FP als von LP, aber ich war froh, LP gewählt zu haben, weil das einfach mal ein komplett anderes Paradigma ist als die FP, welche mit der OOP verwandt ist.

LP kam mir aber auch irgendwie anspruchsvoller vor - gemessen am Gejammer meiner Kommilitonen ;) Vom Stoff kann ichs natürlich nicht beurteilen.

RE: SE3 VL WS09/10 2009-09-06 21:30
Julian F.
In der funktionalen Programmierung sind Funktionen ein Typ wie jeder andere, so dass du sie z.B. speichern, herumreichen und bei Bedarf ausführen kannst. Die grundlegende Datenstruktur ist die Liste, die sich auf ganz verschiedene Arten gut rekursiv verarbeiten lässt.

Programme haben keinen sequentiellen Kontrollfluss, sondern das Programm ist eine Funktion, die du mit beliebigen Parametern aufrufst, die wieder Funktionsaufrufe sein können. Funktionen können vorher definiert werden.

Scheme-Beispiel zur rekursiven Berechnung der Fakultät einer Zahl:

(define (fak n)     (if (= n 0)         1         (* n (fact (- n 1)))))
Das ist als Von-Neumann-gewöhnter Programmierer noch ganz gut lesbar.

Die Stärken der funktionalen Programmierung spielst du aus, wenn du mit Funktionen höherer Ordnung auf Listen arbeitest, z.B. so:

(define (verdopple-alle xs)     (map (curry * 2) xs))
Dieser Code nimmt eine Liste von Zahlen an und gibt eine zurück, in der jeder Eintrag mit 2 multipliziert wurde. In der funktionalen Programmierung macht man um Schleifen und Konsorten meist einen Bogen, weil es elegantere Möglichkeiten gibt.

Die Aussage von 7wingera, dass die funktionale Programmierung der objektorientierten Programmierung ähnlicher ist als die logische, kann ich so nicht unterschreiben. Es stimmt, dass man in Scheme auch imperativ und auch objektorientiert programmieren kann, wenn man es darauf anlegt. Unter den Grundparadigmen ist das allerdings eher verpönt, und mir als jemand, der FP belegt hat, war es "anders" genug. :)

RE: SE3 VL WS09/10 2009-09-06 21:45
Fred
Also ich habe LP besucht und habe daher weniger Ahnung von FP als von LP, aber ich war froh, LP gewählt zu haben, weil das einfach mal ein komplett anderes Paradigma ist als die FP, welche mit der OOP verwandt ist.
Was hat funktionale Programmierung denn bitte mit OOP zu tun?
fibs = 0 : 1 : zipWith (+) fibs (tail fibs) Kannst Du mir das mal in OO übersetzen? [25]

RE: SE3 VL WS09/10 2009-09-06 23:26
7wingera
Haha… :D Ich mein Folgendes:

Ich konnte von Scheme - also von dem bisschen, das ich gesehen habe - zu Java Mehr Parallelen sehen als von Prolog. Bspw. hab ich ewig gebraucht, um zu verinnerlichen, dass eine Anfrage wie
vater_von( X , hans ).nicht etwa den Wert für den Vater von Hans annimmt, sondern eine mögliche Belegung für X ausgibt. Das führe ich darauf zurück, dass ich einfach durch Java schon funktional gedacht habe.
Denn in meinen Augen hat Java ganz klar auch funktionalen Charakter, während das LP-Paradigma nicht gerade ins Auge springt ;)

RE: SE3 VL WS09/10 2009-09-07 10:50
Hannes
Denn in meinen Augen hat Java ganz klar auch funktionalen Charakter

ääh… hä? :-D In Java gibts doch nichtmal Funktionen höherer Ordnung.

RE: SE3 VL WS09/10 2009-09-07 11:34
rothose86
Naja, imperative Sprachen haben in der Regel ja Subroutinen, bzw. Funktionen die aufgerufen werden.
Ich glaube das hat er damit gemeint ;)

RE: SE3 VL WS09/10 2009-09-07 11:45
Hannes
Dann hat ja auch Assembler funktionalen Charakter ;)

RE: SE3 VL WS09/10 2009-09-07 12:41
Anonymer User
wählen denn ungefähr gleich viele Leute LP und FP? nicht dass man nachher in einem von beiden nur so ein kleines Grüppchen ist.. wie war das denn letztes Jahr?

RE: SE3 VL WS09/10 2009-09-07 12:45
Anonymer User
Hmm, ich hätte mir da einbisschen Information hierzu im SE2 Modul gewünscht. Wie sollen wir uns denn da vernünftig entscheiden?

RE: SE3 VL WS09/10 2009-09-07 12:55
TieKei
Die Anmeldezahlen der letzten Jahre und auch die Plätze die STiNE zur Verfügung stellt zeigen einen Trend Richtung Funktionale Programmierung. Gerüchten zur Folge soll FP auch bessere Noten abwerfen, aber nicht nur deshalb definiere ich jetzt mal Logik Programmierung als "Wahl für die cooleren" :P
Ach man, eigentlich will ich auch beides machen, aber meine Zeitplanung, und _vor allem_ das Bachelorstudium erlauben mir nicht noch FP zusätzlich zu machen. -.-

RE: SE3 VL WS09/10 2009-09-07 13:05
rothose86
Dann hat ja auch Assembler funktionalen Charakter ;)

Naja bei Assembler arbeitest du ja nicht mit Ausdruecken.

Ausdruecke wie

x = multipliziere( multipliziere(a,b), c);

sind in Java bzw. oo- Sprachen durchausmoeglich. Und da kann man ja wohl vom funktionalen Charakter sprechen ( ich rufe eine Funktion auf, deren Wert ich als Eingabe fuer eine andere Funktion benutze).
Bei Assemblerprogrammierung arbeitet man ja mehr mit Spruengen und Marken.

RE: SE3 VL WS09/10 2009-09-07 14:53
Hannes
jein, in Java z.B. ist eine "Funktion" ja immer auch eine Prozedur, also eine Liste von Anweisungen die nacheinander ausgeführt werden, während in einer funktionalen Sprache eine Funktion (in der Regel) keine Seiteneffekte hat, sondern nur zu einem Wert evaluiert wird.

RE: SE3 VL WS09/10 2009-09-10 11:15
Anonymer User
Die Anmeldezahlen der letzten Jahre und auch die Plätze die STiNE zur Verfügung stellt zeigen einen Trend Richtung Funktionale Programmierung. Gerüchten zur Folge soll FP auch bessere Noten abwerfen, aber nicht nur deshalb definiere ich jetzt mal Logik Programmierung als "Wahl für die cooleren" :P
Ach man, eigentlich will ich auch beides machen, aber meine Zeitplanung, und _vor allem_ das Bachelorstudium erlauben mir nicht noch FP zusätzlich zu machen.  -.-

Wenn ich in SE1 und 2 nicht sooo super war, sollte ich also lieber FP wählen?
Hatte mich jetzt nämlich für LP entschieden, dachte das kommt vllt in Richtung FGI und ist für mich dann greifbarer?

RE: SE3 VL WS09/10 2009-09-10 14:14
Fred
Wenn ich in SE1 und 2 nicht sooo super war, sollte ich also lieber FP wählen?
Du meinst jetzt wegen der Noten? Dazu kann ich nichts sagen. Aber vom Stoff sind FP und LP nach meiner Auffassung beide ganz weit weg von OO. Wenn Du zum Beispiel Vererbung oder Subtyping nicht richtig verstanden hast, macht das überhaupt nichts für SE3.

Es spielt absolut keine Rolle, wofür Du Dich jetzt "entscheidest", da man als interessierter Informatiker sowieso beides irgendwann mal gesehen und verstanden haben sollte.

RE: SE3 VL WS09/10 2009-10-06 13:04
Anonymer User
In FP hatten wir letztes Jahr 2 Aufgaben, bei denen wir OO programmieren sollten. Mit CLoS (Common Lisp Object System) kann man die in SE1/2 gelernten Sachen sehr schön in Scheme umsetzen.

RE: SE3 VL WS09/10 2009-10-16 08:29
Stefan1971HH
War es eigentlich irgendwo von offizieller Seite zu erfahren, dass man nur eine der beiden Veranstaltungen besuchen muss? Ich wusste von nichts und war überascht, dass Stine meine FP-Anmeldung nach erfolgtem LP Eintrag abgelehnt hat (ok, dass die Vorlesungen gleichzeitig sind, hatte ich übersehen)

Kommt im FP Bereich immer noch Miranda zur Anwendung?

RE: SE3 VL WS09/10 2009-10-16 10:19
Anonymer User
Kommt im FP Bereich immer noch Miranda zur Anwendung?
Nein, Scheme (ein LISP-Dialekt).
In LP gibt es logischerweise Prolog. (Wortwitz haha)

War es eigentlich irgendwo von offizieller Seite zu erfahren, dass man nur eine der beiden Veranstaltungen besuchen muss?
Ein bisschen Kommunikation im Vorfeld mit Kommillitonen sollte das doch eigentlich klar gemacht haben. Studierst du für dich alleine?

RE: SE3 VL WS09/10 2009-10-16 11:58
Fred
Kommt im FP Bereich immer noch Miranda zur Anwendung?
Wird LISP nicht schon mindestens seit 2001 eingesetzt?

RE: SE3 VL WS09/10 2009-10-16 12:27
Philipp
War es eigentlich irgendwo von offizieller Seite zu erfahren, dass man nur eine der beiden Veranstaltungen besuchen muss?
Ein bisschen Kommunikation im Vorfeld mit Kommillitonen sollte das doch eigentlich klar gemacht haben. Studierst du für dich alleine?

Hm, doofer Kommentar…. also es wurde nirgends gesagt, und ist man gleich Alleingänger wenn man nicht mit Spätsemestern redet… ?! oh man, also ich habs hier gelesen, weil mit den Komillitonen mit den ich geredet habe wusste das auch keiner…

RE: SE3 VL WS09/10 2009-10-16 12:56
peace
hm. ich glaub ich habs damals in der oe erfahren, bin aber nicht sicher. jedenfalls war das irgendwie immer für mich klar.

RE: SE3 VL WS09/10 2009-10-17 00:05
Stefan1971HH
Kommt im FP Bereich immer noch Miranda zur Anwendung?
Nein, Scheme (ein LISP-Dialekt).
Schade, ich habe noch gute Erinnerungen an Herrn Prof. Züllighovens Miranda - Vorlesungen.
War es eigentlich irgendwo von offizieller Seite zu erfahren, dass man nur eine der beiden Veranstaltungen besuchen muss?
Ein bisschen Kommunikation im Vorfeld mit Kommillitonen sollte das doch eigentlich klar gemacht haben. Studierst du für dich alleine?

Kontakt habe ich hauptsächlich zu "gleichsemestrigen" Kommilitonen.
Vielen Dank für deine Sorge um mein Sozialverhalten.

Ich nehme aber unabhängig davon alle möglicherweise implizit angeklungene Kritik zurück,
denn hier steht es tatsächlich offiziell (10. "Inhalt"):

http://www.informatik.uni-hamburg.de/Info/Studium/BSc/Module/SoftwareentwicklungIII.shtml

RE: SE3 VL WS09/10 2009-10-17 09:52
Fred
Aufbauend auf den in den Modulen Softwareentwicklung I und II vermittelten Grundlagen der zustands- und objektorientierten Programmierung, behandelt der Modul Softwareentwicklung III mit der funktionalen und der logik-basierten Programmierung zwei alternative Paradigmen
Sorry, aber SE3 hat doch nun wirklich fast gar nix mit SE1 und SE2 zu tun. Wie kann denn da von "aufbauend" die Rede sein? Die Lehrinhalte sind doch, soweit ich das gesehen habe, weitestgehend unverändert aus P1 (Erstsemester-Diplom-Veranstaltung) übernommen worden.

RE: SE3 VL WS09/10 2009-10-17 14:48
peace
Sorry, aber SE3 hat doch nun wirklich fast gar nix mit SE1 und SE2 zu tun. Wie kann denn da von "aufbauend" die Rede sein? Die Lehrinhalte sind doch, soweit ich das gesehen habe, weitestgehend unverändert aus P1 (Erstsemester-Diplom-Veranstaltung) übernommen worden.
Du hast recht, aber vielleicht macht sich das toller bei der Akkreditierung des Studiengangs oder so.

RE: SE3 VL WS09/10 2009-10-23 11:08
Anonymer User
Sorry, aber SE3 hat doch nun wirklich fast gar nix mit SE1 und SE2 zu tun. Wie kann denn da von "aufbauend" die Rede sein? Die Lehrinhalte sind doch, soweit ich das gesehen habe, weitestgehend unverändert aus P1 (Erstsemester-Diplom-Veranstaltung) übernommen worden.

Richtig toll, dass sich mal jemand kritisch mit unseren Modulbeschreibungen auseinandersetzt! Allerdings wundere ich mich schon ein bisschen über die Basis der Kritik. Insbesondere frage ich mich, woher eigentlich dieses extreme Denken in Schubladen kommt, das aus dem Posting deutlich wird: SE3 ist was völlig anderes als SE1/SE2.

Ganz oberflächlich betrachtet kann man das schon so sehen. Tatsächlich aber baut SE3 schon in erheblichem Maße auf den Kenntnissen und Fertigkeiten aus den vorangegangenen Modulen auf: Etwa wenn aufzeigt wird, wie man eine Methode mit Hilfe von Closures implementiert. Wenn diskutiert wird, wo sich die verschiedenen Methodenarten (Konstruktor, Accessor, …) in der Logikprogrammierung wieder finden. Wenn einfache Formen der Vererbung mit Hilfe der Meta-Programmierung realisiert werden. Wenn die unterschiedlichen Ansätze zur "Kapselung" von Variablen miteinander verglichen werden. … Für all das ist ein vertieftes Verständnis der Konzepte der imperativen und objektorientierten Programmierung doch wohl zumindest recht hilfreich, oder?

Aufbauen auf etwas heißt doch nicht, wir machen immer so weiter und immer wieder das Gleiche! Aufbauen heißt doch auch, auf einem soliden Fundament neuartige Dinge besser verstehen und vergleichen zu können. Gerade diese paradigmenübergreifenden Aspekte sind mir in SE3 sehr, sehr wichtig. Ich wäre sehr froh, wenn ich wenigstens einiges davon in der Veranstaltung erfolgreich weitergeben konnte. In P1 ließ sich eine solche Sicht naturgemäß nicht umsetzen, weil ja ganz einfach der Vergleichspunkt noch fehlte.

Selbstverständlich erfordert auch ein SE3 im 3. Semester die Behandlung der elementaren Grundlagen der jeweiligen Paradigmen (Unifikation, Suche, Wertesemantik, …). Aus der weitgehenden Übereinstimmung der ersten 100 Folien auf die Identität der Veranstaltungen zu schließen, halte ich dann aber doch für einigermaßen gewagt. Und selbst wenn sich dort aus gutem Grund Lehrinhalte von P1 wieder finden, kann ich dann so ohne Weiteres davon ausgehen, dass auch deren Vermittlung auf identische Art und Weise erfolgt?

@peace: Ich bin mir ziemlich sicher, dass wir es nicht nötig haben, Akkreditierungskommissionen mit billigen Taschenspielertricks zu beeindrucken.

Wolfgang Menzel

RE: SE3 VL WS09/10 2009-10-23 15:24
Fred
Wenn diskutiert wird, wo sich die verschiedenen Methodenarten (Konstruktor, Accessor, …) in der Logikprogrammierung wieder finden. Wenn einfache Formen der Vererbung mit Hilfe der Meta-Programmierung realisiert werden. Wenn die unterschiedlichen Ansätze zur "Kapselung" von Variablen miteinander verglichen werden. […] In P1 ließ sich eine solche Sicht naturgemäß nicht umsetzen, weil ja ganz einfach der Vergleichspunkt noch fehlte.
Oh, also ist das Material offenbar doch stark überarbeitet worden im Vergleich mit P1. Dann nehme ich meine Kritik selbstverständlich zurück.