Konkatenacyjny język programowania

Język programowania konkatenacyjnego to bezpunktowy język programowania komputerowego , w którym wszystkie wyrażenia oznaczają funkcje , a zestawienie wyrażeń oznacza złożenie funkcji . Programowanie konkatenacyjne zastępuje aplikację funkcji , która jest powszechna w innych stylach programowania, kompozycją funkcji jako domyślnym sposobem budowania podprogramów .

Przykład

Na przykład sekwencja operacji w języku aplikacji, taka jak ta:

  
  
   y  =  foo  (  x  )  z  =  słupek  (  y  )  w  =  baz  (  z  ) 

... jest zapisany w języku konkatenacyjnym jako sekwencja funkcji:

x foo bar baz

Funkcje i procedury napisane w stylu konkatenacyjnym nie są na poziomie wartości , tzn. zazwyczaj nie reprezentują struktur danych, na których operują, za pomocą wyraźnych nazw lub identyfikatorów . Zamiast tego są one na poziomie funkcji – funkcja jest zdefiniowana jako potok lub sekwencja operacji, które pobierają parametry z ukrytej struktury danych , na której działają wszystkie funkcje, i zwracają wyniki funkcji do tej wspólnej struktury, aby były używane przez następny operator.

Połączenie semantyki kompozycyjnej ze składnią , która odzwierciedla taką semantykę, sprawia, że ​​języki konkatenacyjne są bardzo podatne na algebraiczną manipulację programami; chociaż pisanie wyrażeń matematycznych bezpośrednio w nich może być trudne. Języki konkatenacyjne mogą być wydajnie implementowane za pomocą maszyny stosowej i są powszechnie obecne w maszynach wirtualnych w postaci ich zestawów instrukcji .

Nieruchomości

Właściwości języków konkatenacyjnych wynikają z ich składni składniowej i semantyki:

  • Redukcja dowolnego wyrażenia jest uproszczeniem jednej funkcji do innej; nigdy nie jest konieczne zajmowanie się zastosowaniem funkcji do obiektów.
  • Każde podwyrażenie można zastąpić nazwą reprezentującą to samo podwyrażenie. Jest to określane w społeczności konkatenacyjnej jako faktoryzacja i jest szeroko stosowane w celu uproszczenia programów na mniejsze części.
  • Składnia i semantyka języków konkatenacyjnych tworzą algebraiczną strukturę monoidu .
  • Języki konkatenacyjne można dobrze dopasować do implementacji inspirowanej logiką liniową , w której nigdy nie są generowane żadne śmieci .

Implementacje

Pierwszym konkatenacyjnym językiem programowania był Forth , chociaż Joy był pierwszym językiem, który nazwał się konkatenacyjnym. Inne języki konkatenacyjne to dc , Factor , Onyx , PostScript i RPL .

Większość istniejących języków konkatenacyjnych opiera się na stosie ; nie jest to wymagane i zaproponowano inne modele. Języki konkatenacyjne są obecnie używane w programowaniu osadzonym , komputerowym i internetowym jako języki docelowe oraz do celów badawczych.

Większość języków konkatenacyjnych jest typowana dynamicznie . Wyjątki obejmują statycznie typowany język Cat.

Zobacz też

Linki zewnętrzne