* Lisp - *Lisp
Paradygmaty | Wieloparadygmat : funkcjonalny , proceduralny , refleksyjny , meta , równoległy |
---|---|
Rodzina | Seplenienie |
Zaprojektowany przez | Cliff Lasser, Steve Omohundro |
Deweloper | Thinking Machines Corporation |
Po raz pierwszy pojawiły się | 1986 |
Dyscyplina typowania | Dynamiczny , mocny |
Zakres | Statyczne, leksykalne |
Język implementacji | Common Lisp |
Platforma | Maszyna połączeniowa |
OS | Maszyna połączeniowa |
Wpływem | |
Lisp , Common Lisp | |
Pod wpływem | |
DO* |
* Lisp (lub StarLisp ) to język programowania , dialekt języka Lisp . Został wymyślony w 1985 roku przez dwóch pracowników Thinking Machines Corporation , Cliffa Lassera i Steve'a Omohundro , jako sposób na zapewnienie wydajnego, ale wysokiego poziomu języka do programowania powstającej maszyny połączeniowej (CM).
Historia
Preludium
W czasie gdy maszyna połączeń była projektowana i budowana, jedynym aktywnie rozwijanym językiem był język na poziomie asemblera o nazwie PARIS ( Par allel I nstruction S et). Okazało się, że potrzebny jest lepszy sposób programowania maszyny i to szybko. Oczekiwanie na ukończenie Connection Machine Lisp (CM Lisp), implementacja bardzo wysokiego poziomu języka programowania Lisp z równoległymi rozszerzeniami obliczeniowymi nie wchodziło w grę. CM Lisp został zaproponowany przez Danny'ego Hillisa i oczekiwano, że jego rozwój będzie kontynuowany jeszcze przez kilka lat.
Rozwój
Początkowo opracowano interpreter * Lisp . Szybko stało się jasne, że kompilator * Lisp , tłumaczący * Lisp na Lisp i PARIS, będzie potrzebny, aby osiągnąć gigantyczną prędkość FLOPS, która była teoretycznie osiągalna przez maszynę połączeń. Kompilator * Lisp został napisany przez Jeffa Mincy'ego i został wydany po raz pierwszy w 1986 roku. Aplikacja osiągająca więcej niż dwa gigaFLOPS, symulator śladu helikoptera, została opracowana przez Alana Egolfa, wówczas pracownika United Technologies , oraz JP Massara, pracownika Thinking Machines , w 1987 roku.
W tym samym czasie JP Massar opracował * Lisp Simulator, emulator przeznaczony do uruchamiania kodu * Lisp na standardowych maszynach nierównoległych. Ten symulator nadal istnieje i został przeniesiony do American National Standards Institute (ANSI) Common Lisp (CL) w 2001 roku. Starsza wersja, napisana w oryginalnym CL, znajduje się w repozytorium sztucznej inteligencji (AI) Carnegie Mellon University (CMU) .
Późniejsze wersje * Lispa, obejmujące znaczące ulepszenia jego funkcji i wydajności, były opracowywane przez Cliffa Lassera, Jeffa Mincy i JP Massara do 1989 roku. * Lisp został wdrożony na Thinking Machines CM5 około 1990-1991 przez JP Massara i Mario Bourgoina .
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2019 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
LISP 1, 1.5, LISP 2 (porzucone) | ||||||||||||||
Maclisp | ||||||||||||||
Interlisp | ||||||||||||||
Lisp Machine Lisp | ||||||||||||||
Schemat | R5RS | R6RS | R7RS mały | |||||||||||
ZERO | ||||||||||||||
Franz Lisp | ||||||||||||||
Common Lisp | ||||||||||||||
Le Lisp | ||||||||||||||
T | ||||||||||||||
Chez Scheme | ||||||||||||||
Emacs Lisp | ||||||||||||||
AutoLISP | ||||||||||||||
PicoLisp | ||||||||||||||
EuLisp | ||||||||||||||
ISLISP | ||||||||||||||
OpenLisp | ||||||||||||||
Schemat PLT | Rakieta | |||||||||||||
GNU Guile | ||||||||||||||
Visual LISP | ||||||||||||||
Qi, QiII | Shen | |||||||||||||
Clojure | ||||||||||||||
Łuk | ||||||||||||||
LFE | ||||||||||||||
Hy |
Realizacja
StarLisp został napisany na Common Lisp (CL), a zatem miał za sobą pełną moc CL. Aby użyć maszyny połączeń, potrzebny był host lub front-end . Aby używać * Lisp, ten front-end musiał uruchamiać CL. Maszyny Symbolics używające stacji roboczych Genera i Sun Microsystems z Lucid Common Lisp firmy Lucid Inc. były używane do obsługi * Lispa.
StarLisp operowanych P arallel Var iable s (PVARS). Reprezentowały one pamięć Maszyny Połączeń i były zasadniczo wektorami : jeden element na procesor CM (lub procesor wirtualny).
StarLisp składał się ze standardowych operacji na PVARS, takich jak dodawanie i mnożenie wektorów, wraz z prymitywami komunikacyjnymi, które zasadniczo zmieniały kolejność elementów PVAR przy użyciu sprzętu komunikacyjnego CM, aby optymalnie kierować dane.