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

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

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

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

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

August 29, 2014