-
> Пробегал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-технологии.
-
> _ShaggyDoc (05.05.08 09:04) [20] > >> Сортировка - это не то, что я показал. Это сложнее, займет > целую страницу.
А что так много? На Хаскеле - две строки: qsort [] = []
qsort (x:xs) = qsort (filter (<=x) xs) ++ [x] ++ qsort (filter (>x) xs) Неужели в Лиспе это нельзя написать так же кратко?
-
> Неужели в Лиспе это нельзя написать так же кратко?
ну не также кратко, но идейно тоже самое написать легко, медленно это очень.
-
а вот идеологи функциональных языков говорят, что у ф. языков большие перспективы - были бы интеллектуальные среды выполнения, которые умеют распараллеливать выполенения.
т.е. типа - пишешь программу, а она сама на кластер раскладывается.
-
> а вот идеологи функциональных языков говорят, что у ф. языков > большие перспективы - были бы интеллектуальные среды выполнения, > которые умеют распараллеливать выполенения. > > т.е. типа - пишешь программу, а она сама на кластер раскладывается.
Ну так это разьве не очевидно? смотрим на [21] и понимаем что два вызова qsort могут идти на абсолютно любые машины/процессоры т.к. они не вызывают side effect's. Главное чтобы интерпретатор смог сообразить что да куда, а это ведь жутко нетривиально.
-
> _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-х. помимо прочего — хаскель нифига не применим в качестве скриптового языка. к тому же я его не знаю, и это ему большой минус. %-)
-
> тимохов (05.05.08 11:14) [23] > т.е. типа — пишешь программу, а она сама на кластер раскладывается. абсолютно любой язык, где есть возможность писать код без side effects обладает этим свойством. штука в том, что такие языки — они как раз функциональные.
-
> каком именно? например, на многих common lisp категорически > воспрещается писать рекурсивную функциональщину.
фиг знает на каком, это было совсем недавно, около пяти с половиной лет назад, потому сказать не могу, задача была задана преподом и не мне, попросили решить просто... и использовал я помоему mlisp какой то... не скажу точно...
помню только что мой вопрос остался без ответа :)
-
> тимохов (05.05.08 11:14) [23] > а вот идеологи функциональных языков говорят, что у ф. языков > большие перспективы - были бы интеллектуальные среды выполнения, > которые умеют распараллеливать выполенения. > > т.е. типа - пишешь программу, а она сама на кластер раскладывается. >
На эту тему много пишет Jack Of Shadows вот здесь: http://www.delphikingdom.com/asp/talktopic.asp?ID=366 Если покопаться, можно найти интересные ссылки как на теоретические работы, так и на экспериментальные распараллеливающие трансляторы.
-
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, который позволяет использовать библиотеку, написанную на другом языке.
-
> А как вы относитесь к языку Lisp? Освоил за один день... > Показался самым нормальным языком... По логичности и структурности > получше, чем Pascal и C...
А ты какой Лисп изучил? Фишка в том, что сейчас нет "просто" Лиспа, есть Common Lisp и Scheme + разные другие диалекты.
-
> Alkid © (05.05.08 13:56) [30]
фишка в том, что он его изучил по "Lisp для чайников за 24 часа"... как и Pascal и C...
-
> фишка в том, что он его изучил по "Lisp для чайников за > 24 часа"... как и Pascal и C...
Мда уж. Я, вот, Prolog не так давно *начал* изучать. Понимание того, как это работает пришло на третьем прочтении вводного курса. До этого было "понятно" на уровне "ага, утверждения, правила вывода, унификация, всё просто". А потом как прозрел - так стыдно стало.
Сейчас, кстати, активно штудирую книгу Пола Грэхэма "Onlisp". Специально к автору топика - почитай, увидишь, как ты "изучил" Lisp :)
-
Пробегал2... (05.05.08 13:54) [29]
> Ну опять же можно подумать, что реализация компилятора LISP'а > простая? Там будто нету парсинга, анализа и прочего?
Видишь ли, в компиляторе Delphi тоже есть анализ, парсинг и прочая хрень, а вот готовой функции, которая выражение вычисляет, нету...
-
Игорь Шевченко © (05.05.08 14:08) [33] Видишь ли, в компиляторе Delphi тоже есть анализ, парсинг и прочая хрень, а вот готовой функции, которая выражение вычисляет, нету...
так и я об этом. LISP получается "уникален" только тем, что в него встроена куча готовых функций математических. И все?
Я не знаю на каком языке написан LISP, но если этот язык умеет компилировать DLL, то в принципе получается, что при определенном подходе можно сделать кучу готовых DLL с богатыми экспортными функциями LISP'а, после чего на любом языке можно будет программировать под LISP.
-
> так и я об этом. LISP получается "уникален" только тем, > что в него встроена куча готовых функций математических. > И все?
Сорри за нескромный вопрос - насколько глубоко Вы Lisp знаете? Что Вы о нём читали, писали ли программы?
Если брать дифференцированное описание от дельфи, то в лиспе есть: 1. Макросы (не путать с C/C++ макросами), позволяющие почти произвольным образом расширять язык. 2. Первоклассные функции и функции высшего порядка. 3. Замыкания 4. (в Схеме) первоклассные продолжения. Мне, кстати, схема этим оч-чень нравится. При помощи продолжений так очень классно реализуюте недетерминистические алгоритмы. :)
Это, ИМХО, основное.
P.S. mapcar - это совсем не математическая функция. Прочитайте про неё и попробуйте сделать то же самое на Delphi.
-
> Пробегал2... (05.05.08 14:26) [34]
Прежде чем делать такие заявления, может, стоит немного познакомиться с функциональным подходом? Вот, очень рекомендую: http://www.lib.ru/CTOTOR/FUNCPROG/А вот небольшой и неполный список того, что есть в функциональных языках и что никакой DLL не сделать: 1. Сопоставление аргумента шаблону 2. Функции высших порядков и анонимные функции 3. Карринг функций 4. Передача аргументов по имени, ленивые вычисления. Не всё это есть в Лиспе (ленивых вычислений точно нет, карринга, кажется, тоже), но его всё равно просто так к императивному языку не прикрутишь.
-
Пробегал2... (05.05.08 14:26) [34]
> Я не знаю на каком языке написан LISP
А на каком языке написан С++ ?
-
> 1. Сопоставление аргумента шаблону
Кстати, а разе в CL или Scheme есть паттерн-матчинг? Я стандарт подразумеваю, прикрутить макросами его можно - это ясно.
-
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'а"
|