Karakteristikken høynivåspråk brukes om et programmeringsspråk som har et høyt abstraksjonsnivå – i motsetning til lavnivåspråk som er nær maskinkode (datamaskinens eget instruksjonssett). Hvor grensen mellom høy- og lavnivåspråk går, synes å være flytende og grensen flytter seg etter hvert som programmeringsspråkene blir mer avanserte. Noe av det som var avansert for en del år siden synes trivielt i dag.

Ordet høy betyr ikke at det er overlegent lavnivåspråk, men derimot at det er mer abstrakt. Generelt sett gjør høynivåspråk kompleks programmering lettere enn et lavnivåspråk. Høynivåspråk inneholder mange innebygde funksjoner som gjør at programmerere ikke trenger å finne opp hjulet på nytt. Prisen for dette er at koden ikke nødvendigvis er like effektiv som kode skrevet i et lavnivåspråk. Som en tommelfingerregel kan en si at et høynivåspråk genererer mer maskinkode enn et lavnivåspråk gjør for å løse den samme oppgaven, selv om dette ikke alltid er tilfelle.

Eksempel på programmeringsspråk som har et høyt abstraksjonsnivå er de objektorienterte språkene (for eksempel Object Ada, C++, C#, Delphi og Java). Tradisjonelt var også programmeringsspråk som FORTRAN og C regnet blant høynivåspråkene. Disse befinner seg i så fall i den lavere enden av skalaen for høynivåspråk.

C blir av noen kalt en «høynivåassembler» på grunn av språkets nære knytning mot maskinvarearkitektur. Denne knytningen og språkets enkelhet har også gjort at det finnes optimale kodegeneratorer for C for nær sagt alle maskintyper og plattformer, og dette utnyttes i blant av andre programmeringsspråk ved å bruke C som et mellomnivå på vei mot maskinkode.

Eksterne lenker rediger