Kõrgetasemeline programmeerimine hõlmab arvutiprogrammi kirjutamist keeles, mis ei lase programmeerijal otseselt tegeleda konkreetse programmeeritava arvuti riistvaraga. See abstraktsioon võimaldab programmeerijal keskenduda rohkem programmi ülesehitusele, kulgemisele ja funktsionaalsusele ning vähem põhiliste süsteemiressursside jagamisele nende eesmärkide saavutamiseks. Kõrgetasemeline programmeerimiskeel suudab käsitleda mäluhaldust või sisendit ja väljundit nii, et programmeerijal on vaja mõista ainult antud süsteemi kontseptsiooni, mitte aga riistvara spetsiifikat. Erinevalt kõrgetasemelisest programmeerimisest on madal programmeerimine, mille puhul on kirjutatud arvutikoodi ja arvuti sooritatavate toimingute vahel vähe vahet, kui üldse.
Kõrgetasemeliste programmeerimiskeelte arendamine oli vastuseks vajadusele inimloetavate lähtekoodifailide järele, mida oleks lihtne mõista ja muuta. Loomuliku keele lahendusi kasutades muutub kõrgetasemeline lähtekood palju loetavamaks kui assemblerkeel või muud masinkeeled. Arvutiprogrammide suuruse kasvades muutus tervete programmide kirjutamine madala tasemega keeltes vähem teostatavaks.
Vastutasuks programmeerimisele keeles, mis on inimestele loetav ja mis ei nõua madala tasemega riistvarateadmisi, on olemas mõiste, mida nimetatakse abstraktsioonitrahviks. See kirjeldab suurenenud nõudeid töötlemisvõimsusele, mälukasutusele ja muudele lisakuludele, mis on vajalikud lõpliku programmi käitamiseks. See kehtib eriti tõlgitud keelte kohta, mis peavad programmi käivitamiseks käivitama tõlgi, mis eeldab sisuliselt, et kaks rakendust peavad töötama samal ajal.
Kompileeritud keeled on kõrgetasemelised programmeerimiskeeled, milles loetavad lähtefailid muudetakse masinkoodiks, mida arvuti saab lugeda. Kuigi kompileeritud keel kannatab vähem abstraktsioonikaristust kui tõlgendatud keel, tugineb see siiski eelnevalt koostatud teekidele ja automatiseeritud kompilaatori funktsioonidele. Need elemendid võivad kahjustada keeruka programmi optimeerimist, mille puhul jõudlus on ülioluline.
Kõrgetasemeliste programmeerimiskeelte kasutamine on muutnud ka kasutajasõbraliku programmeerimise lihtsamaks. Seda hõlbustab standardsete elementide lisamise lihtsus kasutajaliidesesse, mida enamik kõrgetasemelisi keeli pakuvad. Selle asemel, et töötada välja kohandatud koodi aknasüsteemi või liidese nupu jaoks iga kord, kui seda vaja läheb, saab tuttavaid elemente hõlpsasti paigutada vaid mõne koodireaga liidesesse. See võimaldab kasutada programme, mida lõppkasutajad saavad hõlpsamini õppida või millega nad saavad kohe tuttavaks.
Mõiste “kõrgetasemeline programmeerimine” kasutamine on seotud programmeerija kogemustega. On mõned vahekeeled, mida kunagi peeti madala tasemega keeleks, kuid mida praegu ei peeta. Samuti jagavad mõned kõrgetasemelised keeled aspekte madala taseme keeltega, muutes nendevahelise piiri häguseks.