2010-09-16 9 views
6

W przeszłości LISP był jedynym potężnym funkcjonalnym językiem programowania, o ile rozumiem. Teraz jest wiele, dlaczego ludzie wciąż używają LISP-a z jego dziwną składnią? Czy istnieje wyjątkowa cecha zabójcy?Dlaczego warto używać LISP dzisiaj, kiedy są Scala, Erlang, Haskell itp.

+4

W dzisiejszych czasach ludzie używają Lispa, a nie LISP-a. Najczęściej używanymi dialektami są Common Lisp, Scheme i Clojure. – Svante

+17

Czekaj, porównujesz to do Scali, Erlanga, Haskella i myślisz, że * Lisp * ma "dziwną składnię"? :-) – Ken

+2

Mimo że składnia Lisp może być niezwykła, jeśli pochodzisz z tła C'ish, to ma ona najbardziej regularną składnię dowolnego języka, jaki kiedykolwiek widziałem. C, Java itd. Wszystkie mają szeroki zakres zasad składni dla tego, co jest dogodne w danym momencie, w seplenie składnia jest AST (zasadniczo), więc jest niewiarygodnie regularna. – asm

Odpowiedz

11

Po pierwsze, Lisp w ogóle, a Common Lisp w szczególności jest bardziej "wieloparadygmatycznym" niż "funkcjonalnym". Odtąd będę omawiać głównie Common Lisp (CL).

Jednak nie ma "funkcji jednego zabójcy". CL jest programowalnym językiem programowania, co ułatwia wykonywanie meta-programowania. Oznacza to, że zazwyczaj można robić "meta-poziom" rzeczy bezpośrednio w języku zamiast konieczności sięgania do preprocesora, który dokonuje tekstowej transformacji do twojego języka bazowego.

CL ma również bardzo potężny podsystem obiektów (CLOS), który dotychczas wspierał wszystko, co chciałem zrobić z hierarchiami klas i/lub metodami.

Jeśli chodzi o składnię, wydaje mi się, że różni się nieco od bardziej klasycznej składni języków "rodziny Algołów", ale nie jest już bardziej i prawdopodobnie mniej dziwaczna niż APL.

8

Istnieje wyjątkowa funkcja zabójcy. Nazywa się to makro-systemem. Dzięki makrom można rozbudować swój język i bardzo łatwo tworzyć świetne DSL. Tego rodzaju rzeczy byłyby trudne (i niezbyt przyjemne) do zastosowania ze Scala, Erlang lub Haskell.

Składnia lub jej brak jest tym, co naprawdę lubi wielu seniorów, ponieważ zapewnia świetną jednolitość, której brakuje w wielu językach. Dla standardowego programisty języka C lub Javy składnia Erlanga lub Haskella też jest dziwna, a co gorsza w składni, wygląda na dziwną.

Kolejne pytanie, na które należy odpowiedzieć, to dlaczego inne języki są lepsze od Lispa, jakiej funkcji brakuje w Lispach?

Ale oczywiście wiele języków współczesnych wiele się nauczyło od Lispa i istnieje wiele języków, które można wykorzystać do tego samego problemu.

Nie zapominaj, że Lisp nie jest jednym językiem istnieją różne rodzaje dialektów Lisp. Scheme, Common Lisp lub Clojure i wszyscy mają różne cele.

Tak więc na pytanie, na jaki język używać można odpowiedzieć, próbując je każdy ma coś wyjątkowego na ich temat. Erlang z Aktorami, Haskell i Scala mają te zwariowane systemy typów, Lisps ma niesamowite systemy makro .....

+1

Istnieje Lisp Flavoured Erlang (LFE), który podaje składnię sepsy przynoszącą makra do Erlanga. – boring

Powiązane problemy