Programiranje na visokoj razini uključuje pisanje računalnog programa na jeziku koji programeru sprječava da se mora izravno baviti hardverom određenog računala koje se programira. Ova apstrakcija omogućuje programeru da se više usredotoči na dizajn programa, tijek i funkcionalnost, a manje na raspoređivanje osnovnih resursa sustava za postizanje tih ciljeva. Programski jezik visoke razine može upravljati memorijom ili unosom i izlazom na način da programer treba samo da razumije koncept, a ne hardverske specifičnosti danog sustava. Za razliku od programiranja na visokoj razini je programiranje na niskoj razini, u kojem postoji malo, ako uopće ima, razdvajanja između napisanog računalnog koda i radnji koje računalo izvodi.
Razvoj programskih jezika visoke razine bio je odgovor na potrebu za ljudskim čitljivim datotekama izvornog koda koje bi se mogle lako razumjeti i mijenjati. Korištenjem rješenja prirodnog jezika, izvorni kod visoke razine postaje daleko čitljiviji od asemblerskog jezika ili drugih strojnih jezika. Kako je veličina računalnih programa napredovala, praktičnost pisanja cijelih programa na jezicima niske razine postajala je sve manje izvediva.
U zamjenu za programiranje na jeziku koji je čovjeku čitljiv i koji ne zahtijeva poznavanje hardvera niske razine, postoji koncept poznat kao kazna apstrakcije. Ovo opisuje povećane zahtjeve u procesorskoj snazi, upotrebi memorije i drugim vrstama nadopterećenja potrebnih za izvođenje konačnog programa. To se posebno odnosi na interpretirane jezike koji moraju pokretati interpreter da bi izvršili program, što u biti zahtijeva da se dvije aplikacije moraju izvoditi u isto vrijeme.
Prevedeni jezici su programski jezici visoke razine u kojima se čitljive izvorne datoteke pretvaraju u strojni kod koji računalo može čitati. Iako prevedeni jezik trpi manje kazne apstrakcije nego interpretirani jezik, on se i dalje oslanja na unaprijed kompajlirane biblioteke i automatizirane funkcije prevoditelja. Ti elementi mogu naštetiti optimizaciji složenog programa u kojem je izvedba od vitalnog značaja.
Korištenje programskih jezika visoke razine također je olakšalo programiranje prilagođeno korisniku. To je olakšano jednostavnošću dodavanja standardiziranih elemenata korisničkom sučelju koje pruža većina jezika visoke razine. Umjesto razvoja prilagođenog koda za prozorski sustav ili gumb sučelja svaki put kada je potreban, poznati elementi mogu se lako postaviti u sučelje sa samo nekoliko redaka koda. To omogućuje programe koje krajnji korisnici mogu lakše naučiti ili s kojima se mogu odmah upoznati.
Upotreba izraza “programiranje na visokoj razini” relativna je na iskustvu programera. Postoje neki posrednički jezici koji su se nekada smatrali niskim razinama, ali sada nisu. Isto tako, neki jezici visoke razine dijele aspekte s jezicima niske razine, brišući granicu između njih.