Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];

Вниз

Лисп   Найти похожие ветки 

 
AEN   (2008-05-02 21:46) [0]

А как вы относитесь к языку Lisp? Освоил за один день... Показался самым нормальным языком... По логичности и структурности получше, чем Pascal и C...


 
TUser ©   (2008-05-02 21:47) [1]

Говорят, там так ))))))))))))))))))))))))))))))))))))))))


 
Morgan   (2008-05-02 21:54) [2]

За один день? Вообще-то, знать лисп и уметь программировать на лиспе это немного разные вещи.

Ситуация такая, что production software на нем сложно писать из-за бедности библиотеками промышленного уровня, по сравнения с тем же C++ (во всяком случае, для свободных имплементаций, в платные встроено много enterprise причиндалов, и для серверной стороны вполне подойдет).


 
DrPass ©   (2008-05-02 23:35) [3]


> А как вы относитесь к языку Lisp? Освоил за один день..

Осваивай лучше камасутру - куда более полезная вещь, чем Lisp


 
Тимохов   (2008-05-03 00:06) [4]

прикольно, я полгода читал про функциональные языки, так и не понял до всей глубины, а он за один день.

талант, видимо.


 
Германн ©   (2008-05-03 02:08) [5]


> Тимохов   (03.05.08 00:06) [4]
>
> прикольно, я полгода читал про функциональные языки, так
> и не понял до всей глубины, а он за один день.
>
> талант, видимо.
>

Дим. А сколько ты потратил на первый свой вариант "Hello World"? Наверняка меньше одного дня. :)


 
Джо ©   (2008-05-03 05:42) [6]

>
>
> [0] AEN   (02.05.08 21:46)
> А как вы относитесь к языку Lisp?

Вразумительно.


> Освоил за один день

Маладес.


> По логичности и структурности получше, чем Pascal и C...

После дня знакомства с Lisp"ом и не такое почудится может.


 
Ketmar ©   (2008-05-03 13:14) [7]

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


 
lerkin   (2008-05-03 19:24) [8]

где метла?


 
_ShaggyDoc   (2008-05-03 19:37) [9]

Ну, вот я "отношусь" к Lisp. Лет 20 на нем программирую. И лет 25-30 на Pascal.

Lisp действительно особый язык. Принципиально отличающийся от императивных языков типа Pascal, C и т.п.  Насчет "логичности" могу согласиться, насчет "структурности" - дело спорное. Да и логика бывает разная.

Однако после 20 лет работы в нем я не рискну сказать, что "освоил". Lisp можно понять действительно за день (или не понять никогда). Вот если "понял", прочувствовал - тогда можно и начинать осваивать.

Абсолютно бессмысленно противопоставлять Lisp другим языкам. Да, я могу в одной строчке Lisp написать с помощью только самых базовых функций языка то же самое, что потребует нескольких страниц на Delphi. Ну и что? Я с удовольствием пишу в Delphi. Или вынужден с удовольствием писать. Для каждого языка (а более - для среды програмирования) есть своя ниша. Увы, для Lisp она достаточно ограничена.

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

Возможно и Pascal остался бы замечательным "языком для обучения", придуманным Виртом, если бы не появилась среда Turbo Pascal, а затем и Delphi. А вот для Lisp сопоставимого по качеству хотя бы с TP 3.0 так и не появилось.

Цитирую из своей книги (где я тоже цитировал кого-то)

> Существует мнение, что "перепиши хакеры из MIT, Стэнфорда
> и Карнеги-Меллонского университета ITS на LISP, вся история
> пошла бы в другую сторону, и открытыми системами мы называли
> бы, скорее всего, не потомков Unix, а потомков ITS".

Справка - ITS (Incompatible Timesharing System) - это ОС для мини-компьютеров PDP-10.

Но этого не случилось, и LISP остался языком для "гурманов", применяется в отдельных направлениях (например, в AutoCAD). Но зато появился C и ему подобные. Что совсем даже не плохо.

>AEN  

