Dlaczego powinienem nauczyć się Lispa? [Zamknięte]

125

Naprawdę czuję, że powinienem nauczyć się Lispa i jest wiele dobrych zasobów, które mi w tym pomogą.

Nie zraża mnie skomplikowana składnia, ale gdzie w „tradycyjnym programowaniu komercyjnym” znalazłbym miejsca, sensowne byłoby użycie go zamiast języka proceduralnego.

Czy istnieje komercyjna zabójcza aplikacja napisana w języku Lisp?

David
źródło
5
Trudno zniechęcić się tym, czego nie ma.
Kaz,
Przeczytaj CV Philipa Greenspuna . Jest pełen prawdziwej pracy Lispa.
Kaz
1
Również tutaj . Greenspun pracował nad symulacją sieci z komutacją pakietów, projektowaniem DSP, projektowaniem procesorów, układem VLSI, automatyzacją inżynierii mechanicznej, automatyzacją robót ziemnych i tak dalej, wszystko przy użyciu Lispa lub z udziałem Lispa. Pomógł zaprojektować architekturę PA-RISC firmy Hewlett Packard przy użyciu narzędzi opracowanych na maszynie Lisp.
Kaz
Oto kilka aplikacji opracowanych w Lisp - Emacs, G2, AutoCad, Igor Engraver i Yahoo Store
Arulx Z

Odpowiedzi:

55

Jednym z głównych zastosowań Lispa jest sztuczna inteligencja. Mój przyjaciel z college'u ukończył kurs AI i dla swojego głównego projektu napisał solver " Lights Out " w Lisp. Wiele wersji jego programu wykorzystywało nieco inne procedury sztucznej inteligencji, a testy na około 40 komputerach dały całkiem niezłe wyniki (chciałbym, żeby było gdzieś online, do którego mógłbym się połączyć, ale nie sądzę).

Dwa semestry temu użyłem Scheme (języka opartego na Lispie) do napisania interaktywnego programu, który symulował rutynę "Who's on First" Abbotta i Costello. Dane wejściowe użytkownika były porównywane z kilkoma dość skomplikowanymi strukturami danych (przypominającymi mapy w innych językach, ale znacznie bardziej elastycznymi), aby wybrać odpowiednią odpowiedź. Napisałem również procedurę rozwiązywania łamigłówki 3x3 (algorytm, który można łatwo rozszerzyć na większe puzzle).

Podsumowując, nauka języka Lisp (lub Scheme) może nie przynieść wielu praktycznych zastosowań poza sztuczną inteligencją, ale jest niezwykle cennym doświadczeniem edukacyjnym, jak twierdzi wielu innych. Programowanie w języku funkcjonalnym, takim jak Lisp, pomoże również w myśleniu rekurencyjnym (jeśli miałeś problem z rekurencją w innych językach, może to być bardzo pomocne).

Justin Bennett
źródło
5
Dlaczego mówisz, że Lisp jest dobry tylko dla AI? Ponadto jest to język wieloparadygmatyczny. Funkcjonalność to tylko jeden z kilku paradygmatów, które umożliwia.
Luís Oliveira,
6
Nie powiedziałem, że jest używany tylko do sztucznej inteligencji, powiedziałem, że jednym z jego głównych zastosowań jest sztuczna inteligencja. Przeczytałeś to?
Justin Bennett,
32
„Proszę nie zakładać, że Common Lisp jest użyteczny tylko w przypadku baz danych, struktur testów jednostkowych, filtrów spamu, parserów ID3, programowania internetowego, serwerów Shoutcast, interpreterów generacji HTML i kompilatorów generacji HTML tylko dlatego, że są to jedyne rzeczy, które zostały zaimplementowane w książka Practical CL ”
Mikael Jansson,
23
@JustinBennett tak, powiedziałeś to. Tutaj: „Podsumowując, nauka Lispa (lub Schematu) może nie przynieść wielu praktycznych zastosowań poza AI”. Nienawidzę, gdy ludzie konfrontują się, będąc w błędzie.
Luka Ramishvili
127

