Конкатенативни програмски језик

Из Википедије, слободне енциклопедије
(преусмерено са Concatenative програмски језик)
Иди на навигацију Иди на претрагу

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]

Види још[уреди]

Референце[уреди]

  1. ^ „Christopher Diggins: What is a concatenative language”. Drdobbs.com. 31. 12. 2008. Приступљено 01. 07. 2013. 
  2. ^ „Name code not values”. Concatenative.org. Приступљено 13. 09. 2013. 
  3. ^ „Concatenative language”. Concatenative.org. Приступљено 13. 09. 2013. 
  4. ^ „Rationale for Joy, a functional language”. Архивирано из оригинала на датум 15. 01. 2011. 
  5. 5,0 5,1 „Why Concatenative Programming Matters”. Приступљено 13. 09. 2013. 
  6. ^ „von Thun, Manfred: Joy compared with other functional languages”. Архивирано из оригинала на датум 06. 10. 2011. 
  7. ^ „von Thun, Manfred: Mathematical foundations of Joy”. Архивирано из оригинала на датум 31. 07. 2010. 
  8. ^ „Henry Baker: Linear Logic and Permutation Stacks — The Forth Shall Be First”. Home.pipeline.com. Приступљено 01. 07. 2013. 
  9. ^ „The Concatenative Language XY”. Nsl.com. Приступљено 01. 07. 2013. 
  10. ^ „The Enchilada Programming Language”. Enchiladacode.nl. Приступљено 01. 07. 2013. 
  11. ^ „The Om Programming Language”. Om-language.org. Приступљено 01. 07. 2013. 
  12. ^ „Cat Specification”. Cat-language.com. Архивирано из оригинала на датум 05. 02. 2015. Приступљено 01. 07. 2013. 

Спољашње везе[уреди]