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ż
- Programowanie na poziomie funkcji
- Homoikonowość
- Język programowania zorientowany na stos
- Programowanie ciche
Linki zewnętrzne
- concatenative.org: wiki o językach konkatenacyjnych
- Staapl: Forth on Scheme for Embedded Controllers
- Język programowania Enchilada
- Język konkatenacyjny XY
- Język programowania Om