metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-08-18 12:48 pm

О изобретении велосипедов

http://nekhill.livejournal.com/162101.html
Непонятно, что делать в случае, когда готовый код или софт вызывает приступы ненависти к его авторам, а пользователи платят за то, что софт работает, а не за то, чтобы вы копались в дебрях чужого бреда.

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

Кстати, еще один вариант, где велосипеды нужны без вариантов - это когда в языке физически нет нормальных способов реализовать функциональность, не сойдя с ума. Например, вкрутить еDSL в дельфи или C#. Или вариантные типы с паттерн-матчингом туда же.
На данный момент, единственно читабельные варианты делать такое мне попадались только на clojure и ruby. В F# метапрограмминга толком нет вообще, на скале - уже начинается жесть с имплиситами и вычислениями на типах, в хаскеле SYB, Template Haskell и аппликативные функторы в качестве замены функциями с переменным числом аргументов.

[identity profile] metaclass.livejournal.com 2013-08-18 10:06 am (UTC)(link)
Я сам такой пишу иногда. Например, в 7 дельфи нету генериков списков-словарей и тому подобного.
Поэтому я сделал на clojure генератор подобных классов, чтобы, во-первых, не писать их руками, во-вторых, не заниматься приведениями типов, используя какие-нибудь TObjectList.

[identity profile] aamonster.livejournal.com 2013-08-18 10:24 am (UTC)(link)
"Нету" - другая тема. Я про "есть, но не используется, NIH".
И говорю про либы типа stl и boost - где можно рассчитывать, что либа хорошо оттестирована.
(deleted comment)

[identity profile] aamonster.livejournal.com 2013-08-18 12:50 pm (UTC)(link)
Вы с чем-то спорите в моём комменте или нет? (не нашёл ни оспаривания каких-то моих утверждений, ни их подтверждения - просто приведён факт).

Кстати, интересно, QT менее известен, чем boost, или более?
(deleted comment)

[identity profile] nekhill.livejournal.com 2013-08-18 01:25 pm (UTC)(link)
Позволю себе, как автор изначального поста, уточнить, что у нас используется полностью свой набор библиотек, несовместимый (или не очень очевидным образом совместимый) с STL. STL и (тем более!) boost преданы анафеме как порождение Сатаны. Стеки и очереди, ессессно, свои. Строки тоже свои. Доступ к СУБД - через COM-компоненты тысячелетней давности. Надеюсь, тов. [livejournal.com profile] aamonster тоже увидит этот коммент.

[identity profile] w00dy.livejournal.com 2013-08-18 01:28 pm (UTC)(link)
У вас там вообще какой-то ад и содомия. Я, к счастью, так низко ещё не пал.

[identity profile] fas-tm.livejournal.com 2013-08-18 02:29 pm (UTC)(link)
"Стеки и очереди, ессессно, свои. Строки тоже свои. Доступ к СУБД - через COM-компоненты тысячелетней давности."

от входа расстреливать. сразу же.

[identity profile] nekhill.livejournal.com 2013-08-18 02:35 pm (UTC)(link)
Промблема в том, что есть миллионы строк кода, которые написаны на этих библиотеках за последние примерно 22 года и работают у пользователей на где-то так 50 000 000 компьютеров в мире. Поэтому речь о выкидывании вести тяжело.
Edited 2013-08-18 14:35 (UTC)

[identity profile] fas-tm.livejournal.com 2013-08-18 02:38 pm (UTC)(link)
я знаю такие ситуации. мало того, был в них.
надо понимать что это само собой не рассосется и "технический долг" все равно настигнет и больно ударит.
единственный выход - садить десяток правильных человек для постепенного приведения в порядок всего.
(deleted comment)

[identity profile] berezovsky.livejournal.com 2013-08-18 03:10 pm (UTC)(link)
ado dado

[identity profile] nekhill.livejournal.com 2013-08-18 03:11 pm (UTC)(link)
Интересно. Почитаем-с.

[identity profile] http://users.livejournal.com/_slw/ 2013-08-18 12:44 pm (UTC)(link)
если в каком-то продукте используется boost -- то с этим продуктом обычно боль.
уж больно boost версия-специфичный

[identity profile] aamonster.livejournal.com 2013-08-18 12:47 pm (UTC)(link)
В смысле, боль при использовании чужого буст-зависимого проекта как модуля для своего?

[identity profile] http://users.livejournal.com/_slw/ 2013-08-18 12:59 pm (UTC)(link)
нет, даже при просто использовании.
падает.
не работает
глючит.

ведь ни одна падла не напишет какая точно версия буста нужна, а шаг в сторону -- оно не работает
а если надо два продукта и каждому свой буст? ооо...

[identity profile] zelanton.livejournal.com 2013-08-18 04:35 pm (UTC)(link)
Вот кстати нахрена, когда всё делается контекстной заменой поверх файла с generic-like шаблоном?

[identity profile] metaclass.livejournal.com 2013-08-18 04:53 pm (UTC)(link)
Изначально это был кусок более сложного кодогенератора, который json-able объекты делает.

[identity profile] zelanton.livejournal.com 2013-08-18 05:00 pm (UTC)(link)
Ясно. У меня тоже этого говна хватало, но где оно возможно предпочитал обходиться без кодогенераторов.

Protocol Buffers не пробовал? Под делфю чего-то уже сделали зачем-то. У меня помнится много проблем было со скоростью работы XML и JSON.

[identity profile] metaclass.livejournal.com 2013-08-18 05:07 pm (UTC)(link)
У меня принципиально везде json - для совместимости с хипстерами.

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

[identity profile] zelanton.livejournal.com 2013-08-18 05:10 pm (UTC)(link)
под хипстеров там реализация тоже есть. Даже на скриптах. Не знаю правда насколько оно юзабельное, просто в todo давно стоит покурить это, а руки не доходят.