Ну да, в виртовском Паскале так и было. В TP модульность появилась начиная с версии 4 (или 5?).

Дополню ещё. Модули - это базовая единица декомпозиции. Любой электронщик грамотно обоснует почему лучше иметь модульную и блочную конструкцию, чем схемный хаос. Насколько модули это хорошо при проектировании и для дальнейшего ремонта и обслуживания. Правда, это бесполезно объяснять радиолюбителю, паяющему схему из двух транзисторов. Андрей, не в обиду.

Концепт модульности происходит из желания разделить задачу на подзадачи. Разложить всё по полочкам, упорядочить. Процедура - это элементарная единица, а модуль - композитная, составная. Из-за нарушения принципов модульности мы имеем уродливые монолитные решения в IT, которые потребляют много памяти. Взять dll. Это самодостаточная единица? Нет. Чтобы её заюзать - нужен сишный хидер или биндинг. То есть там есть набор вызовов, а описатели параметров и проч. вынесены отдельно. Всё хранится не вместе, из-за чего получаем рассинхронизацию (старый биндинг отстаёт от новой версии). Разумеется, есть целая куча причин, по которым в электронике модульности достичь проще, чем в программировании.