Почему я должен учиться Lisp?

голоса
114

Я действительно чувствую , что я должен учиться Lisp и есть много хороших ресурсов там , чтобы помочь мне сделать это.

Я не отпугиваю сложный синтаксис, но где в «традиционном коммерческом программировании» я бы найти места, это имело бы смысл использовать его вместо процедурного языка.

Есть коммерческий убийца-приложение, что там было написано в Лиспе?

Задан 07/08/2008 в 14:54
источник пользователем
На других языках...                            


29 ответов

голоса
120

Лисп является большим и сложным языком, с большим и сложной средой выполнением, чтобы поддержать его. По этой причине, Lisp лучше всего подходит для больших и сложных проблем.

Теперь, сложная проблема , не то же самое , как сложные один. Комплекс проблем является один с большим количеством мелких деталей, но не сложно. Пишешь систему бронирования авиакомпании является сложным делом, но с достаточным количеством денег и программистами это не сложно. Получить разницу?

Сложная проблема состоит в один, который является запутанным, один, где традиционные разделяй и властвуй не работает. Управление роботом, или при работе с данными, которые не табличная (языки, например), или с высокой динамикой ситуации.

Лисп очень хорошо подходит для задач, где решение должно быть расширяемым; Классический пример является текстовым редактором Emacs. Она полностью программируется, и, таким образом, среда программирования в его собственном праве.

В своей знаменитой книге PAIP , Норвиг говорит , что Lisp идеально подходит для поискового программирования. То есть, программирование решение проблемы , которые до конца не изучен (в отличие от системы он -лайн бронирования). Другими словами: Сложные проблемы.

