Monaden sind in Rust allgegenwärtig

Monaden, wie sie in der funktionalen Programmierung vorkommen, erscheinen mir abgefahren und schwer verständlich. Vor allem beispielsfreie Erklärungen und Bezüge zum mathematischen Teilgebiet der Kategorientheorie empfinde ich als verwirrend. In diesem Post versuche ich ein Konzept, das ich selbst nicht sonderlich tief durchdrungen habe, einführend, anwendungsbezogen und oberflächlich zu erklären, damit man auf der nächsten Party imperativer Nerds zum Obernerd emporsteigen kann. Beispiele in Rust Alle Monaden sind Typen der Form M<T>, die innere Werte*Die inneren Werte zählen. eines Typs T kapseln. Beispiele für Monaden in Rust sind ...

Dezember 15, 2023

Operatorenparsen in Rust

Der Advent of Code steht vor der Tür. Das ist ein Adventskalender aus Programmieraufgaben, deren Lösung aus Spaß an der Freude als Zeitvertreib herhalten kann. Nach erfolgreichem Bearbeiten einer Aufgabe erhält man einen goldenen Stern. Das erste Mal bin ich 2020 darüber gestolpert. Ich dachte seinerzeit, ich versuche das direkt in der Programmiersprache Rust, die ich bis dahin noch nicht verwendet hatte. Übrigens soll dieser Artikel nicht nur eine interessante Advent-of-Code-Aufgabe beleuchten, sondern auch die Flexibilität meiner Rust-Bibliothek Exmex hervorheben, die weiter unten als Teil der Lösung diskutiert wird. ...

November 11, 2021

Folgen partieller Reduktionen in Elm

In meinem vorherigen Artikel habe ich die Berechnung zum Entsparen von investiertem Vermögen hergeleitet und einen kleinen Rechner demonstriert. Dabei ist mir aufgefallen, dass sich bei hohen Jahreszahlen eine kleine Verzögerung bemerkbar gemacht hat. Die Ursache der Verzögerung liegt in meiner Umsetzung der Formel $$\sum_{k=1}^{m-1}\frac{1}{\prod_{t=1}^{k}w_t}.$$ Wie im oben erwähnten Artikel genauer beschrieben, bezeichnet $w_t$ den relativen Kurswert im Monat $t$ und $m$ die Gesamtzahl der Monate. Als Anfänger der funktionalen Programmierung habe ich bisher vornehmlich map, filter und reduce eingesetzt. Um die Formel mit den eben genannten Funktionen in der funktionalen Sprache Elm zu implementieren, habe ich das Produkt im Nenner für jeden Summanden vollständig berechnet, wie ab Zeile 4 des folgenden Schnipsels zu sehen ist. ...

Mai 24, 2021

Erste imperative Blicke auf dynamische Web-Apps in Elm

Vor einiger Zeit habe ich der Episode We’re Teaching Functional Programming Wrong des Podcasts Corecursive lauschen müssen. Darin erzählt ein Richard Feldman von einer rein funktionalen Sprache mit der man tatsächlich dynamische Web-Seiten erstellen kann, ohne verstehen zu müssen, was ein Monad ist. Da ich objekt-orientierte Programmierung für überbewertet halte*Der Vortrag Free your Functions von Klaus Iglberger beleuchtet einige praktische Aspekte meines Standpunkts., habe ich diesen Ansatz kurze Zeit später ausprobiert. In diesem Post werde ich von meinen ersten Gehversuchen, Hürden und Fortschritten in Elm berichten und den Fokus auf für mich ungewohnte Aspekte legen. ...

April 19, 2021

Ein funktionaler Blick auf modulare Algorithmen

Im Blog-Beitrag vom August 2014 haben wir die Modularisierung von Bildverarbeitungsalgorithmen mit der Template-basierten Policy im Vergleich zum dynamischen Polymorphismus basierten Strategy-Muster in Bezug auf Geschwindigkeit verglichen. Wir werden erneut die Laufzeit von (fast) denselben pixelweisen Operationen auf Bildern vergleichen. Diesmal betrachten wir jedoch verschiedene funktionale Modularisierungstechniken. Wir werden Funktionszeiger, Lambdas und abgeleitete Funktoren an Algorithmen übergeben und verschiedene Argumenttypen wie std::function oder generische Typen verwenden. Hinweis Diesen Artikel habe ich ursprünglich auf englisch geschrieben und im August 2023 mit ChatGpts Hilfe ins Deutsche übersetzt. Das ist eine seltene und alte Ausnahme. Üblicherweise schreibe ich Artikel auf deutsch und die Übersetzung ins Englische passiert in Kollaboration mit einer Maschine. ...

Juni 18, 2017

Strategy vs. Policy für Bildverarbeitungsalgorithmen

Ich habe mich schon eine Weile gefragt, wie viel Geschwindigkeitssteigerung man ungefähr erwarten kann, wenn man eine Policy-basierte Entwurfsstrategie für die Entwicklung von Algorithmen in C++ unter Verwendung von Templates im Vergleich zum Strategy-Muster mit dynamischer Polymorphie einsetzt. Dabei interessieren mich insbesondere Algorithmen zur Bildverarbeitung. Hinweis Diesen Artikel habe ich ursprünglich auf englisch geschrieben und im August 2023 mit ChatGpts Hilfe ins Deutsche übersetzt. Das ist eine seltene und alte Ausnahme. Üblicherweise schreibe ich Artikel auf deutsch und die Übersetzung ins Englische passiert in Kollaboration mit einer Maschine. ...

August 29, 2014