Lisp to duży i złożony język, obsługujący duże i złożone środowisko wykonawcze. Z tego powodu Lisp najlepiej nadaje się do dużych i skomplikowanych problemów.

Teraz złożony problem to nie to samo, co skomplikowany . Kompleks problemem jest to jeden z wielu drobnych szczegółów, które jednak nie jest trudne. Pisanie systemu rezerwacji linii lotniczych to skomplikowana sprawa, ale przy wystarczającej ilości pieniędzy i programistach nie jest to trudne. Dostrzeż różnicę?

Skomplikowany problem to taki, który jest zawiły, taki, w którym tradycyjne dzielenie i zdobywanie nie działa. Sterowanie robotem lub praca z danymi, które nie są tabelaryczne (na przykład języki) lub bardzo dynamiczne sytuacje.

Lisp jest naprawdę dobrze dostosowany do problemów, w których rozwiązanie musi być rozszerzalne; klasycznym przykładem jest edytor tekstu emacs. Jest w pełni programowalny, a tym samym stanowi samo w sobie środowisko programistyczne.

W swojej słynnej książce PAIP Norvig mówi, że Lisp jest idealny do programowania eksploracyjnego. To znaczy zaprogramowanie rozwiązania problemu, który nie jest w pełni zrozumiały (w przeciwieństwie do systemu rezerwacji on-line). Innymi słowy: skomplikowane problemy.

Ponadto nauka Lispa przypomni ci o czymś fundamentalnym, o czym zapomniano: różnicę między Von Neumannem a Turingiem. Jak wiemy, model obliczeniowy Turinga jest interesującym modelem teoretycznym, ale bezużyteczny jako model do projektowania komputerów. Z drugiej strony Von Neumann zaprojektował model wykonywania komputerów i obliczeń: model Von Neumanna. Kluczowe dla modelu Von Neumanna jest to, że masz tylko jedną pamięć i przechowujesz tam zarówno swój kod, jak i dane. Zwróć uwagę, że program w języku Java (lub C #, czy cokolwiek lubisz) jest przejawem modelu Turinga. Ustawiasz swój program w konkretny sposób, raz na zawsze. W takim razie masz nadzieję, że poradzisz sobie ze wszystkimi danymi, które zostaną na niego wyrzucone.

Lisp utrzymuje model Von Neumana; nie ma ostrej, z góry określonej granicy między kodem a danymi. Programowanie w Lispie otwiera twój umysł na potęgę modelu Von Neumanna. Programowanie w Lispie sprawia, że ​​widzisz stare koncepcje w nowym świetle.

Wreszcie, będąc interaktywnym, nauczysz się współdziałać ze swoimi programami podczas ich tworzenia (w przeciwieństwie do kompilowania i uruchamiania). Zmienia to również sposób programowania i sposób patrzenia na programowanie.

Tym wstępem mogę wreszcie odpowiedzieć na Twoje pytanie: czy znajdziesz miejsca, w których przyćmiewa „tradycyjne” języki?

Jeśli jesteś zaawansowanym programistą, potrzebujesz zaawansowanych narzędzi. Nie ma bardziej zaawansowanego narzędzia niż Lisp. Lub innymi słowy: odpowiedź brzmi: tak, jeśli twoje problemy są trudne. Nie inaczej.

użytkownik7517
źródło
30
"ale przy wystarczającej ilości pieniędzy i programistów nie jest to trudne" - to powiedziawszy, przy wystarczającej liczbie programistów staje się to niemożliwe ;-)
Jonas Kölker
Czytałem o zdolności lispsa do generowania kodu w locie, ale czytałem również, że można go skompilować. Czy są implementacje, które mogą mieszać interpretowane i skompilowane wykonanie? lub które zawierają własny kompilator?
centaurian_slug,
@centaurian_slug: Tak, oczywiście. To część mocy. Każda wersja, która nie została celowo uszkodzona, będzie miała swój kompilator / interpreter dostępny w czasie wykonywania. Na przykład programista może zalogować się do specjalnego połączenia na swoim serwerze sieciowym, przeprowadzić debugowanie, zaktualizować niektóre definicje klas i funkcji oraz ewentualnie ponownie skompilować wszystko, co zależało od tych definicji, jeśli zajdzie taka potrzeba. Wszystko to, gdy serwer działa. Prawdopodobnie nie jest to legalne w przedsiębiorstwie, które martwi się o zgodność z SOX, ale to jeden z powodów, dla których branże używają języków Braindead, takich jak Java i C #
James
46