Кроме того, обучение Lisp будет напоминать вам о чем-то фундаментальном, что было забыто: разница между фон Неймана и Тьюринга. Как известно, модель Тьюринга вычислений интересная теоретическая модель, но бесполезна в качестве модели для проектирования компьютеров. Фон Нейман, с другой стороны, разработана модель того, как компьютеры и вычисления должны были выполнить: Модель фон Неймана. Центральное место в модели фон Неймана является то, что у вас есть, но одна память и хранить как код и данные там. тщательно Обратите внимание, что программа Java (или C #, или что угодно) является проявлением модели Тьюринга. Вы можете установить программу в бетоне, раз и навсегда. Тогда вы надеетесь, что вы можете иметь дело со всеми данными, которые выкинут на него.

Лисп поддерживает модель фон Нейман; там нет резкой, заранее определенной границы между кодом и данными. Программирование на Лиспе открывает свой ум к власти модели фон Неймана. Программирование на Лиспе заставляет вас видеть старые концепции в новом свете.

Наконец, будучи интерактивным, вы будете учиться взаимодействовать с вашими программами, как вы развиваете их (в отличие от компиляции и запуска). Это также изменить способ программирования, а также способ просмотра программ.

С помощью этого интро я могу, наконец, предложить ответ на ваш вопрос: вы не найдете места, где затмевает «традиционные» язык?

Если вы опытный программист, требуются дополнительные инструменты. И нет никакого инструмента более продвинутого, чем Лисп. Или, другими словами: Ответ да, если ваши проблемы трудно. Не иначе.

Ответил 15/09/2008 в 16:02
источник пользователем

голоса
54

Одним из основных применений Лиспа в области искусственного интеллекта. Мой друг в колледже взял выпускник AI курс и его главный проект , который он написал « Lights Out » решатель в Лиспе. Несколько версий его программы используются несколько различных процедур и тестирования ИИ на 40 или так компьютеры дали очень интересные результаты (я хочу это было где - то в Интернете мне ссылку, но я не думаю , что это).

Два семестра назад я использовал схему (язык , основанный на Lisp) , чтобы написать интерактивную программу , которая имитируется Эббот и Костелло «Кто на первую» рутине. Входной сигнал от пользователя был подобран против некоторых довольно сложных структур данных (напоминающие карты на других языках, но гораздо более гибкие) , чтобы выбрать то , что соответствующий ответ будет. Я также написал процедуру , чтобы решить 3x3 слайд головоломку (алгоритм , который может быть легко расширен до больших головоломок слайда).

Таким образом, обучение Lisp (или Scheme) не может дать много практических применений, помимо искусственного интеллекта, но это чрезвычайно ценный опыт, как и многие другие заявили. Программирование в функциональном языке, как Лисп также поможет вам думать рекурсивно (если у вас возникли проблемы с рекурсией на других языках, это может быть большим подспорьем).

Ответил 07/08/2008 в 15:22
источник пользователем

голоса
52

В ответ на @lassevk :

альтернативный текст

Ответил 16/09/2008 в 07:44
источник пользователем

голоса
41

сложный синтаксис ??

Синтаксис Лиспа невероятно прост .

Убийца приложение написано в сюсюкать: Emacs . Лисп позволит расширить Emacs по желанию делать почти все , что вы можете думать о том , что редактор мог бы сделать.

Но , вы должны только научиться сюсюкать , если вы хотите , чтобы и вы никогда не получите использовать на работе когда - либо, но это до сих пор удивительным.

Кроме того, я хочу добавить: даже если вы найдете места, где сюсюкать будет иметь смысл, вы, вероятно, не кому-либо еще убедить, что он должен быть использован в течение Java, C ++, C #, Python, Ruby и т.д.

Ответил 07/08/2008 в 14:56
источник пользователем

голоса
23

Я не могу ответить с первых рук опыт , но вы должны прочитать , что Пол Грэм написал на Лиспе . Что касается «киллера-приложение» частей, прочитать Избиение средних .

Ответил 07/08/2008 в 15:00
источник пользователем

голоса
16

Я запрограммировал в Лиспе профессионально в течение года, и это, безусловно, стоит обучение. Вы будете иметь уникальную возможность удалить избыточность из кода, будучи в состоянии заменить весь шаблонный код с функциями, где это возможно, и макросами, где нет. Вы также будете иметь возможность получить доступ к беспрецедентной гибкости во время выполнения, свободно переводить между кодом и данными. Таким образом, ситуации, когда действия пользователя могут вызвать необходимость создания сложных структур динамически где Lisp действительно сияет. Популярные авиакомпании планировщики летных написаны на Лиспе, и есть также много CAD / CAM в Лиспе.

Ответил 12/08/2008 в 14:10
источник пользователем

голоса
8

Lisp является очень полезным для создания маленьких DSLs. Я получил копию Лиспа в коробке работает на работе, и я написал немного DSLs опрашивать базы данных сервера SQL и генерируют слои данных и т.д. в C #. Весь мой котел пластины код теперь написан на LISP макросов, которые выводятся на C #. Я генерировать HTML, XML, все виды вещей с ней. В то время как я хотел бы использовать Lisp для повседневного кодирования, Lisp может принести практическую пользу.

Ответил 26/08/2008 в 11:48
источник пользователем

голоса
8

Если вы хотите программирования вы должны научиться Lisp для чистой радости от него. XKCD прекрасно выражает интеллектуальное просветление , что следует. Обучение Lisp для программиста , что медитация является для буддийского монаха (и я имел в виду это без всякого кощунственного подтекста).

Ответил 26/08/2008 в 10:51
источник пользователем

голоса
5

Любой язык выглядит намного сложнее, когда один не используют общие соглашения вдавливания языка. Когда один следует за ними Лисп, один видит, как он выражает структуру синтаксиса дерева довольно легко (обратите внимание, что это не совсем верно, так как предварительный просмотр лежит немного, а г должен согласовать с FNS в рекурсивном быстрой сортировки аргумента):

(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))))))
Ответил 12/08/2008 в 14:03
источник пользователем

голоса
4

«Lisp стоит обучение для глубокого опыта просветления вы будете иметь, когда вы, наконец, получить его, что опыт сделает вас лучшим программистом на всю оставшуюся часть дня, даже если вы никогда не использовать сам много Lisp.»

--Eric S. Raymond, «Как стать хакером»

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

Ответил 06/08/2011 в 23:06
источник пользователем

голоса
4

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

Один из наиболее часто повторяются мифов о Lisp является то, что это «мертвая». Хотя это правда, что Common Lisp не так широко используется, как, скажем, Visual Basic или Java, это кажется странным, чтобы описать язык, который продолжает использоваться для разработки новых и продолжает привлекать новых пользователей, как «мертвый». Некоторые недавние истории успеха лисповских включают Viaweb Пола Грэма, который стал Yahoo Store, когда Yahoo купил его компанию; ITA Software, цены авиабилетов и торговые системы, QPX, используемых интернет-продавец билетов Orbitz и других; игра Naughty Dog для PlayStation 2 в, Jak и Daxter, который в основном написан в диалект Лиспа предметно-ориентированного Naughty Dog изобрел называется GOAL, чей компилятор сам написан на Common Lisp; и Roomba, автономный робот пылесос, программное обеспечение которой записано в L, A вниз совместимое подмножество Common Lisp. Возможно, еще более показательным является рост Common-Lisp.net веб-сайт, который размещен с открытым исходным кодом проектов Common Lisp, а число местных лисповских групп пользователей, которые возникли в последние несколько лет.

