FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Praktische Informatik

Funktionale oder Logische Programmierung

Funktionale oder Logische Programmierung 2007-09-17 16:09
Anonymer User
wenn ich das richtig verstanden habe dann müssen wir uns im dritten semester zwischen funktionaler und logische programmierung entscheiden?

ich habe mir die beschreibungen durchgelesen aber könnten die, die diese module schonmal belegt haben mir bitte davon berichten?

wie sollte man sich entscheiden, wo liegen die schwerpunkte, was ist wie leichter?

danke für die hilfe

RE: Funktionale oder Logische Programmierung 2007-09-17 16:37
Alexander_W
was mich mehr interessiert, was bisschen unklar ist, man muss auch nur eine der beiden Übungen machen oder? weil da stehen 3 credits für beide Übungsangebote…

RE: Funktionale oder Logische Programmierung 2007-09-17 18:46
Hackbert
was mich mehr interessiert, was bisschen unklar ist, man muss auch nur eine der beiden Übungen machen oder?
Ja, man muss tatsächlich nur eine der Übungen besuchen.

Ich habe damals funktionale Programmierung bei Prof. Dreschler-Fischer gewählt und es hat mir sehr gut gefallen. Themen sind: funktionale Programmierung allgemein, Rekursion, funktionen höherer Ordnung, Backtracking, General Problem Solver und CLOS. Natürlich ist diese Liste nicht vollständig. Als Programmiersprache wird Scheme verwendet. Am Ende gibt es noch eine Einführung in die Konzepte der Logikprogrammierung.
Der Vorlesung konnte man gut folgen. Das Skript war auch ziemlich gut. Lasst euch nicht davon abschrecken, dass das Skript sehr umfangreich ist. Sehr viel Platz wird von den Quelltexten von Programmen eingenommen, die während der Vorlesung vorgeführt werden. Der Schwierigkeitsgrad der Prüfung ist aus meiner Sicht verhältnismäßig niedrig. Sehr positiv aufgefallen ist uns auch, dass die Übungszettel eigentlich immer genau so viel Zeit in Anspruch genommen haben, wie angegeben war.
Insgesamt ist die Vorlesung sehr empfehlenswert. Natürlich fehlt mir der direkte Vergleich zur Logikprogrammierung, sodass ich nur sehr einseitig berichten kann.

RE: Funktionale oder Logische Programmierung 2007-09-17 19:32
Slater
wenn ich 5 1/2 Jahre zurückdenke, dann war beides recht gut organisiert, machbar & fair, damals allerdings direkt im ersten Semester beides jeweils ein halbes Semester

Scheme und Prolog sind ja allgemein nicht unwichtige Dinge, da lohnt es sich sowieso, jedes mindestens mal einen Tag kennenzulernen und hat so selber einen guten Eindruck,

ganz spontane Einschätzung:
Prolog ist was zum Knobeln und Basteln, elegante Formulierung logischer Konzepte, viel Rekursion,
ähnlich Aussagenlogik, Prädikatenlogik, falls das schon dran kam?
sehr abstrakt/ ungewöhnlich, eigenständig

Scheme dagegen ist mathematisch,
korrekte Syntax, Verknüpfungen, Funktionen und Argumente, viele viele Klammern.
nicht so spannend aber dafür praktisch sinnvoller, von beiden Sonderlingen noch eher zu gebrauchen

RE: Funktionale oder Logische Programmierung 2007-09-17 22:29
Anonymer User
hat noch jemand mehr zur logikprogrammierung?

RE: Funktionale oder Logische Programmierung 2007-09-18 14:34
Anonymer User
Ich würde es ganz einfach so sehen wenn du gut im Progen bist dann kannst du ohne Probs auch logik nehmmen aber Funktionale Programmierung würde ich sagen ist einfach ein bissel einfacher und nicht so kompliziert psdie Klausur ist auch seh sehr Fair bei Dreschler .

RE: Funktionale oder Logische Programmierung 2007-09-19 21:19
Viprex
Logikprogrammierung ist defintiv die investierte Zeit wert. Es ist einfach erstaunlich zu sehen, wie weit die schon vor Jahrzenten mit diesem Konzept waren und wie unkompliziert einige Dinge zu erledigen sind.
Ganz einfach, ist es aber nicht. Du solltest schon in der Lage sein, nicht nur in den bisher vorgefertigten Bahnen zu denken, denn Logikprogrammierung ist etwas ganz anderes als das heutige OOP.

