While educating myself about software architecture and design patterns I’ve noticed that in most cases some language features and design specifics are implied in the explanation.
E.g. practically any article or book on that will illustrate the ideas using classes and interfaces. Everything one can easily find on this topic would mention objects and OOP concepts.
What if the language, in which the system is written doesn’t have such concepts at all? E.g. what if I use Python or Node, which are dynamically typed and don’t have a notion of interface? What if I use TypeScript where an interface is an ephemeral construct, which doesn’t exist in runtime? What if I’m trying to embrace functional programming? Should I ignore e.g. SOLID and look for other concepts, suitable for my language?
If yes, what are those? Unfortunately all the well-adopted paradigms (as far as I’m aware) refer to OOP concepts and types in some way. If no, which rules should I follow when adapting general architecture and design principles to my particular language and use case?
How in general would you describe the dependency between architecture and the language?