Незачем вылезать на форум "Дельфинов" с провокационными темами. Приходи хотя бы на DWG.RU, там и разберемся, насколько "освоил". :)

Сумей, например, объяснить, что делает выражение
(apply "mapcar (cons "list lst))
и десяток каких именно страниц на Pascal оно может заменить. Тогда и можно будет скромно написать - "начал осваивать".


 
Тимохов   (2008-05-03 22:05) [10]

я вообще, когда читал про функц. языки понимал, что это красота неземная :)

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

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

-----------

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


 
Ketmar ©   (2008-05-03 22:10) [11]

> дескать, ассоциированный список в LISP лучше любой базы
> данных.

ну, не то, чтобы любой, но очень часто таки лучше.

> А вот для Lisp сопоставимого по качеству хотя бы с TP 3.
> 0 так и не появилось.

оно таки да, подобного убожества нет. есть emacs и целая куча Common Lisp"ов, например. DrScheme/MzScheme. и ты пы. ты это, выйди из пещеры, в гугль сходи, что ли…

> Сумей, например, объяснить, что делает выражение
> (apply "mapcar (cons "list lst))

глючит? кто такая lst?


 
Morgan   (2008-05-04 10:53) [12]

> (apply "mapcar (cons "list lst))

Может быть,  имелось в виду

(apply "mapcar (cons "list (list lst)))
?


 
oldman ©   (2008-05-04 11:13) [13]


> AEN   (02.05.08 21:46)  
> А как вы относитесь к языку Lisp? Освоил за один день...
>  


В далеком 1993 я за день перешел с Basic на Clipper. Имея в своем распоряжении только хелп по синтаксису.

Сие значит, что Clipper лучше Basic?


 
Anatoly Podgoretsky ©   (2008-05-04 14:12) [14]

> oldman  (04.05.2008 11:13:13)  [13]

Клиппер в основе ФоксПро.
Они одинаковые, оба интерпритаторы в основе. С похожим свободным (бейсик более свободен) языком.
Поэтому они очень легко осваиваются, надо под рукой иметь только справку, лучше OnLine


 
_ShaggyDoc   (2008-05-04 22:05) [15]

>Ketmar ©   (03.05.08 22:10) [11]
>> дескать, ассоциированный список в LISP лучше любой базы
>> данных.
>ну, не то, чтобы любой, но очень часто таки лучше.

Список - это все-таки данные в памяти, и это совсем не СУБД и даже не простенький плоский DBF-файл.

Списки в памяти обрабатывать через LISP действительно удобнее всего - для того язык и придуман.

И даже удобнее непосредственно читать и сразу обрабатывать данные из структурированного текстового файл, написанного с использованием синтаксиса LISP.  Однако это не повод для экстремистких заявлений - "скажи нет субд".

Повернись история иначе, можно было бы и HTML и XML не придумывать - все, что там есть, можно выразить через LISP.

> есть emacs и целая куча Common Lisp"ов, например. DrScheme/MzScheme. и ты пы. ты это, выйди из пещеры, в гугль сходи, что ли…

"Хамишь, парниша" (C) Людоедка Эллочка.

Зачем мне "в гугль" ходить, я же написал, что 20 лет в LISP работаю и конечно, слежу за его инструментами. И всяких "ты пы" у меня и на машине установлено.

Однако ничего споставимого по результатам с другими средами разработки в LISP, к моему сожалению, не появилось. Как нет результата в виде
множества прикладных программ для обычных конечных пользователей. Вот на презренном Бейсике есть, а на LISP (вне специальных систем) что-то не особо наблюдается.

А в "пещерах" сидят язычники, которые поклоняются своим божкам и не желают оглянуться на окружающий мир. Людодке Эллочке
нельзя объяснять, что ее "мексиканский тушкан" всего лишь крашеная акварелью собачья шкура. Сожрет.

По поводу приведенного кода. Там все правильно. lst - это обрабатываемый список. Будет понятнее, если оформить в виде функции

(defun ru-list-Douglas-Wilson-transpose (lst)
 (apply "mapcar (cons "list lst))
)


