En m'instruisant sur l'architecture logicielle et les modèles de conception, j'ai remarqué que dans la plupart des cas, certaines fonctionnalités de langage et spécificités de conception sont impliquées dans l'explication.
Par exemple, pratiquement n'importe quel article ou livre qui illustrera les idées à l'aide de classes et d'interfaces. Tout ce que l'on peut facilement trouver sur ce sujet mentionnerait les objets et les concepts de POO.
Et si la langue dans laquelle le système est écrit n'a pas du tout de tels concepts? Par exemple, si j'utilise Python ou Node, qui sont typés dynamiquement et n'ont pas de notion d'interface? Que faire si j'utilise TypeScript où une interface est une construction éphémère, qui n'existe pas au moment de l'exécution? Et si j'essaie d'embrasser la programmation fonctionnelle? Dois-je ignorer par exemple SOLID et chercher d'autres concepts adaptés à ma langue?
Si oui, quels sont-ils? Malheureusement, tous les paradigmes bien adoptés (pour autant que je sache) se réfèrent en quelque sorte aux concepts et aux types de POO. Si non, quelles règles dois-je suivre lors de l'adaptation de l'architecture générale et des principes de conception à mon langage particulier et à mon cas d'utilisation?
Comment décririez-vous en général la dépendance entre l'architecture et le langage?