Модульное программирование - это в основном стратегия уменьшения связи в компьютерной программе, в основном за счет инкапсуляции.
До модульного программирования локальная согласованность кода обеспечивалась структурным программированием, но глобальной согласованности не хватало: если вы решили, что ваш словарь для проверки орфографии будет реализован в виде красно-черного дерева, то эта реализация будет подвержена все остальные в программе, так что программист, работающий, скажем, над рендерингом текста, сможет получить доступ к узлам красно-черного дерева, чтобы делать с ними значимые вещи.
Конечно, это стало адом, когда вам нужно было изменить реализацию своего словаря, потому что тогда вам также пришлось бы исправлять код других программистов.
Еще хуже, если бы детали реализации включали глобальные переменные, тогда вы должны были быть очень осторожны с тем, кто их изменил и в каком порядке, иначе возникнут странные ошибки.
Модульное программирование применило ко всему этому инкапсуляцию, отделив реализацию (приватную для модуля) от интерфейса (что может использовать остальная часть программы). Таким образом, модуль словаря может предоставлять абстрактный тип, который будет доступен только через функции модуля, такие как findWord(word,dictionary)
. Кому-то, работающему с модулем словаря, никогда не понадобится заглядывать за пределы этого модуля, чтобы проверить, не использует ли кто-то детали реализации.