Może używalibyśmy języków z wbudowanym zarządzaniem zależnościami i problem zarządzania zależnościami realizowałby kompilator?
Zabawki typu maven,sbt, gradle itp. są użyteczne, ale i tak są półśrodkami. Np. nie radzą sobie z "library hell" w bardzo dużym projekcie.
Często jest tak, że masz bibliotekę A, która potrzebuje biblioteki C w wersji np. 1.5, i bibliotekę B, która potrzebuje biblioteki C w niekompatybilnej wersji 2.3 i kiedy chcesz użyć obu bibliotek A i B w jednym projekcie nawet do różnych celów, to wcale nie jest łatwo z tego wybrnąć. Ludzie wymyślili różne techniki typu shading czy classloadery, ale to wszystko jest jak sięganie prawą ręką do lewego ucha stojąc na lewej ręce.
Trochę szkoda, że języki programowania poszły tak mocno w kierunku udogodnień tworzenia abstrakcji czy silnych systemów typów, ale jakoś badania ignorują problemy wynikające z tego, że kod nie jest statyczny tylko się zmienia i w efekcie ma wiele wersji. I że różne wersje mogą mieć różny poziom wzajemnej kompatybilności. Fajnie byłoby mieć narzędzie np. weryfikujące statycznie, że API nowej wersji biblioteki jest binarnie kompatybilne z wersją poprzednią. Albo kompilator, który pozwala importować nie tylko po nazwach pakietów/namespaceów, ale również po wybranych wersjach.