Leave a comment

Comments 39

lyalikov September 12 2012, 17:41:23 UTC
спасибо. интересно.

Reply


ln_123 September 13 2012, 06:06:15 UTC
Странный вывод у вас получился.
Как из того что макросы используются в основном для написания своего синтаксического сахара следует что опыт лиспа не переносим на другие языки программирования не понятно. В лиспе видь и без макросов есть много всего разного например те же самые ФВП.
Кстати, а насколько переносим опыт типов Хаскеля на Java?

Reply

thesz September 13 2012, 06:55:45 UTC
Если главное в Лиспе - макросы, то главный опыт Лиспа не переносим на другие языки.

ФВП в Лиспе используются ограниченно из-за неудобства их использования и принципиальной изменяемости значений.

Что ещё в Лиспе есть, кроме макросов и ФВП?

Опыт Хаскеля переносим примерно так же, как и опыт OCaml - ФВП, плоские иерархии. Добавляется ещё опыт использования монад - специальных контекстов управления, - и ленивых вычислений.

Reply

ln_123 September 13 2012, 07:36:58 UTC
Почему вы решили что главное в Лиспе макросы? Макросы это просто удобная возможность использовать парсер лиспа для написания своего DSL и возможность расширения языка не более того. На архитектуру системы это не оказывает практически ни какого влияния, просто многие вещи становится возможным записывать более коротко и понятно, поэтому многим они нравятся.
Мне кажется что вырывать из языка какую-ту фишку и говорить что она главная это как то не правильно. Нужно смотреть на весь дизайн языка.
Как раз неудобство (кстати в чем оно?) использования ФВП в лиспе замечательно решается макросами.
А чем мешает принципиальная изменяемость значений использованию ФВП я честно говоря не понял, если вы поясните то буду очень благодарен.

Насчет переноса опыта, я постараюсь собраться с мыслями и напишу либо отдельным постом/коментарием

Reply

ln_123 September 13 2012, 08:35:30 UTC
> Что ещё в Лиспе есть, кроме макросов и ФВП?
Если говорить о концепциях (макросы я бы тут не назвал) то наверное то что данные можно воспринимать как программу и наоборот, для scheme можно было бы еще сказать о ленивых вычислениях т.к. там это часть стандарта, а вот для CL это уже не верно.
Лисп интересен тем что на нем те концепции которые есть в других языках довольно легко (легче чем в других языках) реализуются в нем а зачистую уже реализованы в виде какой нибудь библиотеки. Так же есть довольно итересные технические решения к ним как раз можно отнести макросы, система типов, система сообщений/обработки событий, CLOS, развитый REPL.
Расматривать CL как язык выучив который обязательно освоишь новые концепции нельзя т.к. программируя на нем слишком легко продолжать писать в том же стиле что и на любом другом языке программирования будь то Java или тот же Haskel :). Скорее это удобный язык в котором ты не привязан к какой то одной парадигме программирования.

Reply


Leave a comment

Up