PŁYWAM - ISWIM

PŁYWAM
Paradygmat Niezbędne , funkcjonalne
Zaprojektowany przez Piotr Landin
Po raz pierwszy pojawiły się 1966 ; 55 lat temu ( 1966 )
Wpływem
ALGOL 60 , Lisp
Pod wpływem
SASL , Miranda , ML , Haskell , Clean , Lucid

ISWIM ( akronim od If you See What I Mean ) to abstrakcyjny język programowania komputerowego (lub rodzina języków) opracowany przez Petera Landina i po raz pierwszy opisany w jego artykule „The Next 700 Programming Languages”, opublikowanym w Communications of the ACM w 1966.

Chociaż nie został zaimplementowany, okazał się bardzo wpływowy w rozwoju języków programowania, zwłaszcza funkcjonalnych języków programowania , takich jak SASL , Miranda , ML , Haskell i ich następcy oraz języków programowania przepływu danych , takich jak Lucid .

Projekt

ISWIM jest konieczne programowania język z rdzeniem funkcjonalnej składającej się z składniowej słodzenie z rachunku lambda , do którego dodawane są zmienne zmienny i przyporządkowanie i potężny mechanizm kontrolny: punkt programu operatora . Opierając się na rachunku lambda, ISWIM posiada funkcje wyższego rzędu i zmienne o zasięgu leksykalnym .

Semantyka operacyjna ISWIM jest definiowana za pomocą maszyny SECD Landina i wykorzystuje call-by-value, czyli chętną ocenę . Celem ISWIM było upodobnienie się bardziej do notacji matematycznej, więc Landin porzucił średniki ALGOL między wypowiedziami a begin... endblokami i zastąpił je regułą off-side i scopingiem opartym na wcięciach .

Notacyjnie wyróżniającą cechą ISWIM jest stosowanie whereklauzul. Program ISWIM jest pojedynczym wyrazem zakwalifikowane przez gdzie klauzule (definicje pomocnicze, w tym równań między zmiennymi), wyrażeń warunkowych i definicji funkcji. Wraz z CPL ISWIM był jednym z pierwszych języków programowania, w których używano klauzul where .

Godną uwagi cechą semantyczną była możliwość definiowania nowych typów danych, jako (ewentualnie rekurencyjnej) sumy produktów. Dokonano tego za pomocą nieco rozwlekłego opisu stylu języka naturalnego, ale poza notacją sprowadza się dokładnie do algebraicznych typów danych występujących we współczesnych językach funkcjonalnych. Zmienne ISWIM nie miały wyraźnych deklaracji typu i wydaje się prawdopodobne (chociaż nie zostało to wyraźnie określone w artykule z 1966), że Landin chciał, aby język był typowany dynamicznie, jak LISP, a w przeciwieństwie do ALGOL ; ale jest też możliwe, że zamierzał opracować jakąś formę wnioskowania o typie .

Wdrożenia i pochodne

Nie podjęto żadnej bezpośredniej implementacji ISWIM, ale język PAL Arta Evana i język Gedanken Johna C. Reynoldsa uchwycił większość koncepcji Landina, w tym potężne operacje przekazywania kontroli. Oba zostały wpisane dynamicznie . ML Milnera może być uważany za równoważny I PŁYWANIE bez operatora J iz wnioskowaniem o typie .

Inną linią wywodzącą się z ISWIM jest usunięcie cech imperatywnych (przypisania i operatora J), pozostawiając język czysto funkcjonalny. Możliwe staje się wtedy przejście na leniwą ocenę . Ta ścieżka doprowadziła do języków programowania SASL , Kent Recursive Calculator (KRC), Hope , Miranda , Haskell i Clean .

Bibliografia