Ответил 02/04/2010 в 04:40
источник пользователем

голоса
4

Обучение LISP / Схемы не может дать вам любое увеличение пространства приложений, но это поможет вам получить лучшее представление о функциональном программировании, его правил, и его исключения.

Это стоит инвестиция времени только, чтобы узнать разницу в красоте шести вложенных чистых функций, и кошмар шести вложенных функций с побочными эффектами.

Ответил 27/11/2008 в 06:34
источник пользователем

голоса
4

Я обнаружил, что изучение нового языка, всегда влияет на ваш стиль программирования на языках вы уже знаете. Для меня это всегда заставило меня думать по-разному, чтобы решить проблему в моем родном языке, который является Java. Я думаю, в общем, он просто расширяет свой горизонт в перспективе программирования.

Ответил 12/08/2008 в 15:51
источник пользователем

голоса
3

Gimp в Script-Fu является lipsish. Это фотошоп-убийца приложение.

Ответил 02/10/2008 в 16:56
источник пользователем

голоса
3

Я взял «LISP класс» в колледже еще в восьмидесятых годах. Несмотря на grokking все концепции , представленные в классе, я остался без какой - либо признательности за то , что делает сюсюкать большой. Боюсь , что многие люди смотрят на сюсюкать , как только другой язык программирования, который является то , что курс в колледже сделал для меня так много лет назад. Если вы видите , кто жалуется на LISP синтаксиса (или его отсутствие), есть хороший шанс , что они один из тех людей , кто не понял величие LISP в. Я был один из тех людей , в течение очень долгого времени.

Он не был до тех пор, два десятилетия спустя, когда я возродил мой интерес к шепелявости, что я начал «получить», что делает сюсюкать интересно - для меня все равно. Если вам удастся узнать сюсюкать, не имея свой ум взорван блокированием и LISP макросов, вы, вероятно, пропустил точку.

Ответил 30/08/2008 в 23:47
источник пользователем

голоса
3

Обучение сюсюкать поставит Javascript в совершенно ином свете! Lisp действительно заставляет вас понять , как рекурсию и целую «функцию , как первые объекты класса» -paradigm. См Crockfords прекрасную статью по схеме против Javascript . Javascript, пожалуй, самый важный язык вокруг сегодня, поэтому понимание , что лучше очень полезно!

Ответил 20/08/2008 в 10:58
источник пользователем

голоса
3

Если вы должны спросить себя, если вы должны научиться шепелявость, вы, вероятно, не нужно.

Ответил 12/08/2008 в 16:21
источник пользователем

голоса
3

Хорошо, я мог бы быть странно , но я действительно не нравится эссе Пола Грэма , что много и на Лиспе действительно грубо собирается книга , если вы не имеете некоторое представление о Common Lisp уже. Вместо этого, я бы сказал , что пойти на Siebel в Practical Common Lisp . Что касается «убийц-приложения», Common Lisp , кажется, найти свое место в нише магазинах, как ITA , так что пока не существует приложение синонима CL Кстати Rails для Ruby , есть места в промышленности , которые используют его , если вы делаете немного копания.

Ответил 07/08/2008 в 15:12
источник пользователем

голоса
3

Я согласен, что Lisp является одним из тех языков, которые вы никогда не можете использовать в коммерческих условиях. Но даже если вы не можете, узнав это, безусловно, расширить свое понимание программирования в целом. Например, я узнал, Prolog в колледже, и в то время как я никогда не использовал его после того, как я дал мне более глубокое понимание многих концепций программирования и (иногда) более высокую оценку языков я использую.

Но если вы собираетесь изучать его ... все средства, читайте на Лиспе

Ответил 07/08/2008 в 15:01
источник пользователем

голоса
2

Лисп может использоваться везде, где используется традиционное программирование. Это не то, что отличается, это просто более мощным. Написание веб-приложение? Вы можете сделать это на Лиспе, писать приложения на рабочем столе? Вы можете сделать это на Лиспе, что угодно, вы, вероятно, можете сделать это на Лисп или Python, или любое другое обобщенного программировании (есть несколько языков, которые подходят только для одной задачи).

