Почему я должен изучить Lisp? [закрытый]

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
125
задан 6 revs, 4 users 62% 16 December 2014 в 18:33
поделиться

28 ответов

Одно из основного использования для Lisp находится в Искусственном интеллекте. Мой друг в колледже взял выпускника курс AI, и для его основного проекта он записал" , Покидает в спешке " решатель в Lisp. Несколько версий его программы использовали немного отличающиеся стандартные программы AI, и тестирующий приблизительно на 40 компьютерах привел к некоторым крутым результатам (мне жаль, что она не была онлайн где-нибудь для меня для соединения с, но я не думаю, что это).

Два семестра назад я использовал Схему (язык на основе Lisp) для записи интерактивной программы, которая моделировала Abbott и Costello, "Который находится на Первой" стандартной программе. Вход от пользователя был подобран против некоторых довольно сложных структур данных (напоминающий карты на других языках, но намного более гибкий) для выбора, каков соответствующий ответ будет. Я также записал стандартную программу для решения 3x3 загадка слайда (алгоритм, который мог легко быть расширен на большие загадки слайда).

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

55
ответ дан 24 November 2019 в 00:56
поделиться

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

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

0
ответ дан 24 November 2019 в 00:56
поделиться

Не высказывание это - приложение-приманка, но похоже, что это могло быть прохладно http://code.google.com/p/plop/

0
ответ дан 24 November 2019 в 00:56
поделиться

Синтаксис не важен, удобочитаемость не!

0
ответ дан 24 November 2019 в 00:56
поделиться

Не причина, но (тривиальный) AutoCAD имеет LISP & поддержка во время выполнения DCL. Это - удобный способ записать сложные макросы (включая автоматизацию ActiveX), если Вы не хотите использовать VBA или их C++ или.NET SDKs, или если ДИЗЕЛЬНОЕ выражение не сокращает его.

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

1
ответ дан 24 November 2019 в 00:56
поделиться

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

И так как я, canВґt находят эти ссылки sofar в этом сообщении, я добавляю их для общественного интереса:

Успех и история Отказа: Лепетание в JPL

Действительно впечатляющая история успеха: Lisp, используемый в корпорации Orbitz

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

1
ответ дан 24 November 2019 в 00:56
поделиться

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

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

2
ответ дан 24 November 2019 в 00:56
поделиться

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

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

2
ответ дан 24 November 2019 в 00:56
поделиться

Добавить к другим ответам:

, поскольку курс SICP (видео доступны здесь ) является потрясающим: преподает Вам Lisp и намного больше !

2
ответ дан 24 November 2019 в 00:56
поделиться

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

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

2
ответ дан 24 November 2019 в 00:56
поделиться

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

3
ответ дан 24 November 2019 в 00:56
поделиться

Сценарий-Fu калеки является lipsish. Это - приложение-приманка фотошопа.

3
ответ дан 24 November 2019 в 00:56
поделиться

Приложение-приманка? Franz Inc. имеет длинный список истории успеха , но этот список только включает пользователей AllegroCL... Существуют, вероятно, другие. Мой фаворит история о Непослушной Собаке , так как я был большим поклонником игр Бандикута Катастрофического отказа.

Для изучения языка Common LISP, я рекомендовал бы Практический язык Common LISP . Это имеет практический подход, который, по крайней мере, для меня помог, чем другие книги, на которые я посмотрел.

2
ответ дан 24 November 2019 в 00:56
поделиться

Хорошо, я мог бы быть странным, но мне действительно не нравятся эссе Paul Graham так много & на Lisp действительно грубая идущая книга, если у Вас уже нет некоторого схватывания языка Common LISP. Вместо этого я сказал бы, идут для Siebel Практический язык Common LISP . Что касается "приложений-приманок", язык Common LISP, кажется, находит свое место в нишевых магазинах, как ITA, поэтому в то время как нет приложения, синонимичного с CL путем, направляющие для Ruby существуют места в промышленности, которые используют его, если Вы делаете немного рытья.