Алгоритм придумал Douglas Wilson.

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

Пример:
(ru-list-Douglas-Wilson-transpose
(list
 (list "ПОЛЕ1_ЗАПИСЬ1" "ПОЛЕ1_ЗАПИСЬ2" "ПОЛЕ1_ЗАПИСЬХ")
 (list "ПОЛЕ2_ЗАПИСЬ1" "ПОЛЕ2_ЗАПИСЬ2" "ПОЛЕ2_ЗАПИСЬХ")
 (list "ПОЛЕ3_ЗАПИСЬ1" "ПОЛЕ3_ЗАПИСЬ2" "ПОЛЕ3_ЗАПИСЬХ")
)
)
Вернет
(
 ("ПОЛЕ1_ЗАПИСЬ1" "ПОЛЕ2_ЗАПИСЬ1" "ПОЛЕ3_ЗАПИСЬ1")
 ("ПОЛЕ1_ЗАПИСЬ2" "ПОЛЕ2_ЗАПИСЬ2" "ПОЛЕ3_ЗАПИСЬ2")
 ("ПОЛЕ1_ЗАПИСЬХ" "ПОЛЕ2_ЗАПИСЬХ" "ПОЛЕ3_ЗАПИСЬХ")
)


И наоборот:

(ru-list-Douglas-Wilson-transpose
(list
 (list "ПОЛЕ1_ЗАПИСЬ1" "ПОЛЕ2_ЗАПИСЬ1" "ПОЛЕ3_ЗАПИСЬ1")
 (list "ПОЛЕ1_ЗАПИСЬ2" "ПОЛЕ2_ЗАПИСЬ2" "ПОЛЕ3_ЗАПИСЬ2")
 (list "ПОЛЕ1_ЗАПИСЬХ" "ПОЛЕ2_ЗАПИСЬХ" "ПОЛЕ3_ЗАПИСЬХ")
)
)


Вернет
(
 ("ПОЛЕ1_ЗАПИСЬ1" "ПОЛЕ1_ЗАПИСЬ2" "ПОЛЕ1_ЗАПИСЬХ")
 ("ПОЛЕ2_ЗАПИСЬ1" "ПОЛЕ2_ЗАПИСЬ2" "ПОЛЕ2_ЗАПИСЬХ")
 ("ПОЛЕ3_ЗАПИСЬ1" "ПОЛЕ3_ЗАПИСЬ2" "ПОЛЕ3_ЗАПИСЬХ")
)


Здесь не ограничено количество полей и записей, нет циклов, использованы только базовые функции apply, mapcar, cons и list, да "симовл квотирования" - апостроф.

Попробуйте сделать подобное таким минимумом штатных средств другого языка. А это - LISP!


 
Palladin ©   (2008-05-04 22:26) [16]

где вы блин раньше были... я вот буквально недавно интересовался по поводу реализации быстрой сортировки в лиспе...


 
Пробегал2...   (2008-05-05 00:47) [17]

_ShaggyDoc   (03.05.08 19:37) [9]
Сумей, например, объяснить, что делает выражение
(apply "mapcar (cons "list lst))


а что делает это выражение, что нужно заменить десятком страниц на Delphi?

Anatoly Podgoretsky ©   (04.05.08 14:12) [14]
надо под рукой иметь только справку, лучше OnLine


а чем это справки онлайн стали лучше офлайн?

_ShaggyDoc   (04.05.08 22:05) [15]
использованы только базовые функции apply, mapcar, cons и list, да "симовл квотирования" - апостроф


я не понимаю. Ну а я на Delphi могу использовать какую-нибудь DLL или .PAS юнит, где тоже надо будет дернуть только 1-2 фунции. И что?

Только то, что в LISP эти функции являются частью языка?


 
Palladin ©   (2008-05-05 01:05) [18]


>Только то, что в LISP эти функции являются частью языка?


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


 
Anatoly Podgoretsky ©   (2008-05-05 01:33) [19]

> Пробегал2...  (05.05.2008 0:47:17)  [17]