Самым большим препятствием, вероятно , будет принятие вашего босса, ваших коллег или ваших клиентов. Это то , что вам придется работать с ними. Выбор практичного решения , как Clojure , которые могут использовать текущую установку базу Java инфраструктуры, от виртуальной машины Java для библиотек, может помочь вам. Кроме того , если у вас есть программа Java, вы можете сделать плагин архитектуры и написать Clojure плагины для него , и в конечном итоге писать половину кода в Clojure.

Ответил 26/11/2008 в 15:41
источник пользователем

голоса
2

Вы можете использовать Clojure сегодня писать тесты и скрипты поверх виртуальной машины Java. Хотя существуют и другие языки Lisp реализованы на JVM, я думаю , что Clojure делает лучшую работу по интеграции с Java.

Есть времена, когда сам язык Java становится на пути написания тестов для Java кода (в том числе «традиционного коммерческого программирования»). (Я не имею в виду, что в обвинительном заключении Ява - другие языки страдают от той же проблемы - но это факт Поскольку тема, не Java, я не буду вдаваться в подробности, пожалуйста, не стесняйтесь, чтобы начать новую тему, если.. кто-то хочет, чтобы обсудить это.) Clojure устраняет многие из этих препятствий.

Ответил 15/09/2008 в 16:16
источник пользователем

голоса
2

Убийца приложение? Franz Inc. имеет длинный список историй успеха , но этот список включает в себя только пользователь AllegroCL ... Есть , вероятно , другие. Мой любимый рассказ о Naughty Dog , так как я был большим поклонником игр Crash Bandicoot.

Для изучения Common Lisp, я бы рекомендовал Practical Common Lisp . Она имеет подход практический , что по крайней мере для меня сделали это проще , чем другие книги , я посмотрел на.

Ответил 26/08/2008 в 11:03
источник пользователем

голоса
2

Чтобы добавить другие ответы:

Поскольку SICP курс (видео доступно здесь ) является удивительным: учит Lisp и многое другое !

Ответил 26/08/2008 в 10:53
источник пользователем

голоса
2

Сложный синтаксис? Красота шепелявость, что он имеет до смешного простой синтаксис. Это просто список, где каждый элемент списка может быть либо другой список или элементарный тип данных.

Это стоит учиться, потому что, как она усиливает ваше кодирование способности думать и использовать функции, как только другой тип данных. Это позволит улучшить пути вам код в императив и / или объектно-ориентированный язык, поскольку это позволит вам быть более гибкими мысленно с тем, как структурирован ваш код.

Ответил 07/08/2008 в 15:01
источник пользователем

голоса
1

Не причина, но (тривиальное) AutoCAD поддерживает выполнения LISP и DCL. Это удобный способ писать сложные макросы (включая автоматизацию ActiveX), если вы не хотите использовать VBA или их C ++ или .NET SDK, или если выражение DIESEL не режет его.

Много функций AutoCAD являются на самом деле LISP подпрограммы.

Ответил 25/09/2008 в 00:26
источник пользователем

голоса
1

Это тема я сам задумался на некоторое время, но я на самом деле не пришли к решению, как обычно время является основной проблемой ...;)

И так как я не могу найти эти ссылки ГНФАР в этом посте я добавить их в интересах общества:

Успех и неудача история: шепелявость в Лаборатории реактивного движения

Действительно впечатляет история успеха: Лисп используется в корпорации Orbitz

Сравнение и анализ ли использовать Лисп вместо Java: Lisp как альтернатива Java

Ответил 20/08/2008 в 12:21
источник пользователем

голоса
0

Убийца приложение? Поисковая система полет ITA Software является один.

Что же касается «почему», то, скорее всего, сделает вас лучшим разработчиком и extremnely вряд ли сделает вас хуже одного. Это, однако, может сделать вас предпочитают сюсюкать диалектов на другие языки.

Ответил 09/12/2008 в 11:42
источник пользователем

голоса
0

Не говорю , что это приложение убийцы , но, похоже , это может быть прохладно http://code.google.com/p/plop/

Ответил 29/11/2008 в 05:04
источник пользователем

голоса
0

Синтаксис не имеет значения, читаемость нет!

Ответил 12/08/2008 в 12:59
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more