March 2026

S M T W T F S
12 34567
891011121314
151617 18192021
22232425262728
293031    

Style Credit

Expand Cut Tags

No cut tags
Thursday, May 5th, 2005 12:10 am
Левенчук пишет, что все серьёзные программисты мечтают программировать на фукнциональных языках. Не знаю, как серьёзные, а у меня лично никогда желания программировать на Лиспе не возникало. Нечеловеческий он какой-то. Пусть ворлоны на нём программируют.
Tags:
Thursday, May 5th, 2005 07:55 am (UTC)
ну, для начала надо понимать что такое Лисп, а также что такое функциональный язык.
вообще же большинство известных мне ¨серьёзных¨ программистов зачем-то считают нужным бравировать своим антиинтеллектуализмом (в том что касается собственно профессиональной деятельности), даже если на самом деле являются людьми вполне вдумчивыми.
и это не может не огорчать, да.
Thursday, May 5th, 2005 08:14 am (UTC)
кстати, заглянул в собственно линк.
этот [livejournal.com profile] ailev обо всём такую херню несёт, или только о том в чём я разбираюсь?
Thursday, May 5th, 2005 08:42 am (UTC)
ну, скажем так: если ты считаешь Лисп функциональным языком, то: либо ты так испугался Лиспа, что не успел узнал о нём ничего существенного; либо ты не знаешь, что такое функциональное программырование; либо и то и другое.
либо разводишь меня, болезного, на флейм. :)
Thursday, May 5th, 2005 09:17 am (UTC)
> Лисп не только я считаю функциональным языком

такова природа популярных заблуждений — хрен убьёшь...
Friday, May 6th, 2005 08:45 am (UTC)
Лисп — это язык метапрограммирования. Это я вам как лиспник говорю.

Главное в Лиспе не функции, а макросы. А скобочки (точнее, представление программы в виде S-выражений) — это единственный способ делать нормальные макросы.

Естественно, речь идёт не о тех макросах, которые в C/C++. В лиспе макрос — это функция, которая на входе принимает одно S-выражение, а на выходе даёт другое. Т.е. все вычислимые функции доступны, а не просто подстановки в строках, как в C.

Другое дело, что ФП более удобно для написания таких вот функций, преобразующих одно выражение в другое :) Однако в Common Lisp есть и императивный ООП, и многое другое.

И ещё, надо заметить, что тот лисп, который изобрёл МакКарти, и тот, который существует сейчас (Common Lisp, Scheme) — это две большие разницы :) Я сейчас писал про современный.
Friday, May 6th, 2005 09:58 am (UTC)
1. Нет, не является :)
2. Не всё — список. Есть ещё массивы, структуры, хеш-таблицы, объекты. Есть ещё целые произвольной точности и комплексные числа. У вас устаревшие сведения :)
3. Обычные функции работают во время работы, а макросы — во время компиляции (поэтому тут и уместна приставка мета-). Конечно, макросы могут вызывать другие функции (в этом главное отличие от большинства других макросистем).

Простой пример: для того, чтобы включить в программу на C парсер, нужно вызвать отдельную утилиту, которая описание грамматики сконвертирует в код на C. А в Лиспе для этого нужно лишь написать соотв. макрос. Другой пример — автоматическое выведение типов а-la ML.
Friday, May 6th, 2005 05:18 pm (UTC)
> Или вы имеете в виду, что константные выражения в Лиспе вычисляются при компиляции?

Не константные. Любые. Во время компиляции доступен ВЕСЬ язык. Которым можно компилятор расширять как угодно.

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-06 10:54 pm (UTC) - Expand
Wednesday, May 11th, 2005 12:01 pm (UTC)
3. Во время компиляции работают макросы. А если входные параметры нужны в рантайме, то это нужно делать функцией.

Макросы принимают на входе данные, но генерируют код. Например, данные — грамматика, а код — парсер.

