Re[11]: понимание ООП Алана Кея
От: korvin_  
Дата: 26.03.23 20:19
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Код макросов лиспа не манипулирует AST явно.

V>Макросы Лиспа подстановочные (шаблонные), как макросы Си/С++ или макроассемблера.

С чего это вдруг?

V>А вот макросы Форта устроены иначе — они получают на входе поток лексем и манипулируют с ним именно явно, порождая то самое AST.


Макросы Лиспа получают на вход дерево объектов и манипулируют с ним явно. В чём отличие?

V>Макросы Схемы живут только в момент компиляции, в отличии от макросов Лиспа


Что мешает в Схеме вызвать eval в рантайме?

V>Макросы Схемы имеют другое ключевое слово


Это существенное отличие, да.

V>и пару особенностей.


Каких?

V>Но это по-прежнему подстановочные/позиционные макросы, без явного манипулирования AST.


Что мешает работать с syntax object в Схеме через syntax-case, например?

V>Причём, тут я противоречу самому себе, вроде бы, ведь можно представить себе такую реализацию Схемы, которая ведёт себя как Лисп?

V>Представить такую реализацию можно, да вот только Схема — это именно компиллируемая версия Лиспа. ))
V>А динамическая версия — это сам Лисп.

SBCL прекрасно компилирует Common Lisp. А eval из Схемы никуда не делся.

V>Для целей эффективного конечного кода пришлось внести в Лисп несколько ограничений, наверно поэтому назвали другим языком и стандарты Схемы с тех пор развиваются независимо от Лиспа.


Схема не так и не для этого разрабатывалась.

V>Вернее, впервые стандарты на семейство Лисп появились в Схеме — именно из-за вносимых ограничений.


С чего ты взял, что из-за них?

V>В любом случае, это лишь эмуляция.


Чем здесь эмуляция отличается от «не-эмуляции»?

V>Объекты в Лиспе не являются первоклассными сущностями языка, вот в чём косяк.


Являются.

V>Первоклассной сущностью там являются числа/символы, функции и пара CONS(car, cdr), где каждый элемент пары может быть числом, функцией или опять парой (ссылочная семантика для всего перечисленного).


И много что ещё. Перечитай определение, что такое first-class citizen.

V>Форт навязывает лишь способ мышления, не навязывая остального.

V>И при этом чудовищно прост в реализации.
V>И при этом чудовищно эффективен, в сравнении с Лиспом.
V>Порой и в сравнении с нейтивом из-за особенностей манипулирования стеком — в Форте обычно меньше паразитных манипуляций данными в стеках/регистрах, меньше ненужных копирований/преобразований данных — состояние стека на выходе одного слова часто является готовым состоянием стека для вызова другого. Писать программы на Форте — это как играть в Тетрис, натурально, все фигуры должны стыковаться, и тогда прога просто летает. ))

А уж ассемблер-то как эффективен. И что из этого вытекает? Зачем все эти Лиспы, Си, Паскали и прочие Форты понапридумывали?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.