• Lisp programming CLOS например У меня слёзы на глаза наворачиваются когда в языках с "обычным" ООП мне приходится городить Visitor'ы.

    Когда приходится кастовать и боксить-анбоксить туда-сюда, плюс писать if-ы для диспетчеризации, я начинаю плеваться.

    А уж когда мне хочется изменить механизм вызова метода, сделать например вызов обычного виртуального метода похожим на вызов конструктора или деструктора, или добавить какой-либо код, вызывающийся до/после/вместо метода, я понимаю, что это потребует таких дикий костылей, что сразу отказываюсь от идеи.

    И ладно бы язык, при работе с которым это всё возникало, был бы Java или C#, так нет, я говорю — вся модная, в том числе динамическая, хипстота — а туда же.
    ♡ recommended by @O01eg

Replies (7)

  • @lovesan, ты действительно делаешь что то не так и язык тебе дает об этом знать ввиде пытки изобретения костяля. clos конечено супер гибкий как и сам лисп но от этой гибкости только проблемы в реальных проектах.
  • @lovesan, а еще в руби это все возможно но не из коробки
  • @bga, Да я скажу — в C# все тоже возможно. Только это такие пиздец костыли и уродство, что лучше не делать, и оставить для теоретиков костылестроения.
  • @bga, У меня вот, сколько пишу, проблемы только от ригидности языка, наоборот. Ригидность языка ведет к костылям и говнокоду.
  • @lovesan, да все правильно ты такой спец тебе можно давать в руки опасные игрушки а 95% у нас известно — кто им нельзя. Но все равно ты вон там как спец напиешь все в С# вообще на лямбдах а потом только ты и поддержать сможешь, станешь "незаменимым" работникм (что тебе определенно плюс) а коллеги не столь одаренные будут мучатся в истериках. Вобщем не зря делают жавы. У большинства есть общий язык и взаимопонимание потому что на жаве фривольности мало. А лисперы пусть дальше страдают от раздробленности сообщества
  • @lovesan, эх да, даже рэкетчики по дефолту клос не осилили
  • @asvil, Да, это было неприятное разочарование — узнать об этом, когда я решил взяться за изучение метаобъектного протокола. Но тем не менее, добрая половина Racket написана с использованием их объектной системы.