J'ai une idée approximative de ce que c'est, mais si quelqu'un a une explication du «problème d'expression» qu'il pense être succincte et intuitive, j'aimerais l'entendre.
Réponses
Trop de publicités?Regarder cette conférence.
L'idée est que votre programme est une combinaison d'un type de données et les opérations sur elle. Le problème demande une mise en œuvre qui permet d'ajouter des nouveaux cas de type et de nouvelles activités sans la nécessité pour la recompilation de la vieille modules et de maintien statique type de sécurité(pas de moulages ou de l'exécution type de contrôles).
Il est intéressant de remarquer que dans les langages de programmation fonctionnelle, il est facile d'ajouter de nouvelles opérations, mais difficile d'ajouter des cas pour le type de données. Alors que dans un langage OO c'est l'inverse. C'est l'une des grandes différences conceptuelles entre les deux paradigmes de programmation.
L'idée derrière le problème est que le texte est 1 dimensions. Même si vous avez des lignes et des colonnes, vous pouvez généralement le lire, mot par mot, ligne par ligne. Donc le compilateur.
Et vous essayez de vous représenter une sorte de 2 ou plus de dimensions données. Par exemple, une table en ligne-maire de commande ressemble à ceci:
((A, B, C), (D, E, F), (G, H, I))
Dans cette représentation, il est très facile d'ajouter une nouvelle ligne à la fin, sans toucher le reste:
((A, B, C), (D, E, F), (G, H, I), (J, K, L))
Mais l'ajout de colonnes est problématique un peu, vous avez besoin de toucher à 4 endroits différents:
((A, B, C, M), (D, E, F, N), (G, H, I, O), (J, K, L, P))
En général, vous rencontrez ce problème, dans la pratique, lorsque l'on traite avec des classes abstraites: il est très facile d'ajouter un nouveau sous-type comme un nouveau module, mais lorsque vous ajoutez une nouvelle méthode abstraite, vous aurez besoin de toucher à tous les modules et l'ajouter; vous devez faire la même chose dans de nombreux endroits. Normalement, vous faire des abstractions pour se protéger contre ces des choses répétitives.
Il n'y a pas de solution à ce problème aussi longtemps que vous utilisez 1D représentation.
La solution à ce problème serait d'un éditeur qui peut vous permettre de modifier ces tableaux comme des choses comme une vraie table et non comme du texte (dans un fichier Excel comme la vue, d'où vous pouvez facilement ajouter de nouvelles colonnes et lignes).
Il y a aussi cet article sur la résolution du problème avec Clojure , mais le problème est présenté en Java, donc cela devrait avoir du sens même si vous ne connaissez pas Clojure, en particulier avec l'aide des petits graphiques.