Тем что не надо рыться, поскольку контенстная.
Ты не путай с Интернетом.
OnLine значит на ходу, по месту, нажимаешь F1 и сразу в теме.


 
_ShaggyDoc   (2008-05-05 09:04) [20]


> Пробегал2...   (05.05.08 00:47) [17]


> Ну а я на Delphi могу использовать какую-нибудь DLL или
> .PAS юнит, где тоже надо будет дернуть только 1-2 фунции.
>  И что?

Конечно, можно. Только надо, чтобы эти функции, которые можно "дернуть", кто-то разработал. Можно и самому написать, но с тем же транспонированием придется изрядно поработать, привлекая еще какие-то библиотеки. А тут полстрочки.

Или, например, вычисление выражения, написанного в виде исходного текста. Есть такие библиотеки и в Delphi, но реализация их непростая - надо парсить, анализировать и прочее. А в LISP опять же очень просто - всего лишь
(eval (read expression))

Кроме того, на LISP также пишут собственные библиотеки, фактически создавая расширение языка. У меня, например, около 5000 собственных функций - больших и маленьких.

Например, при вызове функции

(ru-3d-pump-k 320.0 675.0 140.0 670.0 145.0 237.0 700.0 1102.0 395.0 395.0 24.0 0 0.0 0.0 (ru-3d-pipe-flange-std-150-16) (ru-3d-pipe-flange-std-125-16) (ru-3d-electro-motor-160-1001))

Будет создана 3D-модель насоса с электродвигателем, всеми болтиками, фланцами и прочим - почти как фото. Вызов функции можно встроить в программу более высокого уровня, например для выбора  модели (т.е. аргументов) из базы данных. Но вот работу с БД я лучше сделаю на Delphi - там это можно реализовать гораздо лучше.

Этот же код, в виде текстового атрибута, у меня вписывается в меню, написанное на XML. Именно на XML, а не в виде LISP-текста (хотя и так можно). Но XML более универсален. И функция для визуальной работы с XML (фактически выбор из древовидной БД), реализована у меня на Delphi, включая парсер XML. Вызов же этой функции осуществляется из LISP.


> где вы блин раньше были... я вот буквально недавно интересовался
> по поводу реализации быстрой сортировки в лиспе...


Сортировка - это не то, что я показал. Это сложнее, займет целую страницу. Правда сейчас в большинстве реализаций LISP сортировка является штатным средством, поэтому к её разработкам охладели. Или студентов ею мучают.

LISP это как бы иная "цивилизация" с иным образом мышления. Не лучше и не хуже, например, Pascal, а просто иная. В LISP, например, вообще нет операторов, а есть только функции - даже if функция, а не просто "управляющая конструкция". Типы данных есть, но объявлять их не надо. С точки зрения Pascal это ужасно, а в LISP оборачивается преимуществом. На LISP можно писать и "по-бейсиковски", но от этого надо сразу избавляться. Можно вводить переменные, а можно и без них обходиться. Но и LISP заимствует кое-что из "традиционных" языков, например аналог try...except. Или возможность использовать COM-технологии.


 
Григорьев Антон ©   (2008-05-05 09:39) [21]


> _ShaggyDoc   (05.05.08 09:04) [20]
>
>> Сортировка - это не то, что я показал. Это сложнее, займет
> целую страницу.

А что так много? На Хаскеле - две строки:

qsort [] = []
qsort (x:xs) = qsort (filter (<=x) xs) ++ [x] ++ qsort (filter (>x) xs)


Неужели в Лиспе это нельзя написать так же кратко?


 
ferr   (2008-05-05 11:04) [22]

> Неужели в Лиспе это нельзя написать так же кратко?

ну не также кратко, но идейно тоже самое написать легко, медленно это очень.


 
тимохов   (2008-05-05 11:14) [23]

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

т.е. типа - пишешь программу, а она сама на кластер раскладывается.


 
ferr   (2008-05-05 11:17) [24]

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

