Veuillez considérer que les besoins d'Harper pour enseigner un cours d' introduction au programme CS sont très différents des besoins d'un projet réel . Son travail consiste à enseigner des notions fondamentales (par exemple la modularité, le parallélisme, l'induction) aux étudiants de première année. En tant que tel, il est très important que la langue (et le paradigme) choisis puissent exprimer ces concepts avec aussi peu de cérémonie (syntaxique et conceptuelle) que possible. La familiarité, la prise en charge des outils, les bibliothèques disponibles, les performances d'exécution, etc. sont complètement hors de propos dans ce contexte. Veuillez donc garder cela à l'esprit lorsque vous envisagez les éléments suivants ...
L'opinion selon laquelle OO est anti-modulaire résulte du grand nombre de dépendances à d'autres classes, même avec des objets de classes bien conçues. Que ce soit un problème - même aux yeux des partisans de l'OO - devient clair lorsque vous regardez la prolifération des cadres d'injection de dépendance , des articles, des livres et des articles de blog au cours des dernières années (la montée des simulations et des talons est également intéressante).
Un autre indice est l' importance des modèles de conception et la complexité de leur mise en œuvre - par rapport à d'autres paradigmes de programmation - par exemple, usines, constructeur, adaptateur, pont, décorateur, façade, commande, itérateur, médiateur, observateur, stratégie et méthode de modèle et peut-être les composites sont tous en quelque sorte liés à l'amélioration de la modularité du code OO.
L' héritage est également problématique (par exemple Fragile base de classe Problème polymorphisme) et (sous - type) à un déversée séduit la mise en œuvre d'un algorithme entre plusieurs classes, où les changements peuvent répercuter sur toute la chaîne d'héritage (haut et bas!).
L'accusation d'être anti-parallèle est liée à l' accent mis sur l'état par rapport au calcul (aka. Mutabilité vs immuabilité). Le premier le rend plus impliqué pour exprimer les dépendances des sous-calculs (ce qui est le point de vue de Harper sur le parallélisme!) Car vous ne pouvez généralement pas déduire de l'emplacement où l'état est géré (aka. Le fichier, où la variable d'instance est déclarée) quels acteurs extérieurs va le changer à quel moment.
L'accent mis sur l'immuabilité et le calcul rend l'expression des dépendances des sous-calculs beaucoup plus facile, car il n'y a pas de gestion d'état, juste des fonctions / calculs qui sont combinés à l'endroit où vous souhaitez exprimer les dépendances des sous-calculs.