Левенчук пишет, что все серьёзные программисты мечтают программировать на фукнциональных языках. Не знаю, как серьёзные, а у меня лично никогда желания программировать на Лиспе не возникало. Нечеловеческий он какой-то. Пусть ворлоны на нём программируют.
Tags:
no subject
вообще же большинство известных мне ¨серьёзных¨ программистов зачем-то считают нужным бравировать своим антиинтеллектуализмом (в том что касается собственно профессиональной деятельности), даже если на самом деле являются людьми вполне вдумчивыми.
и это не может не огорчать, да.
no subject
этот
no subject
no subject
no subject
либо разводишь меня, болезного, на флейм. :)
no subject
А добрый флейм тоже неплох бывает ;)
no subject
такова природа популярных заблуждений — хрен убьёшь...
no subject
Главное в Лиспе не функции, а макросы. А скобочки (точнее, представление программы в виде S-выражений) — это единственный способ делать нормальные макросы.
Естественно, речь идёт не о тех макросах, которые в C/C++. В лиспе макрос — это функция, которая на входе принимает одно S-выражение, а на выходе даёт другое. Т.е. все вычислимые функции доступны, а не просто подстановки в строках, как в C.
Другое дело, что ФП более удобно для написания таких вот функций, преобразующих одно выражение в другое :) Однако в Common Lisp есть и императивный ООП, и многое другое.
И ещё, надо заметить, что тот лисп, который изобрёл МакКарти, и тот, который существует сейчас (Common Lisp, Scheme) — это две большие разницы :) Я сейчас писал про современный.
no subject
А чем, собственно, макрос отличается от фукнции, кроме имени, я не совсем понял. Я, опять же, знаю, что в лиспе всё - список, и что функция (которая, в свою очередь, тоже есть список) есть операция над списками. Мне просто кажется не всегда удобным мыслить именно в этих терминах.
no subject
2. Не всё — список. Есть ещё массивы, структуры, хеш-таблицы, объекты. Есть ещё целые произвольной точности и комплексные числа. У вас устаревшие сведения :)
3. Обычные функции работают во время работы, а макросы — во время компиляции (поэтому тут и уместна приставка мета-). Конечно, макросы могут вызывать другие функции (в этом главное отличие от большинства других макросистем).
Простой пример: для того, чтобы включить в программу на C парсер, нужно вызвать отдельную утилиту, которая описание грамматики сконвертирует в код на C. А в Лиспе для этого нужно лишь написать соотв. макрос. Другой пример — автоматическое выведение типов а-la ML.
no subject
3. Тут я не совсем понял - что значит "работают во время компиляции"? Если я на Лиспе напишу программу, которая решает квадратное уравнение - то она мне его решит при компиляции, не зная входных параметров? Нет. Или вы имеете в виду, что константные выражения в Лиспе вычисляются при компиляции? Прекрасно, ну так не только там, но не все же выражения - константные.
Простой пример: для того, чтобы включить в программу на C парсер, нужно вызвать отдельную утилиту, которая описание грамматики сконвертирует в код на C. А в Лиспе для этого нужно лишь написать соотв. макрос.
Пример непонятен. Это значит, всего лишь, что в C компилятор или там yacc не входит в RTL, а в Лиспе - входит. Ну, отлично. Уверен, что в RTL в C есть вещи, который в RTL Лиспа нет. Однако что это должно продемонстрировать мне, вот чего я не пойму - что RTL у Лиспа лучше? Ну, хорошо, лучше.
no subject
Не константные. Любые. Во время компиляции доступен ВЕСЬ язык. Которым можно компилятор расширять как угодно.
(no subject)
(no subject)
no subject
Макросы принимают на входе данные, но генерируют код. Например, данные — грамматика, а код — парсер.
А парсер не входит в RTL Лиспа. Я не понял последний абзац. RTL вообще не причём :)
Смысл в том, что можно расширять компилятор Лиспа. Например, добавить парсер. И это ещё не самое впечатляющее.
no subject
no subject
> А чем, собственно, макрос отличается от фукнции, кроме имени, я не совсем понял.
Может, моя статейка поможет разобраться:
http://arxiv.org/abs/cs.PL/0409016
> Мне просто кажется не всегда удобным мыслить именно в этих терминах.
Лисп позволяет мыслить в любых терминах, на любом уровне абстракции. Как и любой другой метаязык.
ага, а вот и флейм!
это неверно.
главной бядой CL являются сектанты вроде фанатов ¨языка¨ Scheme, которые на голубом глазу сообщают лисподевственным людям херню вроде процитированного выше отрывка.
Re: ага, а вот и флейм!
P.S. Вообще-то я предпочитаю CL Схеме, за инкрементальную компиляцию. За неё можно простить даже раздельные пространства имён для функций и всего остального...
Re: ага, а вот и флейм!
Re: ага, а вот и флейм!
Re: ага, а вот и флейм!
Re: ага, а вот и флейм!
Re: ага, а вот и флейм!
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
Re: ага, а вот и флейм!
опять об тоже место
Re: опять об тоже место
Re: опять об тоже место
Re: опять об тоже место
Re: опять об тоже место
Re: опять об тоже место
Re: опять об тоже место
Re: ага, а вот и флейм!
Re: ага, а вот и флейм!
Re: ага, а вот и флейм!
no subject
Ну да. Ассемблер тоже, что тривиально доказывается тем фактом, что любую программу для компьютера можно привести к ассемблерной программе :)
Однако когда мне говорят, что на определённом языке можно писать в абсолютно любом стиле - то я отношусь к этому с определённым недоверием, даже не будучи экспертом по этому языку. Но, возможно, я неправильно вас понимаю - что значит "метаязык"?
А за статейку спасибо, неприменно прочту.
(no subject)
no subject
А не получится на Прологе писать императивно - её, императивности, там просто нет, как нет родной реализации, ну скажем, regexp engine на Прологе - в виде иллюстрации факта неимперативности. Bindings к Сишным реализациям - есть, своей - нет. Пролог вообще специфичный язык, предназначенный решать эффективно одну-единственную задачу - перебор множества решений.
no subject
(no subject)
no subject
Сюда, быстро: http://www.paulgraham.com/
no subject
no subject
no subject