Ну так это разьве не очевидно? смотрим на [21] и понимаем что два вызова qsort могут идти на абсолютно любые машины/процессоры т.к. они не вызывают side effect"s. Главное чтобы интерпретатор смог сообразить что да куда, а это ведь жутко нетривиально.


 
Ketmar ©   (2008-05-05 11:27) [25]

> _ShaggyDoc   (04.05.08 22:05) [15]
> Список — это все-таки данные в памяти, и это совсем не СУБД
> и даже не простенький плоский DBF-файл.

take a look at PicoLISP.

> Однако ничего споставимого по результатам с другими средами
> разработки в LISP, к моему сожалению, не появилось.

ну да, формостроительства и батонокидательства нет. наверное, не надо никому. в остальном — а что, есть что-то мощней emacs? O_O

> Там все правильно. lst — это обрабатываемый список.
откуда мне это знать было? может, это убойный макрос вовсе, который в твоём диалекте лиспа во что-то раскрывается в таком виде?

> Palladin ©   (04.05.08 22:26) [16]
> где вы блин раньше были… я вот буквально недавно интересовался
> по поводу реализации быстрой сортировки в лиспе…

каком именно? например, на многих common lisp категорически воспрещается писать рекурсивную функциональщину. потому что в стандарте нет требования на tail recursion in constant stack space, как в scheme, и люди не озадачиваются реализацией этой штучки.

> _ShaggyDoc   (05.05.08 09:04) [20]
> Сортировка — это не то, что я показал. Это сложнее, займет
> целую страницу.

; ArrowLISP Example Program
; Copyright © 2005,2006 Nils M Holm. All rights reserved.
; See the file LICENSE of the ArrowLISP distribution
; for conditions of use.

