Programmeringsspråksgenerationer är ett sätt att klassificera datorprogrammeringsspråk efter deras totala avstånd från den faktiska maskinkoden som genereras och, på vissa sätt, deras användarvänlighet av en programmerare. Det finns tre allmänt accepterade programmeringsspråksgenerationer och ett fåtal vars definitioner inte är tydligt överens om. Ett första generationens datorprogrammeringsspråk är rak maskinkod utan abstraktion. Andra generationens språk är abstraherad maskinkod, såsom assemblerspråk, som är knutna till en specifik systemarkitektur men som är läsbara för människor och måste kompileras. Tredje generationens språk är den vanligaste formen, inklusive standardspråk som C och Java®, medan språk som är fjärde generationens eller senare har olika definitioner.
När generationer av programmeringsspråk först skapades för att beskriva språk, användes termen mest för att indikera tredje generationens språk. Detta innebär att första och andra generationens språk endast klassificerades som sådana för att lyfta fram kapaciteten hos tredje generationens språk. Den fjärde och femte programmeringsspråksgenerationen användes till stor del som termer i samband med marknadsföring av språk som var under utveckling. Inom marknadsföring och vissa akademiska områden används högre numrerade språkgenerationer på ett icke-standardiserat sätt för att indikera att ett språk är nyare eller har fler funktioner än ett annat.
Den första av programmeringsspråksgenerationerna indikerar maskinkod. Detta innebär att man skriver ett program som en sekvens av bytes eller, i extrema fall, bitar som kan exekveras direkt av en dator. I de flesta fall hänvisar detta till ett system som accepterar input genom hårdkodade switchar eller andra fysiska mekanismer.
Andra generationens programmeringsspråk anses vara assemblerspråk. Dessa är språk som är skrivna med läsbar kod och kommandon som fortfarande är knutna till specifika systemarkitekturer men som presenterar en lättare utvecklingsmiljö och viss abstraktion. Assembly-språk slutade aldrig att användas, från och med 2011, och är inte bara extremt kraftfulla utan kan också användas som inline-satser i programmeringsspråk på högre nivå, vilket gör uppfattningen att genereringen av ett språk är lika med dess hastighet eller kraft.
Tredje generationens programmeringsspråk frikopplade koden från processorn i ännu större utsträckning, vilket möjliggjorde utvecklingen av kod som använde mer läsbara uttalanden. Dessutom utvecklades kompilatorer som kunde förvandla en enda rad kod till flera sammansättningssatser över flera plattformar och, så småningom, till dussintals eller fler maskinkodinstruktioner. Nästan alla datorspråk som kan kompilera inbyggda binära körbara filer och bibliotek anses vara tredje generationens språk.
I allmänhet ses en fjärde generationens språk som ett språk som är avsett att använda någon typ av programmeringsspråk som är väldigt naturligt för användaren. Det kan också definieras som ett språk som använder visuella element för att bygga det slutliga programmet. En tredje definition är ett programmeringsspråk som är byggt för ett specifikt syfte, till exempel ett databasprogrammeringsspråk eller ett språk för snabb applikationsutveckling (RAD).
En lös definition av ett femte generationens datorspråk är en som gör att en programmerare kan presentera ett problem för datorn som den sedan försöker lösa. De flesta språk som anges som ett femte generationens språk är mestadels akademiska till sin natur. Andra generationer av programmeringsspråk, som sjätte och sjunde, har använts av kommersiella språkutvecklare i marknadsföringssyfte.