61 votes

Qu'est-ce que le «problème d'expression»?

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.

53voto

Daniel Velkov Points 9244

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.

22voto

Calmarius Points 2626

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

3voto

Jared Updike Points 3946

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X