Между прочим, по моим наблюдениям я (возможно кто-то иначе) лучше всего разбираюсь в не известном стороннем коде на двух языках - на Аде и на Модуле-3 (это из опыта). Затем идет, скажем так, обычный хорошо оформелнный C++.
Под разобраться я подразумеваю понять что где находится, для чего предназначено и как это использовать. Не вдаваясь в реализацию без крайней на то необходимости. То есть как пользователь этой либы, а не как контрибьютер.
А на другом полюсе, то есть хуже всего, не приятней всего мне разбираться с кодом stl, boost, Oberon/CP (справедливости ради я беру сейчас только языки-потомки Алгола, то есть из общей группы, имеющие общего предка).
Общее у тех кто в топе пожалуй одно - у них нормально разделена реализация и спецификация модуля, причем спецификация на модуль пишется руками а не генерируется тулзой.
На дне у нас языки и либы в которых реализация и спецификация круто перемешаны в одном файле. Где-то в придонных водах болтаются также C#, Java, D, Go. Первые два на дно не попали просто потому, что их как-то вытягивает крутые IDE. D же "спасает" то, что либ там мало, они пишутся довольно таки высококласными программистами с любовью (а не тупо потому что бабла отвалили), ну и сам язык побогаче той же жабы. Go - "спасает" вменяемая IDE, вменяемые доки, тулзы и опять таки отсутствие тонн говнокода.
Но никакая IDE не дает такого понимания кода какое наличие вменяемой модульности в языках. Такой модульности как в Модуле-3 и Аде.
Я через несколько часов знакомства с Модулой-3 начал нормально ориентироваться в либах и нашел то, что мне было нужно. Причем нашел и запомнил, оно в моск въелось в так, что я до сих пор помню что там и как в плане использования. А чтобы начать ориентироваться в исходниках оберона мне пришлось прочитать книжку Вирта (ну да, эта такая hand made спека по стандартным модулям и либам). Просто взять и начать разбираться в сторонней либе Обероновской очень не просто (если она не тривиальна).