• De_Narm@lemmy.world
      link
      fedilink
      arrow-up
      10
      ·
      edit-2
      21 days ago

      Generell kann man mit allem alles machen.

      Im Imperativen Bereich würde ich die Frage nach OOP oder nicht fast schon weniger auf das Problem als auf das Team richten. Hat man viele verschiedene Fähigkeitslevel und generell ein sehr großes Team, dann bietet sich OOP an. Die Codebase ist dadurch zwar größer und man schreibt mehr Boilerplate, jedoch hat man ein paar mehr Schutzmechanismen vor Anfängerfehlern. Die große Ausnahme ist sowas wie Spieleentwicklung, die generell sehr auf OOP setzt. Es geht auch ohne, aber da Spiele inherent auf Objekten basieren bietet es sich einfach für die Modellierung an. Je kleiner das Projekt, desto weniger lohnt sich die Mehrarbeit von OO. In der freien Wirtschaft ist sie aber generell fast überall.

      Funktionale Programmierung bietet sich am meisten für die Datenanalyse an. Grob gesagt, immer wenn man über Daten denkt, die durch bestimmte Stationen geleitet werden, um ein bestimmtes Ergebnis zu erhalten, ist man hier richtig. Die wahre Schönheit der FP kommt zur Geltung, wenn man keine internen Zustände abspeichern muss - wie man zum Beispiel bei Spielen muss, wo jedes Objekt HP oder Ähnliches hat. Geht wie gesagt auch, aber dann verliert man die Eleganz. In der freien Wirtschaft findet man selten reine FP, aber Probleme dieser Art haben oft eine FP inspirierte Lösung - weshalb es generell von Vorteil ist datenorientiert denken zu können.

      Reine Logische Programmierung, in aller Ehrlichkeit, habe ich außerhalb von akademischen Einrichtungen noch nicht gesehen. Konzepte davon werden in der freien Wirtschaft im Bereich von Datenbanken genutzt.

      • optional@feddit.org
        link
        fedilink
        arrow-up
        5
        ·
        edit-2
        20 days ago

        Als ich damals vor einigen Jahrzehnten Informatik studiert habe, wurde uns erzählt, dass die Fahrplanauskunft unseres Nahverkehrsverbundes in Prolog geschrieben sei. Ich kann es nicht mehr beweisen und wahrscheinlich stimmt es inzwischen auch schon nicht mehr, aber das wäre ein sinnvoller Einsatzzweck für logische Programmierung. In Prolog kannst Du halt einfach so ein Programm schreiben:

        fahrzeit(a-straße,bahnhof,5).
        fahrzeit(a-straße,clairewerk,7).
        fahrzeit(bahnhof,dorfplatz,13).
        fahrzeit(clairewerk,dorfplatz,12).
        fahrzeit(X,Y, Zeit) :- fahrzeit(X,Umstieg,Zeit1), fahrzeit(Umstieg,Y,Zeit2), Zeit is Zeit1+Zeit2.
        

        Und dann abfragen:

        ? fahrzeit(a-straße,dorfplatz, X).
            Yes (X=18)
            fahrzeit(a-straße,bahnhof,5).
            fahrzeit(bahnhof,dorfplatz,13).
        

        Wenn Du dann noch Umsteigezeiten berücksichtigen willst, und nicht nur irgendeine, sondern möglichst die schnellste Strecke bekommen willst, Taktungen, Streckensperrung etc berücksichtigen musst, wird es natürlich nochmal deutlich komplizierter, aber dafür, dass das im Prinzip nur eine Zeile echter Code ist, ist das Ergebnis schon ganz gut.

        • Ephera@lemmy.ml
          link
          fedilink
          Deutsch
          arrow-up
          2
          ·
          19 days ago

          Ja, ist leider schon speziell, was mit Prolog wirklich gut funktioniert. Wenn du etwas machen willst, wo Schritt A vor Schritt B ausgeführt werden sollte, dann wird es bereits anstrengend.

          Ich finde, am besten betrachtet man Prolog als eine Datenbank, wo man Regeln abspeichert und dann Abfragen stellen kann. Und dann nimmt man eine (andere) Programmiersprache, um mit den abgefragten Informationen etwas umzusetzen. Also tatsächlich gibt es auch für viele Programmiersprachen Bibliotheken, mit denen man Prolog für sowas einbetten kann.