Ucząc się o architekturze oprogramowania i wzorcach projektowych zauważyłem, że w większości przypadków wyjaśniono niektóre cechy języka i specyfikę projektu.
Np. Praktycznie każdy artykuł lub książka na ten temat zilustruje pomysły za pomocą klas i interfejsów. Wszystko, co można łatwo znaleźć na ten temat, wspomina o obiektach i koncepcjach OOP.
Co jeśli język, w którym napisany jest system, w ogóle nie ma takich pojęć? Np. Co się stanie, jeśli użyję języka Python lub węzła, które są dynamicznie wpisywane i nie mają pojęcia interfejsu? Co się stanie, jeśli użyję TypeScript, gdy interfejs jest efemeryczną konstrukcją, która nie istnieje w środowisku wykonawczym? Co jeśli próbuję objąć programowanie funkcjonalne? Czy powinienem zignorować np. SOLID i poszukać innych pojęć odpowiednich dla mojego języka?
Jeśli tak, jakie to są? Niestety wszystkie dobrze przyjęte paradygmaty (o ile mi wiadomo) w pewien sposób odnoszą się do pojęć i typów OOP. Jeśli nie, jakie zasady powinienem stosować, dostosowując ogólne zasady architektury i projektowania do mojego konkretnego języka i przypadku użycia?
Jak ogólnie opisałbyś zależność między architekturą a językiem?