skomplikowana składnia ?

Składnia lisp jest niezwykle prosta .

Zabójcza aplikacja napisana w języku lisp: emacs . Lisp pozwoli ci dowolnie rozszerzać emacsa, aby zrobić prawie wszystko, co przyjdzie do głowy, że mógłby zrobić edytor.

Ale powinieneś się uczyć seplenienie tylko wtedy, gdy chcesz , i możesz nigdy nie używać w pracy, ale nadal jest niesamowity.

Dodam też: nawet jeśli znajdziesz miejsca, w których seplenienie będzie miało sens, prawdopodobnie nikogo nie przekonasz, że powinno się go używać na Javie, C ++, C #, Pythonie, Ruby itp.

Justin Standard
źródło
@Justin: Prawdopodobnie warto zauważyć, że rdzeń emacsa jest napisany w C. Ale to tylko wybieranie nitów - wszystkie polecenia są napisane w elisp.
Bernard,
3
a raczej - podstawowa składnia zwykłego lisp jest prosta. defmacro pozwala na rozszerzenie składni, a niektóre wbudowane makra (takie jak defmacro) mogą stać się niewiarygodnie skomplikowane; listy lambda, zagnieżdżone cytaty odwrotne itp.
Aaron
Można powiedzieć, że część C emacsa to kod kleju.
Luka Ramishvili
Zgodnie z podręcznikiem do Emacsa, „Większość poleceń edycyjnych w Emacsie jest napisanych w Lisp; nieliczne wyjątki mogły zostać napisane w Lisp, ale zamiast tego używać C dla zwiększenia wydajności”. gnu.org/software/emacs/manual/html_mono/emacs.html#Intro
dpritch
25

Nie mogę odpowiedzieć z własnego doświadczenia, ale powinieneś przeczytać to, co Paul Graham napisał na Lispie . Jeśli chodzi o część „zabójcza aplikacja”, przeczytaj artykuł Pokonywanie średniej .

Christian Lescuyer
źródło
2
+1. W tej odpowiedzi należy wspomnieć, że Yahoo Stores, pierwsza aplikacja internetowa, została częściowo napisana w języku lisp. Cytując Wikipedię: W 1998 roku Yahoo! Inc. kupił Viaweb za 455 000 akcji Yahoo! , wyceniony na około 49 milionów dolarów i przemianowany na Yahoo! Sklep.
Steven Lu
17

W Lispie profesjonalnie programowałem przez około rok i na pewno warto się tego nauczyć. Będziesz miał niezrównaną możliwość usunięcia nadmiarowości ze swojego kodu, będąc w stanie zastąpić cały standardowy kod funkcjami, jeśli to możliwe, i makrami, jeśli nie. Będziesz mieć również dostęp do niezrównanej elastyczności w czasie wykonywania, swobodnie tłumacząc kod i dane. Zatem sytuacje, w których działania użytkownika mogą wywołać potrzebę dynamicznego budowania złożonych struktur, są tym, w których Lisp naprawdę błyszczy. Popularne harmonogramy lotów linii lotniczych są napisane w Lisp, a także w Lisp jest dużo CAD / CAM.

John z goframi
źródło
9

Jeśli lubisz programować, powinieneś nauczyć się Lispa dla czystej przyjemności. XKCD doskonale wyraża intelektualne oświecenie, które następuje. Nauka Lispa jest dla programisty tym, czym medytacja jest dla buddyjskiego mnicha (i miałem na myśli to bez bluźnierczych konotacji).

Konrad Rudolph
źródło
9

