Kategoryczna maszyna abstrakcyjna

Kategoryczna maszyna abstrakcyjna ( CAM ) to model obliczeń dla programów, który zachowuje zdolności stylu aplikacyjnego, funkcjonalnego lub kompozycyjnego. Opiera się na technikach obliczeń aplikacyjnych .

Przegląd

Pojęcie abstrakcyjnej maszyny kategorycznej pojawiło się w połowie lat 80. Zajęła swoje miejsce w informatyce jako swego rodzaju teoria obliczeń dla programistów, reprezentowana przez kartezjańską kategorię zamkniętą i osadzona w logice kombinatorycznej . CAM to przejrzysta i solidna reprezentacja matematyczna języków programowania funkcyjnego. Kod maszynowy można zoptymalizować za pomocą równania teorii obliczeń. Korzystając z CAM, można emulować różne mechanizmy obliczeniowe, takie jak rekurencja lub leniwa ocena , a także przekazywanie parametrów, takie jak wywołanie według nazwy , wywołanie według wartości i tak dalej. Teoretycznie CAM zachowuje [ jak? ] wszystkie zalety obiektowego podejścia do programowania lub obliczeń.

Główną obecną implementacją jest OCaml, która dodała dziedziczenie klas i dynamiczne wysyłanie metod do Caml Categorical Abstract Machine Language. Oba są wariantami MetaLanguage ML , a wszystkie trzy języki implementują wnioskowanie o typie .

Realizacja

Jednym z podejść do implementacji języków funkcjonalnych jest maszyneria oparta na superkombinatorach lub SK-maszynie D. Turnera. Pojęcie CAM daje alternatywne podejście. Struktura CAM składa się z elementów składniowych, semantycznych i obliczeniowych. Składnia jest oparta na notacji de Bruijna , która przezwycięża trudności związane z użyciem zmiennych powiązanych. Oceny są podobne do tych z maszyny SECD P. Landina . Dzięki temu pokryciu CAM zapewnia solidną podstawę dla składni, semantyki i teorii obliczeń . To zrozumienie powstaje pod wpływem funkcjonalnego stylu programowania.

Zobacz też

Dalsza lektura

  •   Wolfengagen, VE kombinatoryczna logika w programowaniu : obliczenia z obiektami na podstawie przykładów i ćwiczeń . wyd. 2 M.: „Centrum JurInfoR” Sp. z oo, 2003. x+337 с. ISBN 5-89158-101-9 .