Jezikovno usmerjeno programiranje (LOP) je vrsta programskega jezika, ki ga definira uporabnik, odvisno od domene, za katero programira. Domena je pomembna pri definiranju jezikovno usmerjenega programiranja, zato mora biti posebej navedena, kdaj uporabnik začne uporabljati ta jezik. LOP običajno temelji na večji vrsti programskega jezika, vendar to ni vedno tako. LOP je narejen posebej za domeno in ima veliko prilagodljivih področij, zato je ta jezik običajno slab pri povečanju velikosti za velike in zapletene težave. Preden je ta jezik uporaben, mora uporabnik tudi ročno definirati in prevesti jezik.
V širšem smislu lahko programske jezike ločimo na domensko specifične ali splošne jezike. Jezikovno usmerjeno programiranje sodi med prvo, kar pomeni, da mora biti določeno za določeno domeno. Ta domena se nanaša na to, kje se bo program uporabljal in s kakšnimi vrstami težav bo jezik delal in jih reševal. Čeprav ta ni tako vsestranski kot splošni jezik, pogosto olajša dokončanje programiranja.
Večina jezikovno usmerjenih programskih jezikov najprej temelji na večjem splošnem programskem jeziku. To je zato, ker je lažje zgraditi jezik, ki temelji na drugem, in uporabnik, ki pozna splošni jezik, bi moral lažje začeti z LOP. Glavna razlika med LOP in izvirnim splošnim jezikom so oznake, številni vidiki programskega jezika pa temeljijo na oznakah, ki jih uporabnik navede, da jih želi uporabiti, s čimer se jezik preoblikuje v uporabniške specifikacije.
Ker je domensko specifičen in temelji na specifikaciji uporabnika, predstavlja številne prednosti, vendar je ena od slabosti tega sistema pomanjkanje skaliranja. Ko gre za manjše težave, jezikovno usmerjeno programiranje ne bi smelo imeti težav pri delu in reševanju težave. Hkrati so večje težave običajno intenzivnejše, kot jih ta jezik zmore, in običajno se je bolje držati večjega splošnega jezika, če je potrebno skaliranje.
Druga težava pri jezikovno usmerjenem programiranju je delo, ki je potrebno pred uporabo jezika. Programski jezik je običajno na voljo za uporabo z malo dela ali brez dela, vendar LOP zahteva, da uporabnik določi oznake in razdelke, kar lahko traja nekaj časa. Večja težava je, da bo moral uporabnik zgraditi prevajalnik po meri, da bo programski jezik deloval, kar je lahko težko za novega uporabnika.