Mentre mi istruisco sull'architettura del software e sui modelli di progettazione, ho notato che nella maggior parte dei casi alcune caratteristiche del linguaggio e specifiche di progettazione sono implicite nella spiegazione.
Ad esempio praticamente qualsiasi articolo o libro che illustrerà le idee usando classi e interfacce. Tutto ciò che si può facilmente trovare su questo argomento menzionerebbe oggetti e concetti OOP.
E se la lingua in cui è scritto il sistema non avesse tali concetti? Ad esempio, se uso Python o Node, che sono tipizzati in modo dinamico e non hanno una nozione di interfaccia? Cosa succede se uso TypeScript in cui un'interfaccia è un costrutto effimero, che non esiste in fase di esecuzione? E se sto cercando di abbracciare la programmazione funzionale? Devo ignorare ad esempio SOLID e cercare altri concetti, adatti alla mia lingua?
Se sì, quali sono quelli? Sfortunatamente tutti i paradigmi ben adottati (per quanto ne so) si riferiscono in qualche modo a concetti e tipi di OOP. In caso negativo, quali regole devo seguire per adattare l'architettura generale e i principi di progettazione al mio linguaggio specifico e al mio caso d'uso?
Come descriveresti in generale la dipendenza tra architettura e linguaggio?