Пожалуйста, ответьте по одному.Ваше любимое представление о Lisp?
Если вы объясните, почему это не так, попробуйте избежать общих утверждений и представить конкретные примеры.
Пожалуйста, ответьте по одному.Ваше любимое представление о Lisp?
Если вы объясните, почему это не так, попробуйте избежать общих утверждений и представить конкретные примеры.
Любое достаточно сложное приложение неотличимо от линейного шума.
«Вселенная написана на Лиспе». Но apparently it's not.
Но это так! http://www.gnu.org/fun/jokes/eternal-flame.ogg :) – 2008-09-24 12:25:27
Что это за искусственный интеллект
Люди обвиняют lisp в скобках. Я бы хотел, чтобы они сказали, как они будут реализовывать язык с ориентированным на список массивом без них ...
Легко! Используйте M-выражения. ;) – TraumaPony 2008-09-24 12:32:22
lisp на самом деле не является списком. это, случается, имеет структуру данных с одиночными связями, созданную из cons-ячеек, это, как оказалось, используется для представления кода программы (дерева), синтаксис которого наиболее естественно вложенные круглые скобки. списки и недостатки ячеек не являются фундаментальными для lisp - полнофункциональный lisper – 2008-09-24 12:41:31
Lisp - интерпретируемый язык, и поэтому он очень медленный.
Посмотрите на функцию disassemble в Common Lisp Hyper Spec.
Общая реализация Lisp, называемая SBCL, имеет эффективный внутренний компилятор для нескольких платформ.
Это не только SBCL. Любая порядочная реализация Common Lisp или Scheme в настоящее время обеспечивает собственный код или эффективный компилятор байт-кода. – 2008-09-24 12:21:12
Ну, множество схем и пара CL делают компиляцию в C вместо прямого кода. Это стратегия реализации со многими переменами (более переносимая, делает исполняемую доставку и FFI cinch) и некоторые недостатки (компиляция часто намного медленнее, и скорость результирующих программ также может пострадать). – Pillsy 2010-01-07 15:54:44
У меня нет «любимого» заблуждения, потому что большинство заблуждений, и не только о Лиспе, просто раздражает. Но у меня есть одно заблуждение относительно Лиспа, которое действительно потрясло меня, когда я прочитал историю Лиспа (в частности, History of Lisp и The Evolution of Lisp).
Лисп, как известно, медленный интерпретируемый язык мой много людей, но на самом деле он имел компилятор что-то о менее чем за один год после того, как его первый рабочий переводчик, я думаю, и следующая история есть длинный список работы, нацеленной на оптимизацию, которая привела к , некоторые реализации Lisp, избивающие Fortran при дроблении числа!
Наиболее вероятным источником мифа является то, что многие люди знают только Лисп из курса CS о Схеме, где они пишут себя переводчиком. И, вероятно, многие из них ненавидят этот курс, потому что он учит им красивые, но сложные концепции вычислимости или рекурсии, и затем они ассимилируют свои проблемы с курсом своими проблемами с Lisp.
Мое любимое заблуждение: это «функциональный язык», который препятствует итерации или ООП или любому типу программирования, который вы можете назвать.
Ничто не может быть дальше от истины.
Прежде всего, «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!
Флаг языка, который содержит противоречивый макрос LOOP, как обескураживающий итерацию, явно требует большого невежества. Чем меньше они знают, тем больше они судят ... – 2008-09-24 14:54:37
Мое избранное заблуждение: CL действительно означает CthuLhu!
Шутки в сторону; безусловно, наиболее распространенное заблуждение относительно всех видов диалектов lisp, заключается в том, что синтаксис s-выражений, основанный на скобках , наносит ущерб читабельности, когда на самом деле именно эта черта помогает сделать код Lisp намного более кратким, понятным и читабельны, чем большинство других языков программирования.
Я чувствую, что нужно сделать то, что все параны действительно делают код сложным для чтения, когда вы впервые сталкиваетесь с языком. я считаю это практически неопровержимым фактом. – shsteimer 2008-10-27 15:23:31
Lisp не может предоставлять автономные исполняемые файлы.
Используя SBCL, вы можете сохранить текущее состояние вашей виртуальной виртуальной машины в один исполняемый файл с помощью простого вызова function. Когда вы запустите этот исполняемый файл, он начнется с исходного состояния и вызовет функцию или лямбда, которые вы предоставили, когда она была сохранена.
Lisp не имеет IDE, поэтому вы должны использовать блокнот и непрерывно подсчитывать все лишние скобки.
На самом деле их немало. Для Common Lisp лучше всего использовать Emacs с SLIME как под окнами, так и с linux. Он предоставляет слушателю (для оценки), инспектор (для просмотра результатов), отладчик (с степпингом), очень настраиваемый редактор (в конце концов это Emacs). SLIME поддерживает 10 различных реализаций.
Я не знаю о любимом заблуждении ... но я часто вижу, что программисты говорят о «LISP» и почему им это не нравится/это неуместно/это академический/он никогда не будет работать проект X. Что было бы хорошо, за исключением того, что, когда они говорят «LISP», они означают «Схему», в которой они действительно означают «подмножество Схемы», в котором они действительно означают «наполовину запоминающееся подмножество Схемы из этого курса AI или языков 5 лет назад, что им это не понравилось ».
По сравнению с Lisp (s) с этого направления, похоже, существует довольно много иррациональных предрассудков. Рациональные предрассудки - это нечто иное.
Что все круглые скобки делают код нечитаемым. Примерно через две недели и с достойным текстовым редактором вы просто перестанете их замечать.
[ETA - только что нашел цитату давнего лиссара Кенни Тилтона: «Круглые скобки? Какие круглые скобки? Я не замечал никаких круглых скобок с моего первого месяца программирования Lisp. Мне нравится спрашивать людей, которые жалуются на круглые скобки Lisp, если их беспокоят все пробелы между словами в газете ... »]
Все в Лиспе - это список, нет других эффективных сложных структур данных.
Неверно. В Common Lisp существуют классы, структуры, хеш-таблицы, многомерные массивы, изменяемые строки и т. Д. Каждый из них реализуется эффективно. Например, компилятор SBCL испускает оптимизированный встроенный собственный код для доступа к массиву.
Многие считают, что lisp является списком-ориентированным языком (что бы это ни значило).
Это распространенное мнение даже среди осечек о том, что одна большая и самая важная вещь о lisp - это ячейка cons и отдельные списки, которые можно создать с помощью них (sexp's). люди, которые считают, что не понимают реальных причин, которые делают более важным языком, чем другие основные языки (это только мое субъективное мнение!), и не понимают, что lisp может в значительной степени быть тем, чем он является, против клетки в игре.
случайный выбор вещей, которые важны, чтобы сделать шепелявость, что это такое, и которые легко выполнимо без Sexp-х:
несколько объяснений:
Проще говоря, динамический ввод означает, что не места имеют тип, но значения времени выполнения. это важная помощь, если вы не знаете заранее все свои требования, и ваше приложение постоянно трансформируется по мере развития проекта. по моему опыту, это, безусловно, большая часть случая - только с гораздо большим количеством препятствий, когда статическая печать на картинке.
Возможно, многие утверждают, что ячейки cons и sexp имеют решающее значение для гибкой макросистемы. решающее значение имеет простой синтаксис и простое управление структурой данных, в которую он разбирается. синтаксис sexp и списки вместе являются хорошим кандидатом, но есть и многие другие.
Я доволен parens, но я не доволен другой частью, а именно использованием cons'd-списков для представления программного кода, потому что у него есть важный недостаток: вы не можете аннотировать его случайными вещами не нарушая данные, которые уже представлены с ним. например я не могу комментировать такой список cons, представляющий программный код, с тем фактом, что он был отредактирован Джо два дня назад, не превращая эту форму в бессмыслицу для lisp-компилятора. эти аннотации становятся все более важными, поскольку ваши DSL становятся более сложными, и поскольку ваши макросы превращаются в небольшие компиляторы, которые компилируют ваш DSL в lisp.
Это язык программирования. Сегодня Lisp - это семейство языков программирования, включая Common Lisp и Scheme, которые являются стандартами с различными вариантами реализации, а также Clojure, Arc и many others.
Это «CLOS» - это язык программирования, и, что Lisp - это интерпретируемый, функциональный язык. Действительно, я слышал это от профессоров CS. И я думаю, что в одной из этих книг по программированию на языке программирования была какая-то вводящая в заблуждение диаграмма.
Учителя CS в колледжах и университетах сегодня (особенно молодые) получили образование с использованием Java, C и C++, и они, вероятно, изучили либо схему, либо Common Lisp в курсе под названием «сравнительные исследования языка программирования» или «парадигмы программирования» », который, вероятно, преподавал кто-то, кто не любит язык Лиспа, и научил их функциям, спискам, символам и функциям более высокого порядка. Период. Тогда они в конечном итоге учить, чему они научились:
Я даже видел очень умного профессора, дающего пример матричного умножения в Common Lisp - представляя матрицы как списки, конечно !
Это потому, что люди решают сложные проблемы с помощью Lisp, сам язык должен быть сложным.
Recursion is hard. Fixed points of functions are hard. Но они едва охватывают главу 1 Structure and Interpretation of Computer Programs. Это не потому, что схема тяжелая - на самом деле это потому, что это так просто, тяжелый материал - все, что осталось сделать!
Это больше perl. – TraumaPony 2008-09-24 12:31:44
Как прошла эта цитата? Perl - единственный язык, который выглядит так же до и после шифрования RSA :-) Я лично считаю это приятным (perl, not lisp) - скобки меня раздражают, с другой стороны :-) – Rook 2009-06-09 02:23:12