metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2015-04-19 11:59 am

Ад дотнета

Тут недавно выпустили akka.net, которая, по идее, сможет решить большую часть проблем с асинхронным обменом сообщениями для моего софта.
Сижу читаю всякое по теме, набрел на такую ссылку: http://www.aaronstannard.com/the-profound-weakness-of-the-net-oss-ecosystem/ - это один из разработчиков akka.net, занимавшийся ее remoting-кишками.

Вкратце: "если на дотнете делать что-то сложное и осмысленное - садись и пиши фреймворки с нуля, потому что индусам и микрософту ничего этого не надо".

Еще одна забавная хрень оттуда же: они подумали и вместо переезда своего приложения с дотнета на jvm, решили спортировать акку с jvm на дотнет. Это только с первого взгляда выглядит странным в рамках религии "мы не занимаемся изготовлением инструментов", но если сравнить приложение со сложной бизнес-логикой, разрабатываемое 2-3-5 лет и фреймворки - может оказаться, что портировать вторые потребует гораздо меньше времени.

[identity profile] metaclass.livejournal.com 2015-04-19 09:43 am (UTC)(link)
Ок, откуда столько портов жабьих либ тогда в дотнете? Из воздуха появились, свыше даны?

[identity profile] denisioru.livejournal.com 2015-04-19 09:46 am (UTC)(link)
По разным причинам. Но для конечного разработчика изобретать свои велосипеды лютое зло. Заказчик платит за решение своих задач. А пока что я убежден, что те кто пилит свой блэкджек и не использует готовы либы - имеет слишком дохрена свободного времени и ему либо надо зарплату резать либо переводить на другую должность по несоответствию.

[identity profile] metaclass.livejournal.com 2015-04-19 09:52 am (UTC)(link)
Ну ок, предположим, точно так же думает разработчик по ссылке (там прямо написано - времени не было, надо было для заказчиков софт пилить). Какое решение ты предложишь ему, вместо того, чтобы спортировать готовый, удобный и весьма популярный фреймворк c jvm на .net?

[identity profile] denisioru.livejournal.com 2015-04-19 09:55 am (UTC)(link)
Я не знаком с требованиями разработчика по ссылке. Но фреймворков в данном направлении запилено уже достаточно - с разной степенью готовности, гибкости, стоимостью и прочими. Пересчитай время портирования в деньги, накинь часов на юнит-тесты (т.к. большинство популярных и/или коммерческих так или иначе тестируются), накинь ещё часов на документацию. Посчитай сумму. Действительно на рынке нет готовых библиотек, стоимость которых укладывается в эту сумму?
Edited 2015-04-19 09:56 (UTC)

[identity profile] metaclass.livejournal.com 2015-04-19 10:05 am (UTC)(link)
Тут по старой ссылке - нет http://stackoverflow.com/questions/2186222/any-good-implementation-of-actors-for-c
В википедии - вроде есть: http://en.wikipedia.org/wiki/Actor_model но все запилены достаточно недавно, или заброшены или альфа.


Большинство .net разработчиков имеют именно такой mindset - если этого нет в микрософте, значит это никому не нужно, а писать свое ни в коем случае нельзя и садятся делать синхронные crud-сервисы из подручных материалов. Ну или переходят на жабу со скалой.
Edited 2015-04-19 10:07 (UTC)

[identity profile] denisioru.livejournal.com 2015-04-19 10:09 am (UTC)(link)
Не знаю насчет большинства, я считаю в деньгах. Конечный вариант ПО должен укладываться в заданную стоимость. Тоесть я не против сделать всё охуительно красиво, правильно, гибко и расширяемо (ну с точки зрения данного момента и одного человека :)) - но если этот вариант будет в разы дороже и будет делаться также дольше, потребует больше времени (=денег) на саппорт, чем использовать готовые библы - и пусть оно не так будет красиво и где-то асинхронность придется сделать руками, а не использовать возможность библиотеки - но софт будет дешевле в разы - я выберу второй вариант.

[identity profile] jakobz.livejournal.com 2015-04-19 01:54 pm (UTC)(link)
Так блин нет готовых либ то. И вопрос стоит как: либо мы слепим библиотеку, либо будем делать то же самое без библиотеки (копипастой и говнокодом), либо перейдем на яву.

Дотнетчики выбирают второе, т.к. первое для них - табу. И это чисто .net-специфика.

[identity profile] denisioru.livejournal.com 2015-04-19 01:58 pm (UTC)(link)
На любой случай жизни конечно нет готовых либ. Но есть другие, которые могут использоваться. Тоесть конечно можно уперетца и сказать "я хочу акторов и асинхронно и буду портировать с жавы", а можно сказать "портирование займет N человеко-часов, что мы выиграем в итоге?" - и вот тут зависит от ответа. Если это действительно нужный продукт, который удачно впилица во все наши продукты и сэкономит сотни-тысячи человеко-часов (кстати тут тоже вопрос - оно окупит?) - тогда обсуждаемо. Если это просто хотелка для поддержания собственного эго или попытка занятца хобби в рабочее время - тогда сразу нахуй.

Ну и стереотипы не всегда работают. Разные задачи, разные люди, те же линуксоиды или жависты - тоже притча во языцах, но случаи бывают разные.
Edited 2015-04-19 14:00 (UTC)

[identity profile] jakobz.livejournal.com 2015-04-19 01:47 pm (UTC)(link)
Подтверждаю - майндсет 90% дотнета именно такой. Запили какой-нибудь хитрый хелпер или утилитку - и на тебя уже смотрят косо, типа "велосипедист".

Ну, например, я например реально слышал что-то типа "ну ты навернул функциональщины" за вот такой примерно хелпер:

T Run(this Logger log, string description, Func fn) {
.. таймеры-логирование-try
fn();
.., catch и записать исключение, сколько времени заняло, и т.п.
}

От такого подхода, со временем, мозг отключается до того состояния, когда кроме CRUD он вообще ни на что не способен.

[identity profile] metaclass.livejournal.com 2015-04-19 02:14 pm (UTC)(link)
Те же самые люди тот же самый хелпер в составе какой-нибудь готовой либы 100500мб размером съедят спокойно :)

[identity profile] jakobz.livejournal.com 2015-04-19 02:36 pm (UTC)(link)
Ага. Особенно если она от MS, или Фаулер сказал что это такой паттерн.