Дальнейшая эволюция языков программирования привела к появлению языков высокого уровня, что позволило отвлечься от системы команд конкретного типа процессора.
При этом происходило смещение от программирования деталей к программированию компонентов, развитие инструментов программирования и возрастание сложности программных систем.
Также развивался подход или стиль написания программ.
В начале использовалось процеду́рное программи́рование, при котором последовательно выполняемые операторы собирались в подпрограммы.
При этом данные и процедуры для их обработки формально не были связаны.
Как следствие возрастания сложности программного обеспечения появилось структу́рное программи́рование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.
И наконец появилось объектно-ориентированное программирование – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.
Событи́йно-ориенти́рованное программи́рование – парадигма программирования, в которой выполнение программы определяется событиями – действиями пользователя, сообщениями других программ и потоков, и событиями операционной системы.
Компонентно-ориентированное программирование – парадигма программирования, опирающаяся на понятие компонента – независимого модуля исходного кода программы, предназначенного для повторного использования и развёртывания, и реализующегося в виде множества языковых конструкций.
В 1960-х годах двумя наиболее популярными языками программирования были COBOL и Fortran.
Эти языки следовали императивной парадигме, которая разбивала большие программы на более мелкие программы, называемые подпрограммами, которые похожи на методы в Java.
В 1960-х, время обработки компьютера было дорогостоящим.
Поэтому было важно максимизировать производительность обработки.
Это достигалось за счет наличия глобальных данных, так как они все располагались в одном месте в памяти компьютера для программы.
С глобально доступными переменными все подпрограммы могли получить к ним доступ для выполнения необходимых вычислений.
Однако при этом возникали некоторые проблемы.
С глобальными данными возможно, что изменения в данных могут иметь побочные эффекты для программы.
Иногда подпрограммы запускались с теми данными, которые были не такими, как ожидалось.
Необходимость лучшего управления данными привела к изменениям в императивном программировании и появлению таких языков, как Algol 68 и Pascal в 1970-х годах.
Была введена идея локальных переменных.
Подпрограммы назывались процедурами, которые могут содержать вложенные процедуры.
И каждая процедура могла иметь свои собственные переменные.
Алгол