Решение №1.

Самым первым решением этой проблемы стал модульное программирование. Ты пишешь какой-то кусок кода, оформляешь его в виде модуля, а потом просто используешь его в своих программах. Все прекрасно и удобно, а главное, что все довольны. Теперь не надо каждый раз выдумывать велосипед, просто добавил к своей программе определенный модуль и без проблем используй код, когда-то написанный тобой или кем-то другим.

Казалось, что это было самое простое и самое эффективное решение. Но все было прекрасно, пока не появилась многозадачность. Вот тут программисты и простые пользователи заметили, что еще не все так эффективно и полно места, куда можно приложить свои руки для оптимизации выбранного решения.