Lisp jest bardzo przydatny do tworzenia małych DSL. Mam kopię Lisp in a Box działającą w pracy i napisałem małe DSL do przeszukiwania baz danych serwera SQL i generowania warstw danych itp. W C #. Cały mój kod płyty kotłowej jest teraz zapisywany w makrach lisp, które są wyświetlane w języku C #. Generuję przy jego pomocy HTML, XML i wiele innych rzeczy. Chociaż chciałbym móc używać Lispa do codziennego kodowania, Lisp może przynieść praktyczne korzyści.

Phil Bennett
źródło
Używam dotlisp.sourceforge.net/dotlisp.htm do tego.
Mark Hurd
5

Każdy język wygląda o wiele trudniej, gdy nie używa się typowych dla danego języka konwencji wcięć. Kiedy podążamy za nimi w Lispie, widać, jak łatwo wyraża on strukturę drzewa składni (uwaga, to nie jest do końca w porządku, ponieważ podgląd trochę kłamie; r powinny być wyrównane z fns w rekursywnym argumencie quicksort):

(defun quicksort (lis) 
  (if (null lis) 
      nil
      (let* ((x (car lis)) 
             (r (cdr lis)) 
             (fn (lambda (a) 
                   (< a x))))
         (append (quicksort (remove-if-not fn 
                                           r)) 
                 (list x)
                 (quicksort (remove-if fn 
                                       r))))))
John z waflem
źródło
1
Myślę, że w tym, co mówisz, kryje się uczciwa krytyka. Chodzi mi tylko o to, że „wygląda o wiele trudniej, jak go przedstawiłeś, i wygląda o wiele wyraźniej, jak jest tutaj przedstawione”. Myślę, że musielibyście się zgodzić, że wiele języków wygląda o wiele bardziej zagmatwanych, gdyby nie przestrzegano ich konwencji dotyczących wcięć. Ponadto, jeśli porównamy wcięcia, powiedzmy Java i Lisp, powiedziałbym, że generalnie wymagają one mniej więcej tego samego poziomu znajomości podstawowych konstrukcji każdego języka, aby je poprawnie wciskać. Ale uczciwe, choć całkowicie subiektywne, jest stwierdzenie, że nadal wygląda to na trudne.
Jan z goframi
1
Aby było to trochę prostsze, możesz użyć standardu leti użyć defunna początku funkcji, aby zdefiniować, fnponieważ się nie zmienia.
Aaron Robson
4
@FerretallicA Na jakiej podstawie ustalasz, czy coś jest „łatwe do odczytania przez człowieka” czy „samoopisuje się”? Podobieństwo do angielskiego? Czy język chiński jest „czytelny dla człowieka”? A co z notacją matematyczną? Czy jest „nieczytelny dla człowieka”? Ten rodzaj argumentacji jest irytującym bełkotem, ponieważ jego ukryta wiadomość brzmi: „To nie wygląda na sposób, w jaki po raz pierwszy nauczyłem się rozumować”.
3
Raczej twoje „odparcie” brzmi jak „biadolenie”. Wypróbuj test sniff języka programowania. Weź kogoś, kto nie programował wcześniej i pokaż mu stronę z kodem VB i stronę z kodem Lispa. Z radością założę się o mój lewy orzech, na podstawie którego z tych dwóch przypadkowego obserwatora łatwiej będzie wyciągnąć znaczące obserwacje.
nathanchere
1
Zastanawiam się, co nie-programista z Chin, Japonii, Koreańczyków, Sumerów, Hindusów czy Arabów pomyślałby o twoim dość zuchwałym pragnieniu oddania jądra dla łatwej kłótni.
4

Odkryłem, że nauka nowego języka zawsze wpływa na Twój styl programowania w językach, które już znasz. Zawsze powodowało to, że myślałem na różne sposoby, aby rozwiązać problem w moim podstawowym języku, którym jest Java. Myślę, że ogólnie rzecz biorąc, to po prostu poszerza twoje horyzonty w zakresie programowania.

