Lata 60. XX w. Ole-Johan Dahl i Kristen Nygaard opracowali język Simula; pierwszy przykład obiektowego języka programowania; Simula wprowadziła również pojęcie współprogramów. W 1964 r. Peter Landin jako pierwszy zastosował rachunek lambda Churcha do modelowania języków programowania. Wprowadził maszynę SECD, która „interpretuje” wyrażenia lambda. W 1965 r. Landin wprowadził konstrukcję programistyczną operator J (ang. J operator). W 1966 roku Landin wprowadził ISWIM, abstrakcyjny język programowania w artykule The Next 700 Programming Languages. Miał on wpływ na ewolucję projektowania przyszłych języków, która doprowadziła do powstania języka Haskell. W 1966 r. Corrado Böhm wprowadził język programowania CUCH (Curry-Church). W 1967 r. Christopher Strachey opublikował wpływowe notatki z wykładu Podstawowe pojęcia w językach programowania, wprowadzając terminologię R-wartości, L-wartości, parametryczny polimorfizm i polimorfizm ad hoc. W 1969 r. J. Roger Hindley opublikował Główny schemat typów obiektu w logice kombinatorycznej, później uogólniony na algorytm wnioskowania typu Hindley–Milner. W 1969 r. Tony Hoare wprowadził Logikę Hoare’a, formę semantyki aksomatycznej. W 1969 r.