RE: Funktionale oder Logische Programmierung 2007-09-20 22:24
f0k
Ich hatte Logikprogrammierung und es hat mir sehr gut gefallen. Vorlesung und Übung waren super (für mich die beste Veranstaltung des Semesters), aber das soll bei der Funktionalen Programmierung nicht anders gewesen sein.
Interessant finde ich, wie man sich nach und nach angewöhnt, Probleme in einer anderen Art und Weise anzugehen, als man das bei imperativer Programmierung tun würde. Bestimmte Aufgabenstellungen lassen sich mit Prolog (bzw. überhaupt in Logikprogrammierung) einfacher oder schneller lösen.
Das Prinzip ist grob gesagt, dass man ein paar Fakten aufschreibt und ein paar Regeln, und dann das System nach irgendetwas fragt. Beispielsweise könnte man die Regeln für ein gültig ausgefülltes Sudoku definieren, dann ein unvollständiges Sudoku dazu und das System fragen, ob das Sudoku gültig ist - als Antwort erhält man entweder "nein" oder eine Belegung der freien Felder, unter der das Sudoku gültig ist (sprich: man erhält das gelöste Sudoku).
Nachdem man die Grundprinzipien von Prolog verstanden hat, lernt man in der Veranstaltung nach und nach auch, wie das System arbeitet und wie man das ausnutzen kann, um möglichst schnelle / elegante Programme zu entwickeln. Die vermittelten Denkweisen und Fertigkeiten helfen dann nicht nur in der Logikprogrammierung, sondern lassen sich auch auf die imperative Programmierung übertragen.

RE: Funktionale oder Logische Programmierung 2007-09-21 00:01
joda_der_weise
Mal etwas prakmatischer:

Wenn man sich die Klausuren zum Modulabschluß ansieht, dann war die Klausur zum funktionalen Teil (schließt beide Termine ein!!) deutlich leichter als zum Logik-Teil!!

RE: Funktionale oder Logische Programmierung 2007-09-21 02:38
Anonymer User
Danke für eure ausführlichen Antworten aber ich kann mich irgendwie immer noch nicht entscheiden!

Logikprogrammierung finde ich sehr reizvoll und hört sich interessant an. Das gleiche gilt auch für die funktionale Programmierung :S

Ist der Logik Teil wirklich schwerer? Und was genau macht man im funktionalen Teil?

Könnt ihr Übungsbeispiele nennen?

RE: Funktionale oder Logische Programmierung 2007-09-21 13:35
f0k
Danke für eure ausführlichen Antworten aber ich kann mich irgendwie immer noch nicht entscheiden!
Probier's einfach mal selbst aus. Such Dir ein paar Tutorials oder Literatur zu Scheme und zu Prolog und vergleich's. Irgendwo auf fb18 hatte ich mal was dazu gepostet (vor einem Jahr, als wir uns entscheiden mussten), aber ich finde es gerade nicht wieder.

Ist der Logik Teil wirklich schwerer?
Rein von der Klausur her: Ja, scheint so gewesen zu sein. Trotzdem bereue ich es nicht, mich für Logikprogrammierung entschieden zu haben. Scheme kommt mir irgendwie trockener vor. Außerdem konnte ich so das Praktikum Logikprogrammierung (in der vorlesungsfreien Zeit am Ende des Wintersemesters) wahrnehmen - das hat richtig Spaß gemacht und ich kann nur jedem empfehlen, Veranstaltungen in der vorlesungsfreien Zeit besuchen, um im Semester mehr Luft zu haben.

Könnt ihr Übungsbeispiele nennen?
Hmm, also es fing an mit einfachen Dingen wie Familienbeziehungen - d.h. man definiert, wer wessen Eltern sind und kann dann Regeln aufstellen, mit denen man ermitteln kann, wer die Großeltern, Geschwister etc. sind. Es folgen rekursive Prädikate, um z.B. eine allgemeine "Vorfahre"-Beziehung zu definieren. Später lernt man, mit Listen umzugehen, dazu gab es z.B. Aufgaben mit einer fiktiven Fabrik, in der aus bestimmten Bauteilen andere Bauteile zusammengesetzt werden, bis ein Endprodukt fertig ist; man kann dann Prädikate definieren, die eine Liste benötigter Bauteile zusammenstellen o.ä. Auch einfachere Prädikate wie "ist ein bestimmtes Element in der Liste vorhanden?" werden betrachtet und lassen sich sehr elegant formulieren. (Ziemlich faszinierend ist dabei die Richtungsunabhängigkeit in der Logikprogrammierung - man kann ein- und dasselbe, einfache Prädikat benutzen, um 1. zu prüfen, ob ein Element in einer Liste vorhanden ist, um 2. alle Elemente einer Liste aufzuzählen und um 3. alle Listen aufzuzählen, die ein bestimmtes Element enthalten. Das muss man natürlich erstmal begreifen.) Zu den interessantesten Aufgaben gehörten neben einer Aktienkursvorhersage die Weihnachtsaufgaben: Eine rekursive Grafik zeichnen und einen Chatbot schreiben.

Hoffe, das hilft - ich kann es leider nicht mit Funktionaler Programmierung vergleichen, da wir die nur angerissen haben (ja, sowohl bei Logikprogrammierung kommt ein kurzer Teil zu Scheme als auch umgekehrt).

RE: Funktionale oder Logische Programmierung 2007-09-21 14:15
Anonymer User
Hallo f0k, kannst du auch etwas zu dem Herrn Dr.-Ing. Wolfgang Menzel sagen? Verständliche Vorlesung?, Skript?