dlinsin
źródło
To dlatego, że jesteś dobrym programistą. Źli programiści, zamiast wpływać na stare umiejętności nową wiedzą, myślą w już znanych językach, pisząc w nowych. Ale dlaczego używasz Java po lisp? :) Java jest najtrudniejsza w użyciu po Lispie, imo.
Luka Ramishvili
4

Jeśli musisz zadać sobie pytanie, czy powinieneś nauczyć się seplenienie, prawdopodobnie nie musisz.

Nieznajomy
źródło
8
Powiedziałbym odwrotnie: jeśli już rozumiesz seplenienie, ponieważ masz doświadczenie z podobnym językiem, prawdopodobnie nie jest to konieczne. Jeśli nie rozumiesz, co ma do zaoferowania seplenienie, możesz skorzystać z tej ekspozycji.
Mr Fooz
@MrFooz nie ma podobnych języków, które mogłyby wyeliminować potrzebę uczenia się lispy części seplenienia. Główne cechy seplenienia nie występują w żadnym języku. Chociaż większość jest.
Luka Ramishvili
W zależności od twoich celów. Jeśli chcesz umrzeć, nie musisz oddychać. Ale to nie znaczy, że nie powinieneś.
mimoralea
4

W latach osiemdziesiątych wziąłem udział w kursie seplenienia w college'u. Pomimo grokking wszystkie koncepcje przedstawione w klasie, ja zostałem bez jakiegokolwiek uznania dla tego, co sprawia, że lisp Great. Obawiam się, że wiele osób postrzega seplenienie jako kolejny język programowania, co zrobiło dla mnie ten kurs na studiach wiele lat temu. Jeśli zobaczysz, że ktoś narzeka na składnię seplenienia (lub jej brak), istnieje duża szansa, że ​​jest jedną z tych osób, którym nie udało się pojąć wielkości seplenienia. Byłem jedną z tych osób przez bardzo długi czas.

Dopiero dwie dekady później, kiedy na nowo rozbudziłem zainteresowanie seplenieniem, zacząłem „rozumieć” to, co sprawia, że ​​seplenienie jest interesujące - w każdym razie dla mnie. Jeśli uda ci się nauczyć seplenienie bez rozmywania umysłu przez domknięcia i makra seplenienie, prawdopodobnie przegapiłeś punkt.

fdesmet
źródło
Popieram to. Obecnie jestem na drugim wyjeździe do Lispa, 5 lat poza szkołą. Jeden termin w Lispie, kiedy wciąż jesteś zielony, może nie mieć odpowiedniego efektu - pamiętam, że skupiałem się tylko na metaprogramowaniu i nie doceniałem jeszcze metaprogramowania i elastyczności.
Aaron
4

Nauka języka LISP / Scheme może nie zwiększyć przestrzeni aplikacji, ale pomoże ci lepiej zrozumieć programowanie funkcjonalne, jego zasady i wyjątki.

Warto poświęcić trochę czasu, aby poznać różnicę w pięknie sześciu zagnieżdżonych czystych funkcji i koszmar sześciu zagnieżdżonych funkcji z efektami ubocznymi.

JT Hurley
źródło
4

Z http://www.gigamonkeys.com/book/introduction-why-lisp.html

Jednym z najczęściej powtarzanych mitów na temat Lispa jest to, że jest „martwy”. Chociaż prawdą jest, że Common Lisp nie jest tak powszechnie używany, jak, powiedzmy, Visual Basic czy Java, wydaje się dziwne opisywanie języka, który jest nadal używany w nowych programach i który nadal przyciąga nowych użytkowników jako „martwy”. Niektóre niedawne historie sukcesu Lispa obejmują Viaweb Paula Grahama, który stał się Yahoo Store, kiedy Yahoo kupił jego firmę; System cen i zakupów biletów lotniczych ITA Software, QPX, używany przez sprzedawcę biletów online Orbitz i innych; Gra Naughty Dog na PlayStation 2, Jak and Daxter, która jest w dużej mierze napisana w dialekcie Lisp specyficznym dla domeny, wynalezionym przez Naughty Dog o nazwie GOAL, którego kompilator sam jest napisany w Common Lisp; i Roomba, autonomiczny odkurzacz automatyczny, którego oprogramowanie jest napisane w L, podzbiór kompatybilny w dół Common Lisp. Być może jeszcze bardziej wymowny jest rozwój witryny internetowej Common-Lisp.net, w której znajdują się projekty Open Source Common Lisp, oraz liczba lokalnych grup użytkowników Lisp, które pojawiły się w ciągu ostatnich kilku lat.