; Sort a list using the Quicksort algorithm:
; (require "=nmath)
; (qsort <= "(#5 #1 #3 #2 #4)) => "(#1 #2 #3 #4 #5)

(define (qsort p a)
 (letrec

   ((filter (lambda (p a r)
     (cond ((null a) (reverse r))
       ((p (car a))
         (filter p (cdr a) (cons (car a) r)))
       (t (filter p (cdr a) r)))))

   (_qsort (lambda (a)
     (cond ((null a) a)
       (t (letrec
            ((left-part (lambda (x)
              (lambda (y) (not (p x y)))))
            (right-part (lambda (x)
              (lambda (y) (p x y)))))
            (append
              (_qsort (filter
                        (left-part (car a))
                        (cdr a) ()))
              (list (car a))
              (_qsort (filter
                        (right-part (car a))
                        (cdr a) ())))))))))

   (_qsort a)))


> Григорьев Антон ©   (05.05.08 09:39) [21]
> А что так много? На Хаскеле — две строки
реализация лиспа: 100 килобайт на C. писана за пару дней. покажите мне такое же для хаскеля. чтобы при этом оно ещё и не тормозило, как квака на старых 486-х.

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


 
Ketmar ©   (2008-05-05 11:31) [26]

> тимохов   (05.05.08 11:14) [23]
> т.е. типа — пишешь программу, а она сама на кластер раскладывается.

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


 
Palladin ©   (2008-05-05 11:35) [27]


> каком именно? например, на многих common lisp категорически
> воспрещается писать рекурсивную функциональщину.

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

помню только что мой вопрос остался без ответа :)


 
Григорьев Антон ©   (2008-05-05 11:43) [28]


> тимохов   (05.05.08 11:14) [23]
> а вот идеологи функциональных языков говорят, что у ф. языков
> большие перспективы - были бы интеллектуальные среды выполнения,
>  которые умеют распараллеливать выполенения.
>
> т.е. типа - пишешь программу, а она сама на кластер раскладывается.
>

На эту тему много пишет Jack Of Shadows вот здесь: http://www.delphikingdom.com/asp/talktopic.asp?ID=366 Если покопаться, можно найти интересные ссылки как на теоретические работы, так и на экспериментальные распараллеливающие трансляторы.


 
Пробегал2...   (2008-05-05 13:54) [29]

Anatoly Podgoretsky ©   (05.05.08 1:33) [19]
Ты не путай с Интернетом.
OnLine значит на ходу


ну это конечно. У вас как всегда самая актуальная информация насчет значений слов.

"Онлайн (англ. online, от англ. on line — русск. на линии) — «находящийся в состоянии подключения». Первоначально использовалось только в отношении коммуникационного оборудования для указания на режим связи. В отношении ПО почти всегда означает «подключённый к интернету» или функционирующий только при подключении к интернету. Также — «происходящее в Интернете», «существующее в Интернете». К примеру «онлайн-банкинг», «онлайн-магазин», «онлайн-казино», «онлайн-игра». В этих значениях часто употребляется также прилагательное онлайновый.

Технические специалисты в отношении применения в русском языке данного заимствованного слова могут сказать, что «термин используется для потребительского описания клиентской части в архитектуре „клиент-сервер“».

Первоначальное значение — «не вешая трубку», за один телефонный звонок, т. е. в режиме реального времени"


http://ru.wikipedia.org/wiki/Online

_ShaggyDoc   (05.05.08 9:04) [20]
Только надо, чтобы эти функции, которые можно "дернуть", кто-то разработал


конечно. Также как кто-то должен был разработать компилятор LISP"а

_ShaggyDoc   (05.05.08 9:04) [20]
Можно и самому написать, но с тем же транспонированием придется изрядно поработать, привлекая еще какие-то библиотеки. А тут полстрочки.


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

_ShaggyDoc   (05.05.08 9:04) [20]
Или, например, вычисление выражения, написанного в виде исходного текста. Есть такие библиотеки и в Delphi, но реализация их непростая - надо парсить, анализировать и прочее


Ну опять же можно подумать, что реализация компилятора LISP"а простая? Там будто нету парсинга, анализа и прочего?

_ShaggyDoc   (05.05.08 9:04) [20]
Кроме того, на LISP также пишут собственные библиотеки, фактически создавая расширение языка


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


 
Alkid ©   (2008-05-05 13:56) [30]


> А как вы относитесь к языку Lisp? Освоил за один день...
>  Показался самым нормальным языком... По логичности и структурности
> получше, чем Pascal и C...

А ты какой Лисп изучил? Фишка в том, что сейчас нет "просто" Лиспа, есть Common Lisp и Scheme + разные другие диалекты.


 
Palladin ©   (2008-05-05 13:58) [31]


> Alkid ©   (05.05.08 13:56) [30]

фишка в том, что он его изучил по "Lisp для чайников за 24 часа"... как и Pascal и C...


 
Alkid ©   (2008-05-05 14:06) [32]


> фишка в том, что он его изучил по "Lisp для чайников за
> 24 часа"... как и Pascal и C...

Мда уж.
Я, вот, Prolog не так давно *начал* изучать.  Понимание того, как это работает пришло на третьем прочтении вводного курса. До этого было "понятно" на уровне "ага, утверждения, правила вывода, унификация, всё просто". А потом как прозрел - так стыдно стало.

Сейчас, кстати, активно штудирую книгу Пола Грэхэма "Onlisp".  Специально к автору топика - почитай, увидишь, как ты "изучил" Lisp :)


 
Игорь Шевченко ©   (2008-05-05 14:08) [33]

Пробегал2...   (05.05.08 13:54) [29]


> Ну опять же можно подумать, что реализация компилятора LISP"а
> простая? Там будто нету парсинга, анализа и прочего?


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


 
Пробегал2...   (2008-05-05 14:26) [34]

Игорь Шевченко ©   (05.05.08 14:08) [33]
Видишь ли, в компиляторе Delphi тоже есть анализ, парсинг и прочая хрень, а вот готовой функции, которая выражение вычисляет, нету...


так и я об этом. LISP получается "уникален" только тем, что в него встроена куча готовых функций математических. И все?

Я не знаю на каком языке написан LISP, но если этот язык умеет компилировать DLL, то в принципе получается, что при определенном подходе можно сделать кучу готовых DLL с богатыми экспортными функциями LISP"а, после чего на любом языке можно будет программировать под LISP.


 
Alkid ©   (2008-05-05 14:47) [35]


> так и я об этом. LISP получается "уникален" только тем,
> что в него встроена куча готовых функций математических.
>  И все?

Сорри за нескромный вопрос - насколько глубоко Вы Lisp знаете?
Что Вы о нём читали, писали ли программы?

Если брать дифференцированное описание от дельфи, то в лиспе есть:
1. Макросы (не путать с C/C++ макросами), позволяющие почти произвольным образом расширять язык.
2. Первоклассные функции и функции высшего порядка.
3. Замыкания
4. (в Схеме) первоклассные продолжения. Мне, кстати, схема этим оч-чень нравится. При помощи продолжений так очень классно реализуюте недетерминистические алгоритмы. :)