RE: Funktionale oder Logische Programmierung 2007-09-21 14:41
f0k
Hallo f0k, kannst du auch etwas zu dem Herrn Dr.-Ing. Wolfgang Menzel sagen? Verständliche Vorlesung?, Skript?
Klar, also Prof. Menzel ist ein sehr umgänglicher Mensch, er kann gut erklären, die Vorlesung war interessant, einigermaßen interaktiv (so weit ich mich erinnern kann) und verständlich - auch auf Nachfragen konnte er immer gut antworten. Die Vorlesung ist sehr nah am Skript oder umgekehrt - ist eben geteXt und einmal mit LaTeX-Beamer und einmal als article gesetzt (so weit ich das sehe). Das Skript enthält also alles aus der Vorlesung plus noch einige zusätzliche Erklärungen und Einleitungen. Er bringt viele Codebeispiele und wie und warum das System darauf reagiert.

RE: Funktionale oder Logische Programmierung 2007-09-21 14:47
Anonymer User
Hallo f0k, kannst du auch etwas zu dem Herrn Dr.-Ing. Wolfgang Menzel sagen? Verständliche Vorlesung?, Skript?
Klar, also Prof. Menzel ist ein sehr umgänglicher Mensch, er kann gut erklären, die Vorlesung war interessant, einigermaßen interaktiv (so weit ich mich erinnern kann) und verständlich - auch auf Nachfragen konnte er immer gut antworten. Die Vorlesung ist sehr nah am Skript oder umgekehrt - ist eben geteXt und einmal mit LaTeX-Beamer und einmal als article gesetzt (so weit ich das sehe). Das Skript enthält also alles aus der Vorlesung plus noch einige zusätzliche Erklärungen und Einleitungen. Er bringt viele Codebeispiele und wie und warum das System darauf reagiert.

Danke :) Ich habe mich jetzt für die Logikprogrammierung entschieden. Mir hat in FGI 1 der Logikteil schon sehr gefallen und ich würde gerne weiter in diese Richtung gehen.

RE: Funktionale oder Logische Programmierung 2007-09-21 23:52
DeGT
Um mal etwas Verknüpfung zu betreiben:
das von der GI vorgestellte Rätsel (dubidubidu) ist in Prolog wunderbar in zwei Zeilen lösbar. In Scheme braucht man bestimmt drei oder vier Zeilen! [25]

RE: Funktionale oder Logische Programmierung 2007-09-22 02:35
georg
Um mal etwas Verknüpfung zu betreiben:
das von der GI vorgestellte Rätsel (dubidubidu) ist in Prolog wunderbar in zwei Zeilen lösbar. In Scheme braucht man bestimmt drei oder vier Zeilen! [25]

(Auf die Gefahr hin, die Lösung für die Grammatik zu verraten [28])

Das geht auch in Scheme:
(define (split s) (lambda (n) (substring s (* 2 n) (+ (* 2 n) 2)))) (define (noam? s) (let ((l (build-list (/ (string-length s) 2) (split s)))) (equal? l (reverse l)))) (wahrscheinlich kürzer, wenn man sich mit der Standard-Bibliothek auskennt…)

Und das falsche findet man bequem mit
> (filter (compose not noam?)  (list "dudubabadudubabadudu" "didudubadududi" "dudubadibadibadu" "dididudidibadibadididudidi")) (list "dudubadibadibadu")
Edit:
Aber Prolog ist auch super! Ich finde eigentlich, dass der Hauptvorteil der Veranstaltungen
darin liegt, neue Sichtweisen auf Probleme und die Formulierung von Lösungen zu bekommen (wie
bei FGI auch, aber ich schweife ab [28]). Deshalb sollte man eigentlich beide Sprachen lernen und
muss gar nicht unbedingt soo tief in die Details. Sehr zu empfehlen ist übrigens das Prolog-Praktikum!
(Ich hoffe, das gibt es noch!)

RE: Funktionale oder Logische Programmierung 2007-10-02 19:33
Brengo
Sehr zu empfehlen ist übrigens das Prolog-Praktikum!
(Ich hoffe, das gibt es noch!)

Jup, das gibt's noch und ich habe nur gutes gehört (aber selber nicht teilnehmen können). Habe Prof. Menzel auch als Übungsgruppenleiter erleben dürfen und war beeindruckt von den guten Erklärungen und fachlich stimmigen Beispielen (und von seinem Humor). War eine sehr schöne Sache mit der Prolog-Geschichte, das.

RE: Funktionale oder Logische Programmierung 2007-10-02 20:26
MB
Ich kann wie jeder hier natürlich nur seinen eigenen Senf dazu geben und der schmeckt in meinem Fall sehr funktional. Dafür hat die Zubereitung der Gerichte, die man bei Leonie Dreschler-Fischer gekocht sehr viel Spass gemacht, da die Zutaten teilweise erstaunlich waren und einfach guten Geschmack in der Verwendung grundlegender Programmiergewürze wie etwa der Rekursion oder höherer Funktionen der Provence vermitteln. Hunger auf mehr hatte ich! Aber leider kam das Praktikum im darauffolgenden Semester nicht zustande, bzw. war es ungeschickt gelegt.