Mentre mi dedico all'architettura del software e ai modelli di progettazione, ho notato che nella maggior parte dei casi alcune caratteristiche linguistiche e specifiche del design sono implicite nella spiegazione.
es. praticamente qualsiasi articolo o libro su di esso illustrerà le idee usando classi e interfacce. Tutto ciò che si può facilmente trovare su questo argomento menzionerebbe oggetti e concetti OOP.
Cosa succede se la lingua in cui è scritto il sistema non ha affatto tali concetti? Per esempio. cosa succede se uso Python o Node, che sono tipizzati dinamicamente e non hanno una nozione di interfaccia? Cosa succede se uso TypeScript in cui un'interfaccia è un costrutto effimero, che non esiste in runtime? Cosa succede se sto cercando di abbracciare la programmazione funzionale? Dovrei ignorare ad es. SOLIDO e cerchi altri concetti, adatti alla mia lingua?
Se sì, quali sono quelli? Sfortunatamente tutti i paradigmi ben adottati (per quanto ne so) si riferiscono a concetti e tipi di OOP in qualche modo. Se no, quali regole dovrei seguire per adattare i principi generali dell'architettura e del design alla mia lingua e al mio caso d'uso?
In generale, come descriveresti la dipendenza tra l'architettura e il linguaggio?