Левенчук пишет, что все серьёзные программисты мечтают программировать на фукнциональных языках. Не знаю, как серьёзные, а у меня лично никогда желания программировать на Лиспе не возникало. Нечеловеческий он какой-то. Пусть ворлоны на нём программируют.
Tags:
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 вообще не причём :)
Смысл в том, что можно расширять компилятор Лиспа. Например, добавить парсер. И это ещё не самое впечатляющее.