krdluzni
źródło
4

„Lisp jest wart nauki dla głębokiego doświadczenia oświecenia, jakie będziesz mieć, kiedy w końcu go zdobędziesz; to doświadczenie uczyni z ciebie lepszego programistę na resztę swoich dni, nawet jeśli tak naprawdę nigdy nie używasz zbyt często samego Lispa”.

- Eric S. Raymond, „Jak zostać hakerem”

http://www.paulgraham.com/avg.html

eric.christensen
źródło
3

Zgadzam się, że Lisp jest jednym z tych języków, których nigdy nie wolno używać w celach komercyjnych. Ale nawet jeśli tego nie zrobisz, nauczenie się tego zdecydowanie poszerzy twoje zrozumienie programowania jako całości. Na przykład nauczyłem się Prologu na studiach i chociaż nigdy go później nie używałem, pozwoliłem sobie lepiej zrozumieć wiele koncepcji programowania i (czasami) bardziej docenić języki, których używam.

Ale jeśli masz się tego nauczyć ... koniecznie przeczytaj artykuł On Lisp

Adam Haile
źródło
Mała uwaga: na Lisp nie jest odpowiednim wprowadzeniem do Lispa, przeczytaj najpierw coś innego. Polecam Practical Common Lisp.
Luís Oliveira,
3

Nauka lisp sprawi, że Javascript w zupełnie innym świetle! Lisp naprawdę zmusza cię do zrozumienia zarówno rekurencji, jak i całości „funkcji jako obiektów pierwszej klasy” - paradygmatu. Zobacz doskonały artykuł Crockforda na temat Scheme vs Javascript . Javascript jest obecnie prawdopodobnie najważniejszym językiem, więc jego lepsze zrozumienie jest niezwykle przydatne!

Erlend Halvorsen
źródło
1
Najważniejszy język? Myślę, że nie, sir.
TraumaPony
7
Cóż, jest dostępny na prawie każdym urządzeniu z przeglądarką internetową (i prawdopodobnie na kilku takich, które jej nie mają), więc jeśli chodzi o języki do uruchamiania aplikacji dla użytkowników końcowych, ma prawdopodobnie największą penetrację ze wszystkich języków programowania na świecie . Oczywiście możesz mieć zupełnie inne zdanie na temat tego, co jest ważne. Czy będzie używany do leczenia raka? Prawdopodobnie nie. Ale czy nam się to podoba, czy nie, będzie to jeden z kamieni węgielnych rozwoju aplikacji (internetowych) w nadchodzących latach.
Erlend Halvorsen
1
Poszedłem tą samą drogą! Chociaż korzystałem już z funkcji funkcjonalnych i prototypowania Javascript, po nauczeniu się Lisp Javascript był dla mnie nowym językiem.
Luka Ramishvili
3

Gimp's Script-Fu jest wargowy. To aplikacja do zabijania w Photoshopie.

Peter Turner
źródło
3

Okej, może i jestem dziwny, ale naprawdę nie lubię esejów Paula Grahama tak bardzo, a Lisp to naprawdę trudna książka, jeśli nie masz jeszcze pojęcia o Common Lisp. Zamiast tego powiedziałbym, że wybierzesz Siebel's Practical Common Lisp . Jeśli chodzi o „zabójcze aplikacje”, Common Lisp wydaje się znajdować swoje miejsce w niszowych sklepach, takich jak ITA , więc chociaż nie ma aplikacji będącej synonimem CL, tak jak Rails dla Rubiego, są miejsca w branży, które go używają, jeśli to robisz trochę kopania.

C Hogg
źródło
2

Skomplikowana składnia? Piękno seplenienia polega na tym, że ma śmiesznie prostą składnię. To tylko lista, gdzie każdy element listy może być inną listą lub podstawowym typem danych.

