Többelvű programozási nyelv alatt olyan nyelvet értünk, amely több mint egy programozási módszert (ún. paradigmát) támogat. Ilyen elvek például az objektumorientált, a generikus és a funkcionális programozás. Az ilyen nyelvek azt a célt szolgálják, hogy a programozó a céljához leginkább megfelelő eszközt használhassa fel, mivel egy-egy paradigma nem biztos, hogy minden téren a legjobbat tudja nyújtani.
Jó példa többelvű programozási nyelvre a C++, amely egyaránt támogatja az imperatív, objektumorientált és generikus stílust is.
Néhány fontosabb elv felsorolása:
- Imperatív programozás: meghatározott parancsokkal változtatja meg a program állapotát, változókkal dolgozik.[1]
- Deklaratív programozás: kijelentő módú, egyenletekből, állításokból áll, változók helyett rögzített értékű memóriahelyek vannak, amelyek értéke a program írásakor még nem ismert. Pl. különböző xml nyelvek segítségével (pl. xslt) létrehozott program.
- Objektumorientált programozás: osztályokat és öröklődést használ.
- Funkcionális programozás: matematikai kifejezésekkel dolgozik.[2]
- Vizuális programozás: a program elemeit grafikus felületen módosítja.[3]
- Párhuzamos programozás: több szálon futó programok, amelyek egymással is kommunikálnak.[4]
- Logikai programozás: logikai állításokkal alkotja meg a program modelljét.[5]
- Aspektusorientált programozás(AOP): a programot többféle aspektussal lehet bővíteni új funkciókat, az eredeti kód módosítása nélkül. Tipikus ilyen feladat bizonyos osztályok egy-egy metódusának kiloggolás/trace-elése.
- Eseményvezérelt programozás: A program események hatására változtatja meg az állapotát.
- Generikus programozás: A program általános típusokkal / metatipusokkal felépített, a normál típusok cserélhetők. Az algoritmusok kiemelhetők ilyen módon konkrét típusoktól függetleníthetők. Pl. a C++ Standard Template Library-ja, Java Generics-jével kibővített Collection Frameworkje.