3
ответ дан 24 November 2019 в 00:56
поделиться

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

4
ответ дан 24 November 2019 в 00:56
поделиться

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

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

4
ответ дан 24 November 2019 в 00:56
поделиться

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

4
ответ дан 24 November 2019 в 00:56
поделиться

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

Только в два десятилетия спустя, когда я разжег свой интерес к шепелявости, что я начал "получать" то, что делает шепелявость интересной - для меня так или иначе. Если Вам удается изучить шепелявость, не унося Ваш ум закрытиями и макросами шепелявости, Вы, вероятно, упустили суть.

4
ответ дан 24 November 2019 в 00:56
поделиться

Любой язык смотрит намного тяжелее, когда каждый не использует общие конвенции добавления отступа языка. Когда каждый следует за ними Lisp, каждый видит, как он выражает структуру синтаксического дерева вполне с готовностью (примечание, это не совершенно правильно, потому что предварительный просмотр находится немного; r's должен выровняться с fns в рекурсивном 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))))))
5
ответ дан 24 November 2019 в 00:56
поделиться

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

9
ответ дан 24 November 2019 в 00:56
поделиться

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

9
ответ дан 24 November 2019 в 00:56
поделиться

Я не могу ответить от собственного опыта, но необходимо считать то, что Paul Graham записал на Lisp. Что касается части "приложения-приманки", читайте Избиение средних чисел .

25
ответ дан 24 November 2019 в 00:56
поделиться

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

17
ответ дан 24 November 2019 в 00:56
поделиться

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

, Но если Вы собираетесь изучить это... любой ценой, читайте На Lisp

3
ответ дан 24 November 2019 в 00:56
поделиться

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

синтаксис для шепелявости невероятно прост .

Приложение-приманка, записанное в шепелявости: emacs. Lisp позволит Вам расширять emacs по желанию, чтобы сделать почти что-либо, что можно думать об этом, редактор мог бы сделать.

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

кроме того, я хочу добавить: даже при нахождении мест, где шепелявость будет иметь смысл, Вы, вероятно, не убедите никого больше, что это должно использоваться по Java, C++, c#, Python, рубин, и т.д.

46
ответ дан 24 November 2019 в 00:56
поделиться

В ответ на @lassevk:

alt text

57
ответ дан 24 November 2019 в 00:56
поделиться

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

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

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

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

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

, Кроме того, изучая Lisp напомнит Вам о чем-то фундаментальном, о котором забыли: различие между Von Neumann и Turing. Как мы знаем, модель Turing's вычисления является интересной теоретической моделью, но бесполезный как модель для разработки компьютеров. Von Neumann, с другой стороны, разработал модель того, как компьютеры и вычисление должны были выполниться: модель Von Neumann. Центральный к модели Von Neumann то, что Вы имеете, но одна память, и хранит и Ваш код и Ваши данные там. Заметьте тщательно, что программа Java (или C#, или независимо от того, что Вам нравится) является проявлением модели Turing. Вы устанавливаете свою программу в бетоне, раз и навсегда. Затем Вы надеетесь, что можно иметь дело со всеми данными, которые брошены на него.

Lisp поддерживает модель Von Neuman; нет никакой резкой, предопределенной границы между кодом и данными. Программирование в Lisp открывает Ваш ум для питания модели Von Neumann. Программирование в Lisp заставляет Вас видеть старые понятия в новом свете.

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

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

, Если Вы - опытный программист, Вам нужны усовершенствованные инструменты. И нет никакого инструмента, более усовершенствованного, чем Lisp. Или, другими словами: ответ - да, если Ваши проблемы трудны. Нет иначе.

126
ответ дан 24 November 2019 в 00:56
поделиться

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

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

4
ответ дан 24 November 2019 в 00:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: