
Zazwyczaj programista nadal pisze w języku asemblera jedno polecenie dla każdego rozkazu, który ma być wykonany przez maszynę. Jest nadal mocno związany logiczną strukturą maszyny, której używa, chociaż pisze wówczas program o jeden stopień powyżej języka maszynowego. Następnym krokiem było rozwinięcie kodów, które odsuwają programistę jeszcze dalej od maszyny, pozwalając mu pisać programy w języku bardziej zmatematyzowanym. Kody te zwane są’ „językami wysokiego poziomu” i tłumaczone na rozkazy maszynowe nie przez relatywnie proste języki asemblerowe, ale przez skomplikowane programy zwane kompilatorami. Pierwszym takim językiem, który się szeroko rozpowszechnił, był w końcu lat pięćdziesiątych FORTRAN.