Изучая архитектуру программного обеспечения и шаблоны проектирования, я заметил, что в большинстве случаев в объяснении подразумеваются некоторые языковые особенности и особенности проектирования.
Например, практически любая статья или книга, иллюстрирующая идеи с использованием классов и интерфейсов. Все, что можно легко найти в этой теме, будет включать объекты и концепции ООП.
Что если язык, на котором написана система, вообще не имеет таких понятий? Например, что если я использую Python или Node, которые динамически типизированы и не имеют понятия интерфейса? Что если я использую TypeScript, где интерфейс - это эфемерная конструкция, которой нет во время выполнения? Что если я пытаюсь использовать функциональное программирование? Должен ли я игнорировать, например, SOLID и искать другие концепции, подходящие для моего языка?
Если да, то что это? К сожалению, все хорошо принятые парадигмы (насколько мне известно) так или иначе относятся к концепциям и типам ООП. Если нет, каким правилам следует следовать при адаптации общих принципов архитектуры и дизайна к моему конкретному языку и сценарию использования?
Как бы вы описали зависимость между архитектурой и языком?