А парсер не входит в RTL Лиспа. Я не понял последний абзац. RTL вообще не причём :)

Смысл в том, что можно расширять компилятор Лиспа. Например, добавить парсер. И это ещё не самое впечатляющее.
Friday, May 6th, 2005 09:59 am (UTC)
2. Есть ещё функции :)
Friday, May 6th, 2005 10:30 am (UTC)
Как раз это - большая бяда CL, что не является - он не гарантирует корректности хвостовой рекурсии, в отличии от той же Схемы, и, соответственно, на нём не просто можно, но и неизбежно нужно писать императивно.

> А чем, собственно, макрос отличается от фукнции, кроме имени, я не совсем понял.

Может, моя статейка поможет разобраться:

http://arxiv.org/abs/cs.PL/0409016

> Мне просто кажется не всегда удобным мыслить именно в этих терминах.

Лисп позволяет мыслить в любых терминах, на любом уровне абстракции. Как и любой другой метаязык.
Friday, May 6th, 2005 12:44 pm (UTC)
> Как раз это - большая бяда CL, что не является - он не гарантирует корректности хвостовой рекурсии, в отличии от той же Схемы, и, соответственно, на нём не просто можно, но и неизбежно нужно писать императивно.

это неверно.
главной бядой CL являются сектанты вроде фанатов ¨языка¨ Scheme, которые на голубом глазу сообщают лисподевственным людям херню вроде процитированного выше отрывка.
Friday, May 6th, 2005 01:04 pm (UTC)
Херню, гойворишь? Показать реализации CL, в которых *НЕТ* корректной хвостовой рекурсии? Или сам найдёшь и извинишься?

P.S. Вообще-то я предпочитаю CL Схеме, за инкрементальную компиляцию. За неё можно простить даже раздельные пространства имён для функций и всего остального...

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-06 04:51 pm (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-06 05:02 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-06 05:12 pm (UTC) - Expand

(no subject)

[identity profile] nuclight.livejournal.com - 2005-05-06 07:36 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-06 10:55 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-06 11:03 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-06 11:34 pm (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 08:33 am (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 09:20 am (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 10:31 am (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 11:11 am (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 11:22 am (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 11:42 am (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 12:23 pm (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-10 05:48 pm (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-10 06:29 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-09 06:46 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-10 10:09 am (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-10 11:33 am (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-09 06:44 pm (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 11:19 am (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-08 11:32 am (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-09 06:41 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-10 11:26 am (UTC) - Expand

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-10 05:11 pm (UTC) - Expand

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-06 11:05 pm (UTC) - Expand
Friday, May 6th, 2005 01:06 pm (UTC)
И, киста ти, Guy Steele - сектант, или как?

(no subject)

[identity profile] mauhuur.livejournal.com - 2005-05-06 03:11 pm (UTC) - Expand
Friday, May 6th, 2005 10:55 am (UTC)
Вопрос, не является ли это такой же ересью по отношению к задумке языка, как писать императивно, например, на Прологе?

А не получится на Прологе писать императивно - её, императивности, там просто нет, как нет родной реализации, ну скажем, regexp engine на Прологе - в виде иллюстрации факта неимперативности. Bindings к Сишным реализациям - есть, своей - нет. Пролог вообще специфичный язык, предназначенный решать эффективно одну-единственную задачу - перебор множества решений.
Tuesday, May 10th, 2005 11:53 am (UTC)
Вообще говоря, единственным предназначением Пролога было морочить голову щедрым, но не очень сообразительным кураторам проекта "5-е поколение компьютеров".

(no subject)

[identity profile] cmm.livejournal.com - 2005-05-10 05:15 pm (UTC) - Expand
Friday, May 6th, 2005 10:28 am (UTC)
Оно и видно - не читал, но осуждаешь.

Сюда, быстро: http://www.paulgraham.com/

Tuesday, May 10th, 2005 11:46 am (UTC)
Вы ему, вероятно, тоже.