Concatenative програмски језик је прећутно програмирање рачунарског програмског језика у којој сви изрази означавају функције, а јукстапозиција израза означава сложену функцију.[1] Concatenative програмирање замењује функцију апликација која је уобичајена у другим стиловима програмирања, са сложеном функцијом као подразумеван начин да се изгради подпрограм.
На пример, низ операција у апликативном језику изгледа овако:
y = foo(x)
z = bar(y)
w = baz(z)
... је написано на concatenative језику као низ функција, без параметара:[2]
foo bar baz
Функције и процедуре написане у concatenative стилу нису програмиране на нивоу вредности, односно они обично не представљају податаке структуре оне раде са експлицитним именима и идентификаторима; уместо тога, оне су програмиране нивоу функција - функција је дефинисана као цевовод, низ операција које користи параметре из имплицитне структуре података која садржи све функције раде, и враћа резултате функција у тој заједничкој структури, тако да се користити следећи оператер.[3]
Комбинација композиције, семантике са синтаксом која огледа овакву семантику чини concatenative језик веома погодан за алгебраикеску манипулацију програма;[4] иако може бити тешко да се напишу математички изрази директно у њих.[5] Соncatenative језици се могу имплементирати на ефикасан начин са стек машином, па су онда заједничка стратегија за програмирање виртуелне машине.[5]
Већи део оригиналног рада на теорији concatenativе језика је извршио Манфред фон Тун.
Особине concatenative језика су резултат његовог хемијског састава синтаксе и семантике:
Први concatenativе програмски језик је Форт, иако је Joy био први језик који се позовао concatenative. Остали concatenative језици су Cat, Enchilada, Factor, Onyx, PostScript, RPL, Staapl, Trith, XY, Kitten, и Om.
Већина постојећих concatenative језика stack-засновани; ово није услов и други модели су предложени.[9][10][11] Concatenative језици се тренутно користе за уграђивање, десктоп и веб програмирање, као циљни језици, као и за истраживачке сврхе.
Већина concatenative језика је динамички откуцано. Једини изузетак је статички откуцан Cat језика.[12]