2008-09-24 2 views

ответ

-5

Любое достаточно сложное приложение неотличимо от линейного шума.

+0

Это больше perl. – TraumaPony 2008-09-24 12:31:44

+0

Как прошла эта цитата? Perl - единственный язык, который выглядит так же до и после шифрования RSA :-) Я лично считаю это приятным (perl, not lisp) - скобки меня раздражают, с другой стороны :-) – Rook 2009-06-09 02:23:12

4

«Вселенная написана на Лиспе». Но apparently it's not.

+2

Но это так! http://www.gnu.org/fun/jokes/eternal-flame.ogg :) – 2008-09-24 12:25:27

13

Что это за искусственный интеллект

+1

этот действительно меня беспокоит! – 2008-09-24 12:30:30

+1

Да, это первый ответ, который я обычно слышу, когда упоминаю Lisp. Это, и LISP в письменном сообщении. ;) – skypher 2009-02-18 20:39:27

+3

@ Luis - Интеллект беспокоит вас? ;-) – Rook 2009-06-09 02:20:12

-2

Люди обвиняют lisp в скобках. Я бы хотел, чтобы они сказали, как они будут реализовывать язык с ориентированным на список массивом без них ...

+1

Легко! Используйте M-выражения. ;) – TraumaPony 2008-09-24 12:32:22

+0

lisp на самом деле не является списком. это, случается, имеет структуру данных с одиночными связями, созданную из cons-ячеек, это, как оказалось, используется для представления кода программы (дерева), синтаксис которого наиболее естественно вложенные круглые скобки. списки и недостатки ячеек не являются фундаментальными для lisp - полнофункциональный lisper – 2008-09-24 12:41:31

20

Lisp - интерпретируемый язык, и поэтому он очень медленный.

Посмотрите на функцию disassemble в Common Lisp Hyper Spec.

Общая реализация Lisp, называемая SBCL, имеет эффективный внутренний компилятор для нескольких платформ.

+4

Это не только SBCL. Любая порядочная реализация Common Lisp или Scheme в настоящее время обеспечивает собственный код или эффективный компилятор байт-кода. – 2008-09-24 12:21:12

+0

Ну, множество схем и пара CL делают компиляцию в C вместо прямого кода. Это стратегия реализации со многими переменами (более переносимая, делает исполняемую доставку и FFI cinch) и некоторые недостатки (компиляция часто намного медленнее, и скорость результирующих программ также может пострадать). – Pillsy 2010-01-07 15:54:44

6

У меня нет «любимого» заблуждения, потому что большинство заблуждений, и не только о Лиспе, просто раздражает. Но у меня есть одно заблуждение относительно Лиспа, которое действительно потрясло меня, когда я прочитал историю Лиспа (в частности, History of Lisp и The Evolution of Lisp).

Лисп, как известно, медленный интерпретируемый язык мой много людей, но на самом деле он имел компилятор что-то о менее чем за один год после того, как его первый рабочий переводчик, я думаю, и следующая история есть длинный список работы, нацеленной на оптимизацию, которая привела к , некоторые реализации Lisp, избивающие Fortran при дроблении числа!

Наиболее вероятным источником мифа является то, что многие люди знают только Лисп из курса CS о Схеме, где они пишут себя переводчиком. И, вероятно, многие из них ненавидят этот курс, потому что он учит им красивые, но сложные концепции вычислимости или рекурсии, и затем они ассимилируют свои проблемы с курсом своими проблемами с Lisp.

20

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

Ничто не может быть дальше от истины.

Прежде всего, «Lisp», в зависимости от значения, обозначаемого динамиком, на самом деле не является языком вообще, кроме языковой семьи. Есть несколько более или менее известных и широко распространенных членов этого семейства: Scheme, Common Lisp, Emacs-Lisp и AutoLisp являются традиционными; в настоящее время есть также Nu, newLISP (что на самом деле больше похоже на «oldLISP», чем на современный, но в любом случае), Arc и Clojure.

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

Я не знаю много о AutoLisp или всех других диалектах Lisp рядом с Scheme и Common Lisp, но я знаю, что Common Lisp определенно не является языком одной парадигмы, который избегает императивного или даже объектно-ориентированного программирования. Фактически, Common Lisp имеет самую мощную объектную систему на основе классов, о которой я знаю, включая компоненты, такие как аспектно-ориентированное программирование из коробки.

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

+4

Флаг языка, который содержит противоречивый макрос LOOP, как обескураживающий итерацию, явно требует большого невежества. Чем меньше они знают, тем больше они судят ... – 2008-09-24 14:54:37

8

Мое избранное заблуждение: CL действительно означает CthuLhu!

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

+1

Я чувствую, что нужно сделать то, что все параны действительно делают код сложным для чтения, когда вы впервые сталкиваетесь с языком. я считаю это практически неопровержимым фактом. – shsteimer 2008-10-27 15:23:31

3

Lisp не может предоставлять автономные исполняемые файлы.

Используя SBCL, вы можете сохранить текущее состояние вашей виртуальной виртуальной машины в один исполняемый файл с помощью простого вызова function. Когда вы запустите этот исполняемый файл, он начнется с исходного состояния и вызовет функцию или лямбда, которые вы предоставили, когда она была сохранена.

3

