Generációk szerint
Első generáció:
– manuális programozástechnika
– gépi kód, alacsonyszintű nyelvek használata
Második generáció:
– magas szintű nyelvek használata
– strukturált programozástechnika megjelenése
Harmadik generáció:
– objektumorientált megközelítés kialakulása
– objektumorientált nyelvek használata, kiegészítések, „ráépülő” nyelvek kifejlődése
Negyedik generáció (4GL):
– vizuális kezelőfelületű nyelvek megjelenése
– eseményvezéreltség kialakulása
– az objektumorientáltság alapvető követelmény
Működés szerint (dolgozatban)
Procedurális nyelv, amelyben a programozó adja meg az utasítások végrehajtásának sorrendjét és mikéntjét. Bármely adatszerkezeten bármely nyelvi utasítás végrehajtható a szintaktikai szabályoknak megfelelően.
Objektumorientált nyelv, amelyben az adatokat és a rajtuk végrehajtható utasításokat egy egységként kezeljük. A programozó korlátozva van abban, hogy milyen utasításokat hajthat végre az adatokon.
Eseményvezérelt nyelv, amely már nem lineáris szerkezetű, az utasítás végrehajtása az objektumhoz tartozó eseményhez kötődik (az utasítás végrehajtás során a programozó korlátozva van abban, hogy hogyan hajtathatja végre azt).
Szerkezet szerint (dolgozatban)
Az imperatív (utasításszerkezetű) nyelvek alapeszközei az utasítások és a változók. A program szövege utasítássorozat, minden utasítás mögött gépi kód áll. Minden program utasítássorozat, amely mögött több gépi utasítás áll. Kötődnek a Neumann-architektúrához, általában fordítóprogramosak. Algoritmikus nyelvek, a programban azt az algoritmust írom le, amelyet a gép végrehajt, és a probléma megoldása így születik meg. A program a hatását a tár egyes területein lévő értékeken fejti ki.
A deklaratív (leírásjellegű) nyelveknél nincs utasításfogalom, a Neumann architektúrától távol áll. Nem algoritmikusak, a programban csak a problémát fogalmazom meg, a megoldást nem, az algoritmus a rendszerbe van beépítve. A tárhoz a programozónak kevés köze van, nem feladata a tár egyes részeinek módosítása.