LINUX.ORG.RU
Ответ на: комментарий от dmsh

Что делать, если не понравится CL?

Ну это смотря что значит «не понравится» - бывает недовольство чисто практическое, мол не хватает такой-то библиотеки и вообще язык «маргинальный» (т.е. нет серьёзных коммерческих компаний которые продвигают именно open source, у CL только ITA software немного подтолкнула ClozureCL и SBCL, да и то за счёт энтузиазма своих CL-разработчиков, плюс ещё какие-то случаи коммерческого использования с профитом для open source). В этом случае всё просто, раз это open source, пишутся патчи, пишутся библиотеки - своими силами.

Другое дело принципиальное недовольство, то есть самой архитектурой языка. Кому-то не нравится Scheme из-за своей рафинированности, кому-то СL из-за своей императивности или отсутствия каких-то выразительных средств. Тут уже «на вкус и цвет ...» и выбор под задачу - я пока не видел универсального языка, в любом случае можно дойти до границ выразительности или найти вещи для которых язык не предназначен.

В общем на чашах весов всегда «нравится сам язык» и «но вот, блин, много пилить надо».

quasimoto ★★★★
()
Ответ на: комментарий от dmsh

> Что делать, если не понравится CL?

вдоль.

korvin_ ★★★★★
()
Ответ на: комментарий от quasimoto

> Бери уже Racket и пейши программы :)

Там таки есть аналог CLOS? Даже с произвольными комбинаторами методов?

Если не понравится - бери CL

Давно уже взял.

no-such-file ★★★★★
()
Ответ на: комментарий от Love5an

> Я себе представил как это тормозит.

ну ты можешь представлять себе что угодно, да. на реальность это не влияет

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

Ок, давай сравним. Производительность CLOS в SBCL и как оно там называется в «Racket». Но, только, разумеется, если оно там сравнимо по возможностям с оригинальным CLOS+MOP. Т.е. не только обобщенные функции, но и фичастые классы, множественное наследование, комбинаторы методов, и прочее, и все оное же в рантайме создаваемое и изменяемое.

Над эффективными реализациями CLOS для CL люди, в т.ч. несколько коммерческих компаний немаленького размера, работали десятилетиями.
И то, тормозит.

Поэтому в производительность оного в реализации полуакадемической Scheme(ну ладно, Racket) продвигаемой одной небольшой компанией, я не верю.

Love5an
()
Ответ на: комментарий от korvin_

Метаклассы, метаобъекты слотов, обобщенная функция change-class(меняет класс объекта), классы funcallable-standard-class и его инстанс, класс funcallable-standard-object(его объекты можно использовать как функции).

И да, там тоже многоступенчатая инициализация объектов? (make-instance вызывает allocate-instance, а потом initialize-instance, а та вызывает shared-initialize)

Love5an
()
Ответ на: комментарий от Love5an

> Метаклассы, метаобъекты слотов, обобщенная функция change-class(меняет класс объекта), классы funcallable-standard-class и его инстанс, класс funcallable-standard-object(его объекты можно использовать как функции).

И да, там тоже многоступенчатая инициализация объектов? (make-instance вызывает allocate-instance, а потом initialize-instance, а та вызывает shared-initialize)

все есть. единственное насчет funcallable-* сомневаюсь, ибо не нужно оно в Схеме

korvin_ ★★★★★
()
Ответ на: комментарий от quasimoto

> Кстати, вот ссылка на устройство диспетчера в PCL (реализация CLOS в CMUCL/SBCL) - Efficient Method Dispatch in PCL.

ну... спасибо... но я не просил ее вроде

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

А как же ответить ссылкой на годную технологию которая используется в альтернативных ООП от Scheme? :) А то сравнивать собрались.

quasimoto ★★★★
()
Ответ на: комментарий от quasimoto

> А как же ответить ссылкой на годную технологию которая используется в альтернативных ООП от Scheme?

не знаю насчёт технологий, но я уже не раз упоминал здесь название реализации CLOS-подобной объектной системы для PLT, ну и конечно же в доках к PLT она указана.

http://barzilay.org/Swindle/

А то сравнивать собрались.

ну я думал Love5fan какой-нибудь тест придумает

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

что интересно?

Люди из Xerox сначала сделали реализацию CLOS которая попала в CMUCL и SBCL. Они же сделали Tiny-CLOS чуть позже, которая была основой для Swindle. Так что я думаю Tiny-CLOS должна использовать те же технологии что и CLOS. Правда, код PCL из SBCL за 20 гораздо больше точился, чем Tiny-CLOS, но это уже не принципиальное различие.

quasimoto ★★★★
()
Ответ на: комментарий от quasimoto

ну не совсем, потому и tiny. но в swindle автор уже сделал достаточно близко к CLOS, плюс ещё кучу вспомогательных и просто удобных чтук накрутил, правда я их не смотрел =)

korvin_ ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.