Pređi na sadržaj

Konkatenativni programski jezik

S Vikipedije, slobodne enciklopedije

Concatenative programski jezik je prećutno programiranje računarskog programskog jezika u kojoj svi izrazi označavaju funkcije, a jukstapozicija izraza označava složenu funkciju.[1] Concatenative programiranje zamenjuje funkciju aplikacija koja je uobičajena u drugim stilovima programiranja, sa složenom funkcijom kao podrazumevan način da se izgradi podprogram.

Primer

[uredi | uredi izvor]

Na primer, niz operacija u aplikativnom jeziku izgleda ovako:

y = foo(x)
z = bar(y)
w = baz(z)

... je napisano na concatenative jeziku kao niz funkcija, bez parametara:[2]

foo bar baz

Funkcije i procedure napisane u concatenative stilu nisu programirane na nivou vrednosti, odnosno oni obično ne predstavljaju podatake strukture one rade sa eksplicitnim imenima i identifikatorima; umesto toga, one su programirane nivou funkcija - funkcija je definisana kao cevovod, niz operacija koje koristi parametre iz implicitne strukture podataka koja sadrži sve funkcije rade, i vraća rezultate funkcija u toj zajedničkoj strukturi, tako da se koristiti sledeći operater.[3]

Kombinacija kompozicije, semantike sa sintaksom koja ogleda ovakvu semantiku čini concatenative jezik veoma pogodan za algebraikesku manipulaciju programa;[4] iako može biti teško da se napišu matematički izrazi direktno u njih.[5] Soncatenative jezici se mogu implementirati na efikasan način sa stek mašinom, pa su onda zajednička strategija za programiranje virtuelne mašine.[5]

Veći deo originalnog rada na teoriji concatenative jezika je izvršio Manfred fon Tun.

Osobine

[uredi | uredi izvor]

Osobine concatenative jezika su rezultat njegovog hemijskog sastava sintakse i semantike:

  • Smanjenje svakog izraza koji predstavlja pojednostavljivanje jedne funkcije na drugu funkciju; nikada nije neophodno da se bave primenom funkcija na objektima.[6]
  • Bilo koji podizraz može biti zamenjen imenom koji predstavlja isti podizraz. To se u concatenative zajednici naziva kao faktoring i intenzivno se koristi da pojednostavi programe na manje delove.
  • Sintaksa i semantika concatenative jezika čine algebarsku strukturu monoida.[7]
  • Concatenative  jezici mogu biti dobro prilagođeni na implementaciju inspirisane linearne logike u kojoj se smeće nikad ne proizvodi.[8]

Implementacija

[uredi | uredi izvor]

Prvi concatenative programski jezik je Fort, iako je Joy bio prvi jezik koji se pozovao concatenative. Ostali concatenative jezici su Cat, Enchilada, Factor, Onyx, PostScript, RPL, Staapl, Trith, XY, Kitten, i Om.

Većina postojećih concatenative jezika stack-zasnovani; ovo nije uslov i drugi modeli su predloženi.[9][10][11] Concatenative jezici se trenutno koriste za ugrađivanje, desktop i veb programiranje, kao ciljni jezici, kao i za istraživačke svrhe.

Većina concatenative jezika je dinamički otkucano. Jedini izuzetak je statički otkucan Cat jezika.[12]

Vidi još

[uredi | uredi izvor]

Reference

[uredi | uredi izvor]
  1. ^ „Christopher Diggins: What is a concatenative language”. Drdobbs.com. 31. 12. 2008. Pristupljeno 01. 07. 2013. 
  2. ^ „Name code not values”. Concatenative.org. Pristupljeno 13. 09. 2013. 
  3. ^ „Concatenative language”. Concatenative.org. Pristupljeno 13. 09. 2013. 
  4. ^ „Rationale for Joy, a functional language”. Arhivirano iz originala 15. 01. 2011. g. 
  5. ^ a b „Why Concatenative Programming Matters”. Pristupljeno 13. 09. 2013. 
  6. ^ „von Thun, Manfred: Joy compared with other functional languages”. Arhivirano iz originala 06. 10. 2011. g. 
  7. ^ „von Thun, Manfred: Mathematical foundations of Joy”. Arhivirano iz originala 31. 07. 2010. g. 
  8. ^ „Henry Baker: Linear Logic and Permutation Stacks — The Forth Shall Be First”. Home.pipeline.com. Arhivirano iz originala 24. 07. 2014. g. Pristupljeno 01. 07. 2013. 
  9. ^ „The Concatenative Language XY”. Nsl.com. Pristupljeno 01. 07. 2013. 
  10. ^ „The Enchilada Programming Language”. Enchiladacode.nl. Pristupljeno 01. 07. 2013. 
  11. ^ „The Om Programming Language”. Om-language.org. Pristupljeno 01. 07. 2013. 
  12. ^ „Cat Specification”. Cat-language.com. Arhivirano iz originala 05. 02. 2015. g. Pristupljeno 01. 07. 2013. 

Spoljašnje veze

[uredi | uredi izvor]