Czy LISP jest nadal praktykowany / używany w dzisiejszym świecie, czy też jest to język starszej generacji?
Tak, ale musisz wiedzieć, gdzie szukać. Ludzie, którzy używają LISP, nie krzyczą zbyt głośno na ten temat, ale jest kilka przykładów kilku głośnych startupów, które wykorzystały go z wielkim skutkiem w ciągu ostatnich 20 lat. Jest również bardzo popularny wśród małych firm w Europie.
Jaki jest najczęściej używany dialekt?
To ważne pytanie, ale odpowiedź na nie jest trudna. Odpowiedź może również nie być szczególnie użyteczna: wiele wdrożeń ma określony cel, więc najlepiej wybrać je, jeśli pasują one do konkretnego problemu, a nie na podstawie tego, jak szeroko jest on używany. Zamiast tego opowiem ci trochę o twoich opcjach i możesz sam zdecydować.
LISP jest rodziną języków, a każdy z tych języków ma rodzinę dialektów i implementacji. Zasadniczo dialekty dzielą się na dwa obozy „LISP” i „Schematy”.
LISP: Do niedawna królem był Common LISP. Była to próba ujednolicenia wszystkich różnych LISP-ów i, nie bez uprzejmości, była „C ++” LISP-a. To znaczy, to był OGROMNY język. Miał wszystko. W ciągu ostatnich kilku lat pojawił się Clojure. Clojure to LISP, który działa na wirtualnej maszynie Java i próbuje zakorzenić się w filozofii programowania funkcjonalnego. Tradycyjnie inne LISP były ściśle paradygmatem. Clojure jest interesujący, ponieważ dostaje zarówno najlepsze, jak i najgorsze z LISP i JVM. Wciąż jest dużo gadatliwości języków opartych na Javie i są one dość bezpłatne i łatwe w składni, dzięki czemu ma wiele pokręteł i przycisków do różnych rzeczy, ale mają kilka naprawdęciekawe pomysły dotyczące typów danych, zwłaszcza niektóre praktyczne sposoby, w jakie wymyślili, aby zastosować pomysły z programowania funkcjonalnego.
Schematy: Schematy są ścisłym podzbiorem LISP. Schemat został wynaleziony przez Steele i Sussmana i we wczesnym okresie życia był znany z zastosowania w kursie wykładowym MIT Computing 101. Schemat jest zdefiniowany w „Poprawionym raporcie n n na temat algorytmu języka algorytmicznego (RnRS)”. Tak: mają tam żart z matematyki. Schemat jest znormalizowanym językiem w taki sposób, jak inne LISP. Pomaga to znacznie w przenośności między implementacjami, ale nie jest to srebrna kula. Wysiłki w zakresie standaryzacji były zwykle konserwatywne, a innowacje we wdrożeniach, szczególnie wokół takich rzeczy, jak moduły, bywały zróżnicowane. Istnieje również seria SRFI (Scheme Requests Implementation), która jest podobna do procesu RFC IETF. Ludzie używają go do standaryzacji drobiazgów według potrzeb.
Schematy różnią się od LISP tym, że mają zestaw twardych wymagań, które muszą spełnić, jednym z nich jest „optymalizacja wywołania ogonowego”, która pomaga zwiększyć efektywność rekurencji. Dlatego rekurencyjne style programowania są znacznie bardziej popularne w Schemacie niż w LISP. Schemat również nie jest nieuprzejmy, podobnie jak „C” LISP. Oznacza to, że są to małe języki i powinieneś być w stanie zachować to wszystko na raz.
Obecnie istnieją dwie rodziny schematów: te oparte na piątej wersji (R5RS) i rodziny oparte na szóstej wersji (R6RS). Złożoność R6RS była znacznie większa niż w przypadku któregokolwiek z jego poprzedników i tak wiele implementacji R5RS zdecydowało się go pominąć, mając nadzieję, że R7RS będzie bardziej podobny do R5RS niż R6RS. Proces standaryzacji R7RS jest obecnie w toku i starał się uwzględnić zarówno pragnienia osób wdrażających R5RS, jak i te z ludu R6RS poprzez ujednolicenie małego podstawowego języka w pierwszej grupie roboczej, a następnie zlecenie drugiej grupie roboczej w celu ustandaryzowania większych funkcji. Dzięki temu język będzie miał wydajne i przydatne implementacje zarówno na niewielkim sprzęcie wbudowanym, jak i na bardziej wydajnych maszynach.
Teraz będę bardziej konkretny:
PicoLisp to naprawdę fajny LISP. Jest malutki! Autor napisał to dla siebie i, jak rozumiem, zarabia na tym od lat 80. Jeśli kiedykolwiek będziesz miał okazję uczestniczyć w jego rozmowie, powinieneś to zrobić: jest naprawdę interesujący i naprawdę zna się na swoich rzeczach, a nie dostaniesz nawet najmniejszego powąchania z głównego nurtu lub nudy.
Nie znam implementacji Common Lisp, więc nie będę ich więcej komentował.
Guile jest oficjalnym programem GNU.
Rakieta jest schematem R6RS, ale ostatnio wydaje się, że poszerzyła sieć i próbuje „służyć jako platforma do tworzenia, projektowania i wdrażania języków”.
Kurczak ma być praktycznym programem. Jest oparty na R5RS i kompiluje się do C. To okazuje się naprawdę, naprawdę ważną zaletą, ponieważ sprawia, że korzystanie z istniejących bibliotek C jest absolutnie trywialne. Dlatego Chicken jest prawdopodobnie najbardziej użytecznym schematem zastępującym Perla, Pythona, Ruby itp. Jako codzienny język skryptowy. Jest kilka osób, które korzystały z niego wyłącznie do swoich potrzeb od kilku lat. Ma interaktywny REPL, a także kompilator. Społeczność (zarówno na liście mailingowej, jak i IRC) jest kompetentna, przyjazna i pomocna.
Poszukaj implementacji z dużą ilością modułów: pokazuje to, że jest szeroko użyteczna i oznacza, że prawdopodobnie będzie miała coś, co pomoże w wykonywanym zadaniu.
Poszukaj implementacji z kompilatorem lub przynajmniej czegoś, co nie jest oparte wyłącznie na IDE lub REPL. Wiele implementacji zaprojektowanych do nauczania jest bardzo trudnych w użyciu do skryptów ogólnego przeznaczenia.
Polecam kurczaka, ponieważ tego właśnie używam. Użyłem go w swoich osobistych projektach i wykorzystałem (i obecnie go używam) profesjonalnie.
Nie chcę inwestować w coś nadmiernego wysiłku, jeśli jest całkowicie przestarzały - nadal bym się go uczył, gdyby był zawodowo „martwy”, ale tylko z perspektywy akademickiej ...
Schemat nie jest zawodowo martwy, ale być może będziesz musiał zrobić wszystko, aby użyć go w tym kontekście. Coś takiego jak Kurczak jest czymś znacznie więcej niż akademickim zajęciem i może z łatwością objąć prawie wszystkie podstawy języków wysokiego poziomu, których obecnie używasz.