Почему python популярнее рубей, хотя Руби превосходит python по следующим пунктам:
- Метапрограммирование (т.е возможность написания DSL)
- Более серьезная поддерка FP (TCO, простой function composition syntax, pattern matching)
- Более серьезная поддержка OOP (mixins)
- Более серьезная функциональность для обработки текста
- Больший динамизм/расширяемость
- Поддержка continuations
- Однозначность синтаксиса
- Нет такого цирка как python2 vs python3
- Многострочные лямбды
Srsly python выигрывает только за счет того, что для него тупо больше биндингов ко всяким либам.
Пока что вижу ответ: так получилось. Prove me wrong.
Я полагаю, что да, исторически. Собсно, питон появился раньше и на нём раньше начали писать утилиты для операционных систем(когда заебались писать на пердле).
@like-all хз 1991 vs 1995. Когда там на питоне начали писать утилиты? В начале/середине нулевых?
@anarchy >нет "единственно-правильной" версии языка
ле, что в етом хорошего?
@anarchy > метапрограммирование
покажи в питоне инструментарий по произвольным преобразованием над синтаксисом в compile-time. гуглил - не нашел.
это не continuations
отспупы, local vs global, однострочные лямбды, много statements вместо expressions
ахаха лойс. скажи кому от этого выгодно плз.
@ninesigns > по "более серьезным" пруфы будут?
перечитай /0 плз.
в OOP python тоже явно проигрывает: ruby объектный от начала и до конца, там есть public, private, protected, там есть
насчет FP там написал
более серьезная обработка текста - это шаблонизация строк например.
@postman наличие компилятора в рантайме не отменяет существования фазы компиляции (и раскрытия макросов)
@plhk
RubyVM::InstructionSequence.compile_option = {
tailcall_optimization: true,
trace_instruction: false
}
@anarchy > есть meta-классы
это заебись, но крч не то.
не неоднократно слышал батхерат на тему этих проблем. хз может и надуманая.
@postman нет, но достаточно чтобы утверждать что с т.з ООП ruby > python.
@postman частичный можно, только лень. сверху естественно будет CLOS.
@heroin недавно это в 2007 году?
"скриптопарашность" - это базворд.
@postman 1.9 как раз и вышел в 2007 году судя по википедии
@kuzy000 в первую очередь это про JS, в чуть меньшую про питон и еще в чуть меньшую - про руби.
хуй знает почему они так с utf-8 наложали, видать у них там в подлунном мире своя атмосфера.
@kuzy000 ну смотри, в классическом лиспе с его image-based подходом и динамизмом компиляция не выносят как отдельную фазу.
я освежил свое знание рубей и понял что вряд ли там макскросы настолкько свободные как в лиспе. метапрограммирование там запилено за счет нихуевого динамизма объектной модели, то есть за счет развитой интроспекции.
то есть про compile-time исполнение кода в рубях я напиздел, сорь.
@kuzy000 я хз тут без контекста решаемой задачи сложно.
с одной стороны синтаксис lua приятней, встраивание в сишку охуительно, есть metalua и наконец lua-jit.
с другой стороны стандартная либа там куцая.
как standalone язык плюсов у lua я не вижу. В быстром встраивании чтобы не переписывать полпроекта она wins.
@kuzy000 я не знаю CL, но знаю что там можно пилить макросы, внутри которых раскрываются макросы.
то есть, одним проходом ты вряд ли обойдешься.
@ninesigns пруф или mruby wins
@kuzy000 ну это уже рекурсивное раскрытие.
ты не про макростеппер щас говоришь?
@kuzy000 вечером дома подумаю, спс.
@freeingria лол, свифтоавторы походу решили не запариваться и сделали bydlo-approved industry-grade.
модули-то там там хоть полноценные?
@freeingria полноценный модуль - это тот, который явно декларирует какие классы/функции/константы он провайдит, например. как раз чтобы например name collisions не было итд.
про классы из одного исходника, которые могут друг другу ТАМ теребонькать private поля это чот хуйня какая-то. Модуль может и из нескольких файлов состоять. как в этом случае будет вопрос решаться?
@freeingria > ты приватный член потеребонькать все равно не сможешь из другого файла.
а internal ?