Это, ИМХО, основное.

P.S. mapcar - это совсем не математическая функция. Прочитайте про неё и попробуйте сделать то же самое на Delphi.


 
Григорьев Антон ©   (2008-05-05 14:49) [36]


> Пробегал2...   (05.05.08 14:26) [34]

Прежде чем делать такие заявления, может, стоит немного познакомиться с функциональным подходом? Вот, очень рекомендую: http://www.lib.ru/CTOTOR/FUNCPROG/

А вот небольшой и неполный список того, что есть в функциональных языках и что никакой DLL не сделать:
1. Сопоставление аргумента шаблону
2. Функции высших порядков и анонимные функции
3. Карринг функций
4. Передача аргументов по имени, ленивые вычисления.

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


 
Игорь Шевченко ©   (2008-05-05 14:51) [37]

Пробегал2...   (05.05.08 14:26) [34]


> Я не знаю на каком языке написан LISP


А на каком языке написан С++ ?


 
Alkid ©   (2008-05-05 15:13) [38]


> 1. Сопоставление аргумента шаблону

Кстати, а разе в CL или Scheme есть паттерн-матчинг?  Я стандарт подразумеваю, прикрутить макросами его можно - это ясно.


 
Пробегал2...   (2008-05-05 15:13) [39]

Alkid ©   (05.05.08 14:47) [35]
Сорри за нескромный вопрос - насколько глубоко Вы Lisp знаете?


вообще никак.

Alkid ©   (05.05.08 14:47) [35]
Что Вы о нём читали, писали ли программы?


ничего не читал, ничего не писал и не собираюсь. Но заинтересовала эта тема.

Alkid ©   (05.05.08 14:47) [35]
mapcar - это совсем не математическая функция. Прочитайте про неё и попробуйте сделать то же самое на Delphi


вы хотите сказать, что на дельфи этого сделать невозможно? не понимаю.
Это ведь очевидно не комманда для процессора, а соответственно она как-то должна быть разложена в комманды для процессора. И в компиляторе (интерпритаторе?) LISP"а эти преобразования делаются. Почему же в дельфи их нельзя сделать?

Ведь в LISP"е (который написан наверняка не на LISP"е) этого же сделали?

Игорь Шевченко ©   (05.05.08 14:51) [37]
А на каком языке написан С++ ?


если вы решили поиграть в придирки к словам - то замечу, что я имел в виду "Я не знаю на каком языке написан компилятор/интерпритатор LISP"а"


 
Alkid ©   (2008-05-05 15:14) [40]


> А на каком языке написан С++ ?

На английском!
:)



Страницы: 1 2 3 4 5 6 вся ветка

Форум: "Прочее";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.042 c
2-1211768183
xaxatun
2008-05-26 06:16
2008.06.22
не возвр. handle, почему?


15-1210246527
pasha_golub
2008-05-08 15:35
2008.06.22
IDE валится - невозможно работать


15-1210756224
User1
2008-05-14 13:10
2008.06.22
Как программно выключить сервер ?


15-1210561061
Slider007
2008-05-12 06:57
2008.06.22
С днем рождения ! 12 мая 2008 понедельник


2-1212066226
Sten
2008-05-29 17:03
2008.06.22
Вырезать в начале строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский