Lisp w prawdziwym świecie

146

Poeksperymentowałem z Lispem (właściwie Scheme) i stwierdziłem, że jest to bardzo piękny język, o którym chciałbym dowiedzieć się więcej. Wygląda jednak na to, że Lisp nigdy nie jest używany w poważnych projektach i nie widziałem go jako pożądanej umiejętności w żadnej ofercie pracy. Interesuje mnie każdy, kto używał Lispa lub widział go używanego w „prawdziwym świecie”, lub kto wie, czy jest to język czysto akademicki.

tytanowy niszczyciel
źródło
1
@titaniumdecoy: Po odkryciu Clojure i braku wcześniejszych doświadczeń z językami w stylu Lisp, dodałem tag Clojure dla tych, którzy szukają dyskursu do Lispa. :)
Ande Turner
1
@titaniumdecoy: Clojure jest potomkiem Lispa, który działa na JVM i jest w stanie wykorzystywać API napisane w Javie
Ande Turner
12
Nie nauczyłbym się Lispa jako sposobu na ulepszenie swojej kariery, ponieważ tak się nie stanie. Naucz się go, abyś był lepszym programistą.
skaffman
13
Na liście mailingowej Clojure często otrzymujemy historie sukcesu w branży od osób, które używają tego języka.
Rayne,
42
@skaffman: ale czy to nie pomoże poprawić Twojej kariery?
Erik Forbes

Odpowiedzi:

88

Franz, Inc. udostępnia na swojej stronie internetowej niewyczerpaną listę historii sukcesu . Jednak:

Proszę nie zakładać, że Lisp jest przydatny tylko do animacji i grafiki, sztucznej inteligencji, bioinformatyki, B2B i handlu elektronicznego, eksploracji danych, aplikacji EDA / półprzewodników, systemów eksperckich, finansów, inteligentnych agentów, zarządzania wiedzą, mechanicznego CAD, modelowania i symulacji, Język naturalny, optymalizacja, badania, analiza ryzyka, planowanie, telekomunikacja i tworzenie stron internetowych tylko dlatego, że są to jedyne rzeczy, które wymienili. - Kent Pitman

Inne historie sukcesu możemy znaleźć tutaj:  http://lisp-lang.org/success/

oraz lista firm, które obecnie używają Common Lisp: https://github.com/azzamsa/awesome-lisp-companies

Matthias Benkard
źródło
41
Ta notka wydaje mi się bardzo pustą mantrą. Jasne, może być w tych obszarach, ale głównie jako starszy kod. Z mojego doświadczenia z życia wynika, że ​​Python w połączeniu ze swigged C / C ++ znacznie zastąpił Lispa jako język (i) szybkiego prototypowania wybierany przez pragmatycznych hakerów.
Johan Kotlinski
30
@kotlinski gdzie są dowody? kiedy nadmiernie uogólniasz branżę, mówisz o średniej, a nie o najlepszych jej częściach. historie sukcesu prawie za każdym razem podążają za charakterystycznymi i niezbyt przeciętnymi technologiami / pomysłami.
Luka Ramishvili
Więcej tutaj: lisp-lang.org/success (pięknie zaprezentowane) oraz tutaj: firmy korzystające z Common LIsp .
Ehvince
54

Czy elisp Emacsa się liczy? To najbardziej znane mi użycie „prawdziwego świata” (chociaż nie jestem pewien, czy Emacs liczy się jako „prawdziwy świat”).

eschercycle
źródło
Nie, ale vimtak;). Niestety (a może na szczęście) nikt nie napisał poważnego oprogramowania vimscript.
nowy123456
25

jako mały startup stworzyliśmy coś, co niektórzy nazywają „serwerem aplikacji”. ale w rzeczywistości jest to tylko kilka zintegrowanych wspólnych bibliotek lisp do połączeń sql i aplikacji internetowych. niektóre szczegóły są dostępne na stronie projektu cl-dwim

korzystając z tego opracowaliśmy i obsługujemy aplikację internetową dla węgierskiego rządu, która zbiera dane od samorządów i oblicza odpowiednią część budżetu kraju. to jest drugi budżet, który teraz planujemy.

ma około 4000 użytkowników i działa na klastrze komputerów.

od „języka akademickiego”: bawimy się takimi rzeczami, jak trwałe kontynuacje modelowania procesów biznesowych. jest to losowy kod lisp z kilkoma dodatkowymi prymitywami związanymi z procesami i kilkoma ograniczeniami. może zatrzymać się w losowych punktach kodu i zasnąć (zostać zatwierdzonym do bazy danych), czekając na jakieś zewnętrzne zdarzenie.

czy jest to praktyczne czy akademickie? Ty decydujesz ... :)

Attila Lendvai
źródło
Łał! Całkowicie myślałem, że całe oprogramowanie używane przez rząd było napisane jako podstawowe, biorąc pod uwagę, jak bardzo większość z nich jest do dupy. Czy to jest nadal w użyciu?
RR
5
oczywiście, że nie ... zostaliśmy porzuceni, gdy projekt został zaprojektowany, okazał się wykonalny i przydzielono wystarczającą ilość pieniędzy / uwagi. dobrze skomunikowana większa firma przejęła kontrolę i napisała własną wersję w java. ciekawostką jest to, że przez lata prowadzili naszą bazę kodów. pomogłem im przez jeden dzień konsultacji ...
Attila Lendvai,
22

Paul Graham używał i pisał o ViaWeb, które zostało napisane w LISP

Przeczytaj o tym tutaj - Beating the Average

epatel
źródło
4
To nie jest dobry przykład, wyszli z biznesu lata temu
1800 INFORMACJA,
9
Przy okazji, mogę tylko dodać, że myślę, że Paul ma urojenia w tym przypadku: to nie LISP dał im przewagę, po prostu był sprytny i uważny. Mogliby odnieść sukces z VB, gdyby było to jedyne dostępne narzędzie.
Jeff
23
Nie wypadli z interesu, zostali wykupieni przez Yahoo. Duża różnica, przynajmniej dla twórców. :-)
Head Geek
18
@ 1800: Został „wpadł na ziemię” dopiero po tym, jak stał się właścicielem Yahoo i przepisał go w innym języku, więc przestańcie go używać.
wfarr
6
@ 1800: Zapomnij o tym, co powiedział Matthias, myślę, że to całkiem zabawne. Twoje twierdzenie, że „nie było innych znaczących przykładów użycia LISP-a w świecie rzeczywistym” bezpośrednio oznacza, że ​​jesteś wszechwiedzący. Brawo!
Ali
12

Dość nowym projektem open source, który nadal cieszy się konsekwentną i znaczną aktywnością programistyczną, jest LilyPond .

Jest to program do notacji muzycznej, który pobiera łatwy do zapisania plik tekstowy jako dane wejściowe i konwertuje go na piękne nuty (pliki pdf). Oferuje różne sposoby manipulowania wyjściem, jeśli chcesz. Może nawet tworzyć przyzwoicie brzmiące pliki midi. Używam go zawsze, gdy potrzebuję stworzyć ładne nuty, z których będą czytać inni muzycy. Myślę, że to lepsze niż Finale i jest darmowe !

W kategorii komercyjnej jest też Igor Engraver z Notehead . Niestety, witryna nie pozwala mi na umieszczenie bezpośredniego linku do strony, która mówi o Lisp, więc przejdź do pobierania i spójrz na dół, aby znaleźć łącze „Lisp”.

Jest też Naughty Dog (firma zajmująca się grami komputerowymi), która używa Lispa w swoich grach. Ten artykuł mówi o tym, a nawet pokazuje kod.

I jest wiele innych, o których wspomniano i które są powiązane, ale to są główne, które rezonują ze mną (jako kompozytor / programista / gracz / ...).

Galghamon
źródło
1
Jeśli chodzi o Schemera, interesujące i inspirujące jest przeczytanie części podręcznika LilyPond, która wyjaśnia, w jaki sposób Scheme stał się częścią LilyPond. Kiedyś był w całości w C ++, ale odkryli, że musi być bardziej programowalny przez użytkownika i byli w stanie rozwiązać ten problem, przepisując jego części w Scheme i budując interpreter Scheme, który daje użytkownikowi dostęp do LilyPond wewnętrzne.
Lindsey Kuper
10

Gdybym teraz rozpoczął swój własny, duży projekt oprogramowania, podjąłbym decyzję językową w oparciu o powyższe kryteria. Jasne, kocham Lispa, CLOS jest niesamowity, prawdziwe leksykalne skały określające zakres, makra Lispa są fajne (jeśli są używane zgodnie z zaleceniami), a osobiście bardzo lubię składnię Lispa. […] Ale przekonanie mnie, żebym wybrał Lispa do dużego projektu programistycznego, wymagałoby dużo lub specjalnych okoliczności, gdybym był odpowiedzialny za dokonanie wyboru. - Dan Weinreb

Ólafur Waage
źródło
Dobrze - ciesz się, że nie możesz nikogo zatrudnić :)
Jeff
@Jeff: „Ale by przekonać mnie do wybrania Lispa do dużego projektu oprogramowania , wymagałoby to dużo lub specjalnych okoliczności ”. To jest punkt przeciwko Lispowi.
jfs
skąd ten cytat? wyszukiwanie w Google według fragmentów tekstu daje tylko ten post
Należy kliknąć: „powtórz wyszukiwanie z pominiętymi wynikami”. Cytat pochodzi z: discuss.fogcreek.com/joelonsoftware/…
Chris Jester-Young,
5
Twoje zdrowie. Muszę powiedzieć, że ten cytat brzmi silniej niż w rzeczywistości, poza kontekstem. weinreb pracuje teraz w ITA i prowadzi blog między innymi o seplenieniu; zastanawiam się, jak i czy mogło to wpłynąć na jego opinię.
10

Niektóre nowsze:

Pierwsze trzy z nich zostały napisane przy użyciu Weblocks, frameworku WWW CL. Wigflip i Clutu używają czystego Hunchentoot.

Teraz zacznij kodować! :)

Leslie P. Polzer
źródło
10

Kosmiczny Teleskop Hubble'a jest planowany przy użyciu narzędzi planowania Lisp. Wahadłowiec był. Teleskop Webba będzie. Firma, którą piszę Lisp, zajmuje się analizą miliardów dolarów roszczeń z tytułu ubezpieczenia zdrowotnego i rośnie w tempie ~ 30% rocznie, nawet podczas recesji. Zostaliśmy kupieni przez wielką firmę i jeden z naszych programistów dopasował (właściwie ulepszył) wyniki oprogramowania (wielkiej firmy) do analizy roszczeń Medicare, zaczynając od zera, samodzielnie, w ciągu roku. Kod (wielkiej firmy), nie w Lispie, zajął 6 lat i kilku programistów. Problem z karierą polega na tym, że zbyt wielu słucha gadanina o „wielu irytujących, głupich nawiasach” i tak dalej. Większość menedżerów nie „rozumie” i wolałaby mieć projekt w języku na tyle znanym, aby mogli zarządzać nim w skali mikro. Myślą "

Więzień
źródło
9

Uważam, że Autocad ma rozszerzenia, które używają Lisp do rozszerzenia produktu. Zobacz AutoLISP .

Alex Miller
źródło
Poprawny. Implementuje również ActiveX - jest dość potężny i sam AtoDesk używa go do pisania poleceń „wewnętrznych”. Zasadniczo jest on interpretowany na ObjectARX - C ++.
Facet z CAD
8

Istnieje wiele firm, projektów i produktów, które używają Lispa w różnych rolach - pracowałem dla kilku z nich.

Istnieją dwa istotne punkty:

  1. możesz nigdy nie wiedzieć, że twój najnowszy element elektroniki użytkowej został zbudowany z Common Lisp lub nawet zaprogramowany w nim, albo że jakaś usługa, z której korzystasz, jest zasilana przez serwer Lisp. Wniosek, że Lisp „nigdy nie jest używany” byłby nieprawidłowy.

  2. … I, podobnie jak w przypadku wielu domen, te oferty pracy nigdy nie pojawiły się na Monster.com. To, że nigdy nie widziałeś oferty pracy, nie oznacza, że ​​nie ma tam żadnych ofert pracy wymaganych przez Lisp lub odpowiednich narzędzi do pracy.

Bogaty
źródło
Więc gdzie nie pojawiają się te miejsca pracy? Sam próbowałam to rozwiązać.
Charlie Flowers
2
Z doświadczenia: listy mailingowe, bezpośrednia prywatna poczta od firm i rekruterów, osobiste wzmianki, grupy użytkowników i tym podobne.
Rich
1
dzięki. Wygląda na to, że mówisz to samo, co przeczytałem gdzie indziej ... że świat Lispa to mała społeczność i możesz to wykorzystać, wnosząc wkład i dając się poznać w tej społeczności, a to prawdopodobnie najlepszy sposób na zdobycie Lispa Oferty pracy. Czy sie zgadzasz?
Charlie Flowers
5
Tak. Co więcej, to najlepszy sposób na zdobycie pracy, kropka. Zademonstruj swoje umiejętności, poznaj ludzi i daj się poznać.
Rich
8

Uważam, że system wtyczek GIMP jest oparty na Scheme. Nie wiem, czy jest to całkowicie „prawdziwy świat”, ale przynajmniej wydaje się, że jest to praktyczne zastosowanie Lispa.

Tikhon Jelvis
źródło
6

Wyszukaj listę ACL2 . Jest to silnik logiki formalnej oparty na lisp, który był używany w wielu projektach w „prawdziwym świecie”, takich jak formalne metody bezpieczeństwa oprogramowania i dowody poprawności sprzętu zmiennoprzecinkowego.

BCS
źródło
To niesamowity program.
user37248
6

Jeśli moje plany się sprawdzą, wszyscy będziemy używać Scheme za 5 lat! ; p

leppie
źródło
Moje plany są prawdopodobnie dość podobne: 1) Stwórz wspaniałą bibliotekę na szczycie schematu (w połowie drogi). 2) Przetestuj bibliotekę, pisząc w niej fajne programy (1 wyłączony, jeszcze kilka). 3) Otwórz bibliotekę (już zrobione, ale bardzo przypadkowo). 4) ... 5) Lisp staje się naturalnym narzędziem pracy w pracy.
Ali
3
Ciągnę za Ciebie. Ale zostało ci tylko 2 i pół roku! Mam nadzieję, że jesteś na dobrej drodze.
Charlie Flowers
10
Cześć. Minęło 5 lat.
Karol S
1
Lepiej późno niż wcale!
Loïc Faure-Lacroix,
1
@ LoïcFaure-Lacroix Wciąż próbuję! : D
leppie
6

Byłem pod dużym wrażeniem, kiedy dowiedziałem się, że PRISM („Projekt Prism to długoterminowy projekt tworzenia narzędzi oprogramowania do planowania radioterapii, w tym narzędzi sztucznej inteligencji, a także ręcznych systemów symulacji”) jest napisany w Common Lisp.

W swojej pracy piszę oprogramowanie wykorzystujące DICOM i muszę powiedzieć, że napisanie dobrej implementacji DICOM jest trudnym zadaniem. W swoim raporcie opisują, w jaki sposób Common Lisp pozwolił im zbudować dobrą implementację DICOM, która jest lepsza (przynajmniej pod pewnymi względami) niż inne implementacje przy mniejszym wysiłku.

dmitry_vk
źródło
6

Lisp jest używany w algorytmicznej kompozycji muzycznej w świecie rzeczywistym z biblioteką Common Music . Rick Taube's Notes from the Metalevel to świetny tekst wprowadzający do tematu, który zawiera kilka przykładów komponowania w Lisp. Zobacz katalog przykładów tutaj i kopię tekstu tutaj .

Curtis
źródło
5

Cóż, raczej nie jest to główny nurt, ale używam seplenienia w tak dużej części mojego kodu badawczego, na ile jest to możliwe. Jest to zdecydowanie najlepszy język, jaki znalazłem, jeśli chodzi o równowagę dynamizmu i ekspresji, a jednocześnie generuje przyzwoitą wydajność dla liczb itp.

Szymon
źródło
5

Google App Inventor jest napisany w Scheme

shikhar
źródło
5

Właśnie zdałem sobie sprawę, że Maxima , program do algebry symbolicznej, jest napisany w Common Lisp. Używam tego od jakiegoś czasu i myślę, że jest to również bardzo dobry przykład z życia.

Jan Stolarek
źródło
3

Lisp podjął próbę skoku do prędkości światła na początku lat 80-tych. Zanim pojawiły się komputery PC, były produkowane komercyjnie "Maszyny Lisp", które bardzo przypominały nowoczesne stacje robocze, ale które sepleniły "do samego końca". Sprzęt Lisp ostatecznie przegrał na rzecz Intela (podobnie jak wszystko inne). Oprogramowanie Lisp ostatecznie przegrało z C / C ++. Istnieje wiele teorii, dlaczego tak jest. http://www.andromeda.com/people/ddyer/lisp/

ddyer
źródło
2

Język programowania schematów jest używany jako język skryptowy przez oprogramowanie do modelowania przepływu FLUENT (obliczeniowa dynamika płynów, CFD).

jfs
źródło
2

W przypadku aplikacji AutoCAD AutoLISP / Visual LISP są często używane w rzeczywistych projektach i istnieje duża społeczność użytkowników.

Jimmy Bergmark - JTB World
źródło
2

Widzę, że kilka osób już o tym wspomniało, ale lisp jest szeroko stosowany w niestandardowym rozwoju Autocad. Autocad zawiera wbudowany interpreter lisp. Jest to jeden z najprostszych sposobów na rozszerzenie produktu i daje możliwość szybkiego zwiększenia produktywności.

Kompilacja nie jest wymagana po stronie użytkownika, a 1 lub więcej wyrażeń lisp liniowych można wprowadzić w wierszu poleceń i wykonać natychmiast na rysunku. Projektantom i kreślarzom, którzy chcą zrobić nawet mały krok w nauce podstaw seplenienia, może to zapewnić ogromne korzyści w zakresie produktywności.

Autocad zapewnia wiele innych sposobów dostosowywania swoich produktów; ObjectARX (C ++), VB, C #, itd. Interfejs lisp jest zdecydowanie najłatwiejszy do nauczenia się i wdrożenia. A większość innych środowisk deweloperskich w jakiś sposób używa lisp.

Interpreter lisp został udostępniony w bardzo wczesnej wersji programu Autocad i został nazwany Zmienne i wyrażenia. Był dość ograniczony, ale okazał się takim sukcesem dla użytkowników, że szybko dodano dodatkowe funkcje. Pełnowymiarowe wizualne IDE było później (chyba w wersji 2000).

Nie chciałbym zgadywać, ile milionów (miliardów?) Linii kodu lisp jest dostępnych dla Autocad. Wyszukiwanie w Google w „autocad .lsp” zwraca 2,3 miliona trafień.

Ok, dość pisania, wróciło do pracy, piszę więcej seplenienia dla mojego obecnego projektu

bluesixty
źródło