Конкатенативни програмски језик
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 језика су резултат његовог хемијског састава синтаксе и семантике:
- Смањење сваког израза који представља поједностављивање једне функције на другу функцију; никада није неопходно да се баве применом функција на објектима.[6]
- Било који подизраз може бити замењен именом који представља исти подизраз. То се у concatenative заједници назива као факторинг и интензивно се користи да поједностави програме на мање делове.
- Синтакса и семантика concatenative језика чине алгебарску структуру моноида.[7]
- Concatenative језици могу бити добро прилагођени на имплементацију инспирисане линеарне логике у којој се смеће никад не производи.[8]
Имплементација
уредиПрви concatenativе програмски језик је Форт, иако је Joy био први језик који се позовао concatenative. Остали concatenative језици су Cat, Enchilada, Factor, Onyx, PostScript, RPL, Staapl, Trith, XY, Kitten, и Om.
Већина постојећих concatenative језика stack-засновани; ово није услов и други модели су предложени.[9][10][11] Concatenative језици се тренутно користе за уграђивање, десктоп и веб програмирање, као циљни језици, као и за истраживачке сврхе.
Већина concatenative језика је динамички откуцано. Једини изузетак је статички откуцан Cat језика.[12]
Види још
уредиРеференце
уреди- ^ „Christopher Diggins: What is a concatenative language”. Drdobbs.com. 31. 12. 2008. Приступљено 01. 07. 2013.
- ^ „Name code not values”. Concatenative.org. Приступљено 13. 09. 2013.
- ^ „Concatenative language”. Concatenative.org. Приступљено 13. 09. 2013.
- ^ „Rationale for Joy, a functional language”. Архивирано из оригинала 15. 01. 2011. г.
- ^ а б „Why Concatenative Programming Matters”. Приступљено 13. 09. 2013.
- ^ „von Thun, Manfred: Joy compared with other functional languages”. Архивирано из оригинала 06. 10. 2011. г.
- ^ „von Thun, Manfred: Mathematical foundations of Joy”. Архивирано из оригинала 31. 07. 2010. г.
- ^ „Henry Baker: Linear Logic and Permutation Stacks — The Forth Shall Be First”. Home.pipeline.com. Архивирано из оригинала 24. 07. 2014. г. Приступљено 01. 07. 2013.
- ^ „The Concatenative Language XY”. Nsl.com. Приступљено 01. 07. 2013.
- ^ „The Enchilada Programming Language”. Enchiladacode.nl. Приступљено 01. 07. 2013.
- ^ „The Om Programming Language”. Om-language.org. Приступљено 01. 07. 2013.
- ^ „Cat Specification”. Cat-language.com. Архивирано из оригинала 05. 02. 2015. г. Приступљено 01. 07. 2013.
Спољашње везе
уреди- concatenative.org: A wiki about concatenative languages
- Staapl: Forth on Scheme for Embedded Controllers
- The Enchilada Programming Language
- The Concatenative Language XY
- The Om Programming Language