Lisp не имеет IDE, поэтому вы должны использовать блокнот и непрерывно подсчитывать все лишние скобки.

На самом деле их немало. Для Common Lisp лучше всего использовать Emacs с SLIME как под окнами, так и с linux. Он предоставляет слушателю (для оценки), инспектор (для просмотра результатов), отладчик (с степпингом), очень настраиваемый редактор (в конце концов это Emacs). SLIME поддерживает 10 различных реализаций.

11

Я не знаю о любимом заблуждении ... но я часто вижу, что программисты говорят о «LISP» и почему им это не нравится/это неуместно/это академический/он никогда не будет работать проект X. Что было бы хорошо, за исключением того, что, когда они говорят «LISP», они означают «Схему», в которой они действительно означают «подмножество Схемы», в котором они действительно означают «наполовину запоминающееся подмножество Схемы из этого курса AI или языков 5 лет назад, что им это не понравилось ».

По сравнению с Lisp (s) с этого направления, похоже, существует довольно много иррациональных предрассудков. Рациональные предрассудки - это нечто иное.

27

Что все круглые скобки делают код нечитаемым. Примерно через две недели и с достойным текстовым редактором вы просто перестанете их замечать.

[ETA - только что нашел цитату давнего лиссара Кенни Тилтона: «Круглые скобки? Какие круглые скобки? Я не замечал никаких круглых скобок с моего первого месяца программирования Lisp. Мне нравится спрашивать людей, которые жалуются на круглые скобки Lisp, если их беспокоят все пробелы между словами в газете ... »]

4

Все в Лиспе - это список, нет других эффективных сложных структур данных.

Неверно. В Common Lisp существуют классы, структуры, хеш-таблицы, многомерные массивы, изменяемые строки и т. Д. Каждый из них реализуется эффективно. Например, компилятор SBCL испускает оптимизированный встроенный собственный код для доступа к массиву.

11

Многие считают, что lisp является списком-ориентированным языком (что бы это ни значило).

Это распространенное мнение даже среди осечек о том, что одна большая и самая важная вещь о lisp - это ячейка cons и отдельные списки, которые можно создать с помощью них (sexp's). люди, которые считают, что не понимают реальных причин, которые делают более важным языком, чем другие основные языки (это только мое субъективное мнение!), и не понимают, что lisp может в значительной степени быть тем, чем он является, против клетки в игре.

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

  • REPL
  • компилятор доступен во время выполнения
  • dynamic typing
  • синтаксические абстракции (макросы)
  • closures
  • простой синтаксис, который легко редактировать (и «разобрать» мозгом)

несколько объяснений:

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

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

Я доволен parens, но я не доволен другой частью, а именно использованием cons'd-списков для представления программного кода, потому что у него есть важный недостаток: вы не можете аннотировать его случайными вещами не нарушая данные, которые уже представлены с ним. например я не могу комментировать такой список cons, представляющий программный код, с тем фактом, что он был отредактирован Джо два дня назад, не превращая эту форму в бессмыслицу для lisp-компилятора. эти аннотации становятся все более важными, поскольку ваши DSL становятся более сложными, и поскольку ваши макросы превращаются в небольшие компиляторы, которые компилируют ваш DSL в lisp.

2

Это язык программирования. Сегодня Lisp - это семейство языков программирования, включая Common Lisp и Scheme, которые являются стандартами с различными вариантами реализации, а также Clojure, Arc и many others.

1

Это «CLOS» - это язык программирования, и, что Lisp - это интерпретируемый, функциональный язык. Действительно, я слышал это от профессоров CS. И я думаю, что в одной из этих книг по программированию на языке программирования была какая-то вводящая в заблуждение диаграмма.

Учителя CS в колледжах и университетах сегодня (особенно молодые) получили образование с использованием Java, C и C++, и они, вероятно, изучили либо схему, либо Common Lisp в курсе под названием «сравнительные исследования языка программирования» или «парадигмы программирования» », который, вероятно, преподавал кто-то, кто не любит язык Лиспа, и научил их функциям, спискам, символам и функциям более высокого порядка. Период. Тогда они в конечном итоге учить, чему они научились:

  • Лисп один язык программирования
  • Lisp интерпретируется
  • Лиспа медленно
  • Lisp является языком AI (последний раз я проверил Роберта Sebesta, он все еще утверждал, что - но есть новое издание, поэтому он, возможно, исправил это)
  • Lisp не имеет поддержки OO (!!!)
  • Lisp is af Функциональные языка (в отличие от минимально поддерживать любые другие парадигмы)
  • В Лиспе нет никаких типов данных
  • Lisp не имеет структуры данных, за исключением списков (и, следовательно, не является полезным для хруста числа)
  • «Лисп не используется больше, и используется только в этом курсе, потому что это самый важный функциональный язык »

Я даже видел очень умного профессора, дающего пример матричного умножения в Common Lisp - представляя матрицы как списки, конечно !

1

Это потому, что люди решают сложные проблемы с помощью Lisp, сам язык должен быть сложным.

Recursion is hard. Fixed points of functions are hard. Но они едва охватывают главу 1 Structure and Interpretation of Computer Programs. Это не потому, что схема тяжелая - на самом деле это потому, что это так просто, тяжелый материал - все, что осталось сделать!