2009-07-27 6 views
12

Tout d'abord, le titre loufoque est directement référence à cet article:Application pratique de "Bananes, lentilles, enveloppes et barbelés"?

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

Je comprends la valeur théorique de cela, comme il modélise la plupart, sinon la totalité, la sémantique de programmation.

Quels problèmes sont résolus le plus efficacement et pratiquement avec un paradigme de programmation basé sur cela? Quels problèmes ne sont pas? Imaginez des programmes entiers écrits où 80% de la logique impliquait ces opérateurs. Je me demande si un langage qui a forcé les opérateurs sur l'utilisateur pourrait tirer parti de leur structure ...

+2

Ne sait pas _what_ Je suis censé faire avec un fichier PostScript. Ne pas avoir une imprimante PostScript assis ici à portée de main. –

+2

pouvez-vous fournir une version pdf ou html de ce document car il n'est pas facile de lire postscript sur de nombreux ordinateurs. –

+3

Votre lecteur PDF ne peut pas lire postscript? Il est temps de passer à un ordinateur après 1950, selon moi. – jrockway

Répondre

15

Cet article fait partie d'une longue série d'explorations théoriques connexes. Le domaine de recherche est ce que les programmeurs fonctionnels appellent la programmation générique (ce qui est confusément différent de ce que les programmeurs C++ appellent la programmation générique). L'idée est que vous écrivez vos fonctions de telle sorte que lorsque vous définissez un nouveau type de données, vous obtenez automatiquement le nouveau code pour l'accompagner. Un problème classique que les gens voudraient résoudre de cette façon consiste à écrire une image des données sur le disque et à relire plus tard les données isomorphes à partir de l'image du disque. Si vous voulez avoir une idée des applications pratiques de ces idées, je recommande l'excellent papier de Ralf Hinze Generics for the Masses, qui montre comment vous pouvez essayer toutes ces idées farfelues dans le vieux Haskell. Par exemple, j'ai utilisé ces techniques pour implémenter la capture-évitant la substitution de langages intermédiaires très compliqués dans les compilateurs.

Ralf a écrit un certain nombre de bonnes communications sur la programmation générique, tout comme Jeremy Gibbons. Leurs trucs ne sont pas aussi loin que les bananes, les lentilles, et ainsi de suite ...

+0

Super! Merci pour le lien papier. Cependant, les génériques n'étaient pas ce que j'ai sorti des "bananes". Peut-être devrais-je re-re-re-re -...- relis-le et cherche ça. (Bien que cela soit peut-être enterré dans la partie théorie de la catégorie que je ne comprends pas bien.) –

+1

La théorie des catégories me fait mal à la tête ... –

+0

Il semble que le lien que vous avez avec les génériques pour les messes est mort. En voici un autre: http://www.cs.ox.ac.uk/ralf.hinze/publications/Masses.pdf –

2

Cela signifie que les solutions qui peuvent être modélisées dans un paradigme peuvent également être modélisées dans l'autre, et que l'on peut être converti par programme dans l'autre.

Maintenant, certains problèmes sont plus facilement résolus dans un paradigme que dans l'autre. En outre, il est plus facile de prouver les propriétés dans un paradigme que dans l'autre. Donc, si vous pouvez montrer une telle équivalence, vous ouvrez la porte à la résolution de certains problèmes dans le plus facile, puis la conversion de la solution dans le paradigme souhaité.

Ceci est similaire au mony thingy. Le gros problème avec les monades n'est pas comment en écrire un. Le gros problème avec eux est qu'il ya des tonnes de théorèmes sur les monades qui peuvent être appliquées une fois que vous réduisez votre problème à une monade. Le même principe s'applique ici.

+0

Droite. Ceci s'applique à tous les paradigmes. (Je veux dire, si je demandais à propos de la programmation orientée objet, cela serait vrai). Mais que puis-je en tirer? –

+1

En tant que programmeur ou chercheur? En tant que programmeur, rien, vraiment. En tant que chercheur ... eh bien, je ne suis pas qualifié pour répondre à cette question. :-) –

Questions connexes