Warto się tego nauczyć ze względu na sposób, w jaki poprawia zdolność kodowania do myślenia o funkcjach i ich używania jako po prostu innego typu danych. Poprawi to sposób, w jaki kodujesz w języku imperatywnym i / lub zorientowanym obiektowo, ponieważ pozwoli Ci być bardziej elastycznym mentalnie w zakresie struktury kodu.

Antonio Haley
źródło
2

Aby dodać do innych odpowiedzi:

Ponieważ kurs SICP (filmy są dostępne tutaj ) jest niesamowity: uczy języka Lisp i wiele więcej !

OysterD
źródło
2

Zabójcza aplikacja? Franz Inc. ma długą listę historii sukcesu , ale ta lista obejmuje tylko użytkowników AllegroCL ... Są prawdopodobnie inni. Moją ulubioną jest historia o Naughty Dog , ponieważ byłem wielkim fanem gier Crash Bandicoot.

Do nauki języka Common Lisp polecam Practical Common Lisp . Ma praktyczne podejście, które przynajmniej dla mnie sprawiło, że było to łatwiejsze niż w przypadku innych książek, które przeglądałem.

Vetle
źródło
2

Możesz dziś użyć Clojure do pisania testów i skryptów na maszynie wirtualnej Java. Chociaż istnieją inne języki Lisp zaimplementowane w JVM, myślę, że Clojure najlepiej radzi sobie z integracją z Javą.

Są chwile, kiedy język Java sam przeszkadza w pisaniu testów kodu Java (w tym „tradycyjnego programowania komercyjnego”). (Nie mam na myśli tego, że jako oskarżenie Javy - inne języki mają ten sam problem - ale to fakt. Ponieważ temat, a nie Java, nie będę się rozwijał. Zapraszam do rozpoczęcia nowego tematu, jeśli ktoś chce o tym porozmawiać.) Clojure eliminuje wiele z tych przeszkód.

Bill Smith
źródło
2

Lisp może być używany wszędzie tam, gdzie używasz tradycyjnego programowania. Nie różni się tak bardzo, jest po prostu potężniejszy. Piszesz aplikację internetową? możesz to zrobić na Lispie, pisząc aplikację desktopową? możesz to zrobić na Lispie, cokolwiek, prawdopodobnie możesz to zrobić na Lispie, Pythonie lub jakimkolwiek innym programowaniu ogólnym (jest kilka języków, które nadają się tylko do jednego zadania).

Największą przeszkodą będzie prawdopodobnie akceptacja twojego szefa, twoich rówieśników lub klientów. To jest coś, z czym będziesz musiał z nimi pracować. Wybór pragmatycznego rozwiązania, takiego jak Clojure, które może wykorzystać aktualną bazę instalacyjną infrastruktury Java, od maszyny JVM po biblioteki, może Ci pomóc. Ponadto, jeśli masz program Java, możesz stworzyć architekturę wtyczek i napisać dla niego wtyczki Clojure, a następnie napisać połowę kodu w Clojure.

Pablo
źródło
1

Nie ma powodu, ale (trywialne) AutoCAD obsługuje środowiska wykonawcze LISP i DCL. Jest to wygodny sposób pisania złożonych makr (w tym automatyzacji ActiveX), jeśli nie chcesz używać języka VBA lub ich zestawów SDK C ++ lub .NET lub jeśli wyrażenie języka DIESEL go nie wycina.

Wiele funkcji programu AutoCAD to w rzeczywistości procedury LISP.

Facet z CAD
źródło
0

Składnia nie ma znaczenia, czytelność nie!

kokos
źródło
0

Zabójcza aplikacja? Jedną jest wyszukiwarka lotów firmy ITA Software.

Jeśli chodzi o „dlaczego”, najprawdopodobniej uczyni cię to lepszym programistą i jest bardzo mało prawdopodobne, że uczyni cię gorszym. Może jednak sprawić, że wolisz dialekty seplenienie od innych języków.

Watyna
źródło