Existe-t-il des différences architecturales majeures lors de la conception d'applications qui seront construites sur des langages statiques (tels que C # ou Java) et des langages dynamiques (tels que Ruby ou Python)?
Non.
Il est légèrement plus facile d'écrire des frameworks sophistiqués pour les langages dynamiques. Mais ce n'est pas une chose d'application.
Quelles sont les possibilités de conception qui pourraient être un bon choix pour un type qui est mauvais pour l'autre?
Aucun, vraiment.
Vous pouvez écrire de bonnes choses dans les deux langues.
Y a-t-il des fonctionnalités utiles réalisables avec un type qui n'est pas avec l'autre (dans la conception et l'architecture, bien sûr)?
Non.
La différence est que les langages dynamiques sont "écrire, exécuter, corriger". Vous pouvez expérimenter et réparer rapidement.
Les langages statiques sont "écrire, compiler, construire, exécuter, corriger". Vous ne pouvez pas expérimenter aussi facilement.
En dehors de cela, ils sont presque identiques dans leurs capacités.
Existe-t-il des modèles de conception spécifiques à la dynamique?
Peut être. Le Python eval()
et les execfile()
fonctions - en quelque sorte - indiquent une fonctionnalité de langage dynamique qui est difficile (mais loin d'être impossible) à gérer dans un langage statique. Il faudrait beaucoup plus de lignes de code pour compiler et exécuter du code dans le même espace de processus.
Ce n'est pas spécifique au langage dynamique. C'est juste plus simple.