Programiranje na visoki ravni vključuje pisanje računalniškega programa v jeziku, ki programerju preprečuje, da bi se neposredno ukvarjal s strojno opremo določenega računalnika, ki se programira. Ta abstrakcija omogoča programerju, da se bolj osredotoči na načrtovanje, potek in funkcionalnost programa in manj na razvrščanje osnovnih sistemskih virov za dosego teh ciljev. Programski jezik na visoki ravni lahko upravlja s pomnilnikom ali vnosom in izhodom na način, da mora programer razumeti samo koncept in ne posebnosti strojne opreme danega sistema. V nasprotju s programiranjem na visoki ravni je nizkonivojsko programiranje, pri katerem je med napisano računalniško kodo in dejanji, ki jih izvaja računalnik, malo, če sploh sploh.
Razvoj programskih jezikov na visoki ravni je bil odgovor na potrebo po človeku berljivih datotekah izvorne kode, ki bi jih bilo mogoče enostavno razumeti in spreminjati. Z uporabo rešitev naravnega jezika postane izvorna koda na visoki ravni veliko bolj berljiva kot zbirni jezik ali drugi strojni jeziki. Z naraščanjem velikosti računalniških programov je praktičnost pisanja celotnih programov v jezikih nizke ravni postala manj izvedljiva.
V zameno za programiranje v jeziku, ki je berljiv in ne zahteva nizke ravni znanja strojne opreme, obstaja koncept, znan kot kazen abstrakcije. To opisuje povečane zahteve glede procesorske moči, uporabe pomnilnika in drugih vrst obremenitev, potrebnih za zagon končnega programa. To še posebej velja za tolmačene jezike, ki morajo za izvajanje programa izvajati tolmač, kar v bistvu zahteva, da se dve aplikaciji izvajata hkrati.
Prevedeni jeziki so programski jeziki na visoki ravni, v katerih se berljive izvorne datoteke pretvorijo v strojno kodo, ki jo lahko bere računalnik. Medtem ko prevedeni jezik trpi manj zaradi abstrakcije kot interpretirani jezik, se še vedno zanaša na vnaprej prevedene knjižnice in funkcije avtomatskega prevajalnika. Ti elementi lahko škodijo optimizaciji kompleksnega programa, pri katerem je uspešnost ključnega pomena.
Uporaba programskih jezikov na visoki ravni je olajšala tudi uporabniku prijazno programiranje. To olajša enostavnost dodajanja standardiziranih elementov v uporabniški vmesnik, ki ga ponuja večina jezikov na visoki ravni. Namesto razvijanja kode po meri za okenski sistem ali gumb vmesnika vsakič, ko ga potrebujete, lahko znane elemente enostavno postavite v vmesnik z le nekaj vrsticami kode. To omogoča programe, ki se jih končni uporabniki lažje naučijo ali takoj seznanijo.
Uporaba izraza “programiranje na visoki ravni” je relativna glede na izkušnje programerja. Obstaja nekaj vmesnih jezikov, ki so nekoč veljali za nizke ravni, zdaj pa niso. Podobno si nekateri jeziki visoke ravni delijo vidike z jeziki nizke ravni, kar zabrisuje mejo med njimi.