Я экспериментировал с Lisp (на самом деле Scheme) и обнаружил, что это очень красивый язык, о котором мне интересно узнать больше. Однако похоже, что Lisp никогда не используется в серьезных проектах, и я не видел, чтобы он указывался как желаемый навык при размещении вакансий. Мне интересно услышать мнение любого, кто использовал Лисп или видел, как он используется в «реальном мире», или кто знает, считается ли он чисто академическим языком.
Лисп в реальном мире
Ответы (38)
Franz, Inc. предоставляет на своем веб-сайте исчерпывающий список историй успеха. Тем не мение:
Не думайте, что Lisp полезен только для анимации и графики, искусственного интеллекта, биоинформатики, B2B и электронной коммерции, интеллектуального анализа данных, приложений EDA / полупроводников, экспертных систем, финансов, интеллектуальных агентов, управления знаниями, механического САПР, моделирования и симуляции, Естественный язык, оптимизация, исследования, анализ рисков, планирование, телекоммуникации и веб-разработка - только потому, что это единственное, что они перечислили. - Кент Питман
Мы можем найти другие истории успеха здесь: http://lisp-lang.org/success/
и список текущих компаний, использующих Common Lisp: https://github.com/azzamsa/awesome-lisp-companies
Считается ли elisp Emacs? Это наиболее "реальный мир" использования, с которым я знаком (хотя я не уверен, что Emacs также считается "реальным миром").
vim
делает;). К сожалению (а может быть, к счастью), на vimscript
никто не написал серьезного программного обеспечения.
- person new123456; 26.07.2011
Программное обеспечение ITA использует Common Lisp для его недорогой поисковой системы QPX, которая поддерживает такие сайты, как < href = "http://orbitz.com" rel = "noreferrer"> Orbitz, каяк и American и United Airlines среди многих других. Он также частично используется в будущей системе бронирования пассажиров для Air Canada. Пол Грэм в прошлом писал немного о Lisp в ITA.
(Отказ от ответственности: я работаю там.)
История взлета и падения Lisp в Лаборатории реактивного движения
В качестве небольшого стартапа мы создали нечто, что некоторые называют «сервером приложений». но на самом деле это просто набор интегрированных общих библиотек lisp для подключения sql и веб-приложений. некоторые подробности доступны на странице проекта cl-dwim
Используя это, мы разработали и эксплуатируем веб-приложение для правительства Венгрии, которое собирает данные от местных органов власти и рассчитывает соответствующую часть бюджета страны. это второй бюджет, который мы планируем сейчас.
у него около 4000 пользователей, и он работает на кластере компьютеров.
Что касается «академического языка»: мы играем с такими вещами, как постоянные продолжения для моделирования бизнес-процессов. это какой-то случайный код lisp с несколькими дополнительными примитивами, связанными с процессами, и несколькими ограничениями. он может останавливаться в произвольных точках кода и засыпать (попадать в базу данных), ожидая какого-то внешнего события.
это практическое или академическое? Вам решать... :)
Reddit изначально был написан на Лиспе, а затем был переписан на Python. Хороший анализ переключателя и его значения для Lisp можно найти по адресу В поисках Лиспа.
Пол Грэм использовал и писал о ViaWeb, написанном на LISP.
Прочтите об этом здесь - Превосходя средний уровень
Программное обеспечение ITA использует изрядное количество CL.
http://www.itasoftware.com/careers/l_e_t_lisp.html?catid=8
Относительно недавний проект с открытым исходным кодом, который все еще активно развивается, - это LilyPond.
Это программа для нотной записи, которая принимает на вход простой для написания текстовый файл и преобразует его в красивые ноты (файлы в формате PDF). Предлагает всевозможные способы поиграть с выводом, если хотите. Он даже может создавать файлы формата midi с приличным звучанием. Я использую его всякий раз, когда мне нужно написать красивые ноты, которые будут читать другие музыканты. Думаю, это лучше, чем Finale, и это бесплатно!
В коммерческой категории есть также Игорь Гравер из Notehead. К сожалению, этот сайт не позволяет мне размещать прямую ссылку на страницу, где рассказывается о Lisp, поэтому перейдите к загрузкам и посмотрите внизу ссылку «Lisp».
Еще есть Naughty Dog (компания, занимающаяся компьютерными играми), которая использует Лисп в своих играх. Эта статья говорит об этом и даже показывает некоторый код.
И есть много других, которые были упомянуты и связаны с ними, но это основные из них, которые резонируют со мной (как композитор / программист / геймер / ...).
Планирование космического телескопа Хаббла осуществляется с помощью инструментов планирования Лиспа. Шаттл был. Телескоп Уэбба будет. Компания, для которой я пишу Lisp, анализирует заявки на медицинское страхование на миллиарды долларов и растет примерно на 30% в год даже во время рецессии. Нас купила огромная компания, и один из наших программистов за год самостоятельно сопоставил (фактически улучшил) производительность программного обеспечения (огромной компании) для анализа заявлений Medicare, начиная с нуля. Код (огромной компании), написанный не на Лиспе, занял 6 лет и несколько программистов. С точки зрения карьеры проблема в том, что слишком многие слушают болтовню о «множестве раздражающих глупых скобок» и так далее. Большинство менеджеров не понимают этого и предпочли бы иметь проект на достаточно знакомом языке, чтобы они могли управлять им на микроуровне. Они думают, что «Lisp = AI», и даже не хотят допускать, чтобы это был хороший язык общего назначения. Они просто затыкают уши. Нет совершенных инструментов для создания веб-сайтов, ориентированных на M $, или кластеризации или конвейерной обработки существующих приложений Java, и это 90% того, что волнует ИТ в наши дни роста за счет приобретений. Я мог бы продолжать, но это только разозлило бы мне горечь. :)
Если бы я сейчас начал свой собственный крупный программный проект, я бы принял решение о языке на основе вышеуказанных критериев. Конечно, я люблю Lisp, CLOS - это круто, настоящая лексическая скала, макросы Lisp - это круто (когда используются по назначению), и лично мне очень нравится синтаксис Lisp. […] Но потребовалось бы много времени или особых обстоятельств, чтобы убедить меня выбрать Lisp для крупного программного проекта, если бы я отвечал за выбор. - Дэн Вайнреб
Еще несколько свежих:
- Thanandar, немецкая браузерная игра: http://www.thanandar.de/
- Аула Польска, сообщество польских предпринимателей: http://www.aulapolska.pl/
- LAMsight, приложение для медицинских обследований: https://www.lamsight.org/
- Wigflip, игровая площадка глупых gfx: http://wigflip.com/ :)
- Clutu, многопользовательские кроссворды AJAX: http://www.clutu.com/
Первые три из них были написаны с использованием Weblocks, веб-фреймворка CL. Wigflip и Clutu используют чистый Hunchentoot.
Теперь займемся кодированием! :)
Я считаю, что у Autocad есть расширения, которые используют Lisp для расширения продукта. См. AutoLISP.
Питер Кристенсен составил отличный список (финансово) успешных шепелявых компаний.
http://www.pchristensen.com/blog/lisp-companies/
Есть множество компаний, проектов и продуктов, которые используют Lisp в различных ролях - я работал для некоторых из них.
Есть два важных момента:
Возможно, вы никогда не узнаете, что ваша последняя часть бытовой электроники была построена на Common Lisp или даже запрограммирована на нем, или что какая-то служба, которую вы используете, работает на Lisp-сервере. Было бы неправильно делать вывод, что Lisp «никогда не используется».
… И, как и во многих других доменах, эти вакансии никогда не появлялись на Monster.com. Просто потому, что вы никогда не видели объявления о вакансии, это не означает, что нет никаких возможностей Lisp или подходящего инструмента для работы.
Я считаю, что система плагинов GIMP основана на схеме. Я не знаю, полностью ли это «реальный мир», но, по крайней мере, это похоже на практическое применение Лиспа.
Найдите ACL2. Это механизм формальной логики, основанный на lisp, который использовался для ряда «реальных» проектов, таких как формальные методы обеспечения безопасности программного обеспечения и доказательства правильности для оборудования с плавающей запятой.
Список далеко не исчерпанный в http://www.franz.com/success/all_customer_apps.lhtml а>
Если мои планы сбудутся, мы все будем использовать Scheme через 5 лет! ;п
Я был весьма впечатлен, когда узнал, что PRISM («Проект Prism - это долгосрочный проект по созданию программных инструментов для планирования лучевой терапии, включая инструменты искусственного интеллекта, а также системы ручного моделирования. ») написан на Common Lisp.
На своей работе я пишу программное обеспечение, использующее DICOM, и я должен сказать, что написание хорошей реализации DICOM - это трудная задача. В своем отчете они описывают, как Common Lisp позволил им создать хороший Реализация DICOM, которая лучше (по крайней мере, в некоторых отношениях), чем другая реализация с меньшими усилиями.
Я только что понял, что Maxima, программа для символьной алгебры, написана на Common Lisp. Я использую это довольно давно, и я думаю, что это также очень хороший пример из реальной жизни.
Лисп используется в реальной алгоритмической музыкальной композиции с помощью библиотеки Common Music. Notes from the Metalevel Рика Таубе - это отличный вводный текст к предмету, в котором есть множество примеров для написания на Лиспе. См. Каталог примеров здесь и копию текста здесь.
Мэтью Эрик Бассетт об использовании Racket в киноиндустрии: http://www.youtube.com/watch?v=37owCjWnkK0
Дэниел Либгольд о Racket и PS3: http://www.youtube.com/watch?v=oSmqbnhHp1c < / а>
Ну, это вряд ли мейнстрим, но я использую lisp для большей части своего исследовательского кода, насколько это возможно. Это, безусловно, лучший язык, который я нашел для баланса динамизма и выразительности, при этом обеспечивая приличную производительность для чисел и т. Д.
Google App Inventor написан на схеме
GNU Make расширяется с помощью схемы. Случай для программирования в реальном мире :)
https://www.gnu.org/software/make/manual/html_node/Guile-Integration.html
Лисп попытался перейти на скорость света в начале 80-х. До появления ПК были коммерчески производимые «Машины Лиспа», которые внешне очень напоминали современные рабочие станции, но были шепелявыми «полностью вниз». Аппаратное обеспечение Lisp в конечном итоге проиграло Intel (как и все остальное). Программное обеспечение Lisp в конечном итоге проиграло C / C ++. Есть множество теорий, почему все это так. http://www.andromeda.com/people/ddyer/lisp/
Язык программирования схем используется в качестве языка сценариев в ПО FLUENT Flow Modeling Software (вычислительная гидродинамика, CFD).
Для приложения AutoCAD AutoLISP / Visual LISP часто используется для реальных проектов, и существует большое сообщество пользователей.
Я вижу, что некоторые люди уже упоминали об этом, но lisp широко используется в пользовательской разработке Autocad. Autocad включает встроенный интерпретатор Lisp. Это один из самых простых способов расширить возможности продукта и дает возможность быстро повысить вашу производительность.
На стороне пользователя компиляция не требуется, и в командной строке можно ввести 1 или более выражений line lisp и немедленно выполнить их на чертеже. Для дизайнеров и рисовальщиков, готовых сделать хотя бы небольшой шаг в изучении основ шепелявления, это может стать огромным преимуществом для продуктивности.
Autocad предоставляет ряд других способов настройки своих продуктов; ObjectARX (C ++), VB, C # и т. Д. Lisp-интерфейс, безусловно, самый простой для изучения и реализации. И большинство других сред разработки тем или иным образом используют lisp.
Интерпретатор Lisp был доступен в очень ранней версии Autocad и назывался «Переменные и выражения». Он был довольно ограничен, но пользовался таким успехом у пользователей, что быстро были добавлены дополнительные функции. Полноценная визуальная IDE появилась позже (я думаю, в версии 2000).
Мне не хотелось бы угадывать, сколько миллионов (миллиардов?) Строк кода Lisp доступно для Autocad. Поиск в Google по запросу "autocad .lsp" возвращает 2,3 миллиона обращений.
Хорошо, хватит печатать, он снова работает для меня, пишу больше лишнего для моего текущего проекта :)
Панель инструментов алгоритмической композиции от Пола Берга: http://www.koncon.nl/downloads/ACToolbox/
У моей компании есть программное обеспечение, записанное по схеме (PLT). Программное обеспечение используется в качестве брандмауэра электронной почты для крупных компаний.
http://echowaves.com встраивается в Clojure с хладнокровием. Сайт был создан в качестве учебного упражнения, чтобы понять, можно ли использовать clojure для создания веб-приложений. Ответ - да! Недурно за закрытие в Интернете. Обязательно изучите закрытие - это улучшит вашу карьеру. Код с открытым исходным кодом, если кто-то хочет увидеть пример, каковы типичные движущиеся части для типичного приложения compojure https://github.com/echowaves/echowaves
Как было сказано ранее, система компьютерной алгебры "Maxima" написана на Лиспе, но другие CAS также написаны на Лиспе, например, Axiom и ее ответвления (OpenAxiom и Fricas).
Walmart использует clojure для обработки покупок в режиме реального времени.
Просто добавьте ко всем очень мудрым комментариям выше: посмотрите на инструмент Corman Lisp и узнайте, как встроить ОЧЕНЬ ИНТЕЛЛЕКТУАЛЬНЫЕ ФУНКЦИИ во встроенную систему!
http://www.gensym.com/ - Механизм бизнес-правил в реальном времени имеет множество промышленных клиентов.
Внутренне он написан на Commom Lisp.
Это замечательный язык, но он уродлив, потому что (на мой взгляд, как владелец программного обеспечения и программист) существует очень мало коммерческих пакетов Lisp, а те немногие, которые существуют там, требуют платы за выполнение (потому что правильный пакет Lisp может быть также используется конечными пользователями для написания программ на Лиспе).
Я использую Steel Bank Common Lisp для создания прототипов кода под Windows и Linux, и мне это нравится, но я бы никогда не подумал о выпуске продукта, написанного с его помощью. Нет простого способа настроить доступ к программам одним щелчком, чтобы конечный пользователь никогда не столкнулся с приглашением Lisp. Невозможно отправить скомпилированный продукт, чтобы пользователь не мог его разобрать, внести некоторые изменения, чтобы удалить свое имя и продать его как свое. Я видел упоминания о системах Lisp, в которых можно реализовать обе эти задачи, но они коммерческие, где вы должны платить за каждого конечного пользователя вашей программы во время выполнения, что нелепо.
Lisp может когда-нибудь стать самостоятельным (и я очень надеюсь, что это произойдет), но пока он не пригоден для большинства коммерческих программ. Единственное исключение - это то, что он всегда будет работать в системах, которые вы полностью контролируете, например, на веб-сервере (и я слышал только о паре компаний, использующих его даже для этого).