2009-07-27 4 views
12

Zunächst einmal wird der goofy Titel verweist direkt auf dieses Papier:Praktische Anwendung von "Bananen, Linsen, Umschlägen und Stacheldraht"?

http://eprints.eemcs.utwente.nl/7281/01/db-utwente-40501F46.pdf

Ich verstehe den theoretischen Wert von diesem, wie es Modellen der meisten, wenn nicht alle, Semantik Programmierung.

Welche Probleme werden mit einem darauf basierenden Programmierparadigma am effizientesten und praktischsten gelöst? Welche Probleme sind nicht?

Stellen Sie sich vor, ganze Programme geschrieben, wo 80% der gesamten Logik diese Operatoren beteiligt. Ich frage mich, ob eine Sprache, die den Betreibern den Benutzer zwang, ihre Struktur ausnutzen könnte ...

+2

Weiß nicht, was ich mit einer PostScript-Datei machen soll. Haben Sie keinen PostScript-Drucker hier sitzen praktisch. –

+2

können Sie eine PDF- oder HTML-Version dieses Papiers liefern, da es auf vielen Computern nicht einfach ist, PostScript zu lesen. –

+3

Ihr PDF-Reader kann PostScript nicht lesen? Zeit, um nach 1950 auf einen Computer zu aktualisieren, denke ich. – jrockway

Antwort

15

Diese Arbeit gehört zu einer langen Reihe verwandter theoretischer Untersuchungen. Das Forschungsgebiet ist, was die funktionalen Programmierer generische Programmierung nennen (was verwirrend unterscheidet sich von dem, was C++ - Programmierer generische Programmierung nennen). Die Idee ist, dass Sie Ihre Funktionen so schreiben, dass Wenn Sie einen neuen Datentyp definieren, erhalten Sie automatisch neuen Code dazu. Ein klassisches Problem, das Menschen auf diese Weise lösen möchten, besteht darin, ein Bild der Daten auf die Festplatte zu schreiben und später isomorphe Daten aus dem Festplatten-Image zurückzulesen.

Wenn Sie ein Gefühl für praktische Anwendungen dieser Ideen bekommen möchten, empfehle ich Ralf Hinzes hervorragendes Papier Generics for the Masses, das zeigt, wie Sie all diese verrückten Ideen in einfachem alten Haskell ausprobieren können. Zum Beispiel habe ich diese Techniken verwendet, um eine ersatzvermeidende Substitution für sehr komplizierte Zwischensprachen in Compilern zu implementieren.

Ralf hat wie Jeremy Gibbons eine Reihe guter Artikel über generische Programmierung geschrieben. Ihre Sachen sind nicht ganz so weit draußen wie Bananen, Linsen und so weiter ...

+0

Großartig! Danke für die Papierverbindung. Allerdings, Generika war nicht das, was ich die 'Bananen' herausholte. Vielleicht muss ich es wieder-re-re-re- lesen und danach suchen. (Obwohl, vielleicht ist das in der Kategorie Theorie Teil begraben, die ich nicht gut erfassen.) –

+1

Kategorie Theorie macht meinen Kopf verletzt ... –

+0

Es scheint, dass der Link Sie Generics für die Massen ist tot. Hier ist eine andere: http://www.cs.ox.ac.uk/ralf.hinze/publications/Messes.pdf –

2

Das bedeutet, dass Lösungen, die in einem Paradigma modelliert werden können, auch im anderen modelliert werden können, und das kann programmatisch in das andere konvertiert werden.

Jetzt sind bestimmte Probleme leichter in einem Paradigma gelöst als in dem anderen. Außerdem ist es einfacher, Eigenschaften in einem Paradigma zu beweisen als in dem anderen. Wenn Sie also eine solche Äquivalenz zeigen können, öffnen Sie die Tür zur Lösung bestimmter Probleme im leichteren und konvertieren dann die Lösung in das gewünschte Paradigma.

Dies ist ähnlich wie die Monaden Dings. Der große Deal mit Monaden ist nicht wie schreibt man einen. Die große Sache mit ihnen ist, dass es Tonnen von Theoremen über Monaden gibt, die angewendet werden können, sobald Sie Ihr Problem auf eine Monade reduzieren. Das gleiche Prinzip gilt hier.

+0

Rechts. Dies gilt für alle Paradigmen. (Ich meine, wenn ich nach objektorientierter Programmierung fragen würde, würde dies gelten). Aber was kann ich daraus machen? –

+1

Als Programmierer oder als Forscher? Als Programmierer, wirklich nichts. Als Forscher ... nun, ich bin nicht qualifiziert, das zu beantworten. :-) –