metaclass: (Default)
[personal profile] metaclass
.NET и Co - это не мейнстрим, это помойка для однодневных приложений

Сразу скажу, я на дотнете пишу уже года 4 и он меня задолбал весьма серьезно. Но тем не менее, альтернативы в моем случае (опердень с GUI, разрабатываемая в условиях адских ограничений по времени и ресурсам) тупо нет.
Основная причина, конечно, в том, что у меня на нем уже сделано 2/3 любого проекта типа "бд->аппсервер->gui-клиент", на любой другой платформе это все придется делать с нуля.

Но, кроме этого, в других платформах и языках, по-моему, такие задачи вообще не рассматриваются, как класс. Т.е. если GUI - то сделанный вручную, зашит в ресурсы, формы делаются по принципу "один студент-одна неделя-одна форма". А то и вообще GUI никто не рассматривает, потому что язык предназначен для веб- и прочих серверов. Очевидно же, что если основная целевая аудитория - веб-разработчики, то для серьезного GUI это использовать будет невозможно - даже если есть биндинги к GUI-тулкитам, они будут баговые и недоделанные и придется все время тратить на их допиливание. (Хотя, по правде сказать, в дотнете все точно так же - гуй там приходится допиливать постоянно).
Подумал я использовать жабу, для аппсервера. На словах все выглядит красиво - Hibernate, Spring итд итп. На практике, мне придется неделю сидеть только настраивать eclipse, jdk, jetty или томкаты, ant и мавены какие, разбираться как это все интегрировать, как сделать инфраструктуру для разработки. А потом опять с нуля делать все, что у меня уже сделано на ASP.NET (конфигурируемая миддлварь для произвольных баз данных, выставляющая CRUD операции в виде restful сервиса)

[livejournal.com profile] zabivator там по ссылку пропагандирует линукс, емаксы, билд из командной строки, итд. Я серьезно не понимаю, как можно в таком стиле быстро разрабатывать проекты. Т.е., я даже согласен признать, что я тупой, что у меня мозг сломан 15 годами быдлоразработки на дельфи, но я не понимаю, как проект НАЧАТЬ.
Когда приходишь уже на готовое - более менее понятно, скачал исходники, configure/make/install и понеслась. Я понимаю, что это закрывает 99% современного IT, когда народ приходит на проекты, которые делаются 10 до того, и будут делаться 10 лет после, получает инструкции "как включиться в работу", все им настраивается/деплоится с образом специально назначенными гуру-админами и все.

Но у меня обычно все не так. Стандартная ситуация "нужно с нуля сделать совершенно новый проект, нужно выбрать для него платформу так, чтобы не сойти с ума, чтобы по максимуму повторно использовать прошлые наработки, итд".
И обычно это выглядит примерно так: 20-50-100 сущностей предметной области, в лучшем случае их можно оформить в виде независимых редакторов, в худшем - они связаны в сложный адский workflow который нужно контролировать, чтобы юзера в дебри не убрели, разработчиков - 1-2 человека, времени - 2 месяца, причем каждый день будут регулярно отвлекать по мелочам, старым проектам и прочей хрени минимум 2-3 раза. Но зато почти нет оверхеда на коммуникацию, на сбор требований (требования уже известны, т.к. я предметку знаю лучше всех спецов клиетов вместе взятых). Тестирование софта обычно требуется по минимуму, т.к. изначально правильная архитектура не допускает множество тупых багов, а вот с документированием - абзац. Т.е. либо документирование, либо сделать проект вовремя.

Date: 2010-01-27 09:48 am (UTC)
From: [identity profile] zelanton.livejournal.com
Аргументация на уровне "мамой клянусь"

Date: 2010-01-27 09:53 am (UTC)
From: [identity profile] zelanton.livejournal.com
не, по ссылке "dotNET - однодневка"

Date: 2010-01-27 09:56 am (UTC)
From: [identity profile] metaclass.livejournal.com
У [livejournal.com profile] zabivator очень специфическая работа, там дотнет вообще не применим.

Date: 2010-01-27 09:59 am (UTC)
From: [identity profile] zelanton.livejournal.com
я про аргументацию, а не про работу. В моей работе тоже много чего неприменимо, но кричать "оно - не мэйнстрим, а однодневка" просто потому что это моё имхо глупо.

Date: 2010-01-27 10:04 am (UTC)
From: [identity profile] metaclass.livejournal.com
Не, у него аргументация там более-менее понятная. Не кросс-платформенно, узкомикрософтвоская шиза, сложный интероп с другими языками. С моей стороны еще - адская убогость высокоуровневых либ, глюки их архитектуры и API.
Но все это с лихвой покрывается удобством работы, и самое главное - начала работы.

Date: 2010-01-27 08:37 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Но все это с лихвой покрывается удобством работы, и самое главное - начала работы.
Ты просто к этому ПРИВЫК. Не более.

Date: 2010-01-27 08:50 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Не, тут объективно порог вхождения разный. Хотя бы использование сторонних либ в дотнете и С++ в студии - это небо и земля. Дотнет - копируешь файло, делаешь ссылку в проекте, все. В с++ - какие-то адовы опции компилятора и линкера. И это я еще знаю, что делает компилятор и линкер, а если бы не знал?

Date: 2010-01-27 08:52 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Не, тут объективно порог вхождения разный. Хотя бы использование сторонних либ в дотнете и С++ в студии - это небо и земля. Дотнет - копируешь файло, делаешь ссылку в проекте, все. В с++ - какие-то адовы опции компилятора и линкера. И это я еще знаю, что делает компилятор и линкер, а если бы не знал?
Для меня со стороны GAC выглядит куда более забористой и ебанутой хуйнёй, чем либы в плюсах.

Date: 2010-01-27 08:58 pm (UTC)
From: [identity profile] metaclass.livejournal.com
GAC нахер не нужен, надо заметить. Копируешь либу себе и запускаешь сколько душе угодно.
В GAC ее ставят, если она сотне проектов на компе нужна.
И по-моему, GAC - элементарная вещь, в отличие от с++ либ :)

Date: 2010-01-27 09:02 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Либы специфичны для компилятора
Запоминаешь это золотое правило.
Дальше либо используешь dll, либо собираешь руками.
Благо большая часть библиотек доступна в сорцах

Date: 2010-01-27 09:02 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Данный диалог как бэ потверждает - удобно то, к чему привык.

Date: 2010-01-27 09:03 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
А лучшая система пакетирования - в Питон

Date: 2010-01-27 09:10 pm (UTC)
From: [identity profile] kurilka.livejournal.com
setuptools или distutils?

Date: 2010-01-27 09:30 pm (UTC)
From: [identity profile] kurilka.livejournal.com
...The end result is that, once you start using setuptools, you’re gradually nudged further and further away from using standard Python APIs and techniques, and more and more into using things that only exist as part of setuptools.
http://www.b-list.org/weblog/2008/dec/14/packaging/

Date: 2010-01-27 09:15 pm (UTC)
From: [identity profile] metaclass.livejournal.com
А как у нее с разными версиями одного пакета?

Date: 2010-01-27 09:49 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Вроде, никак =)))

py2exe спасёт
Edited Date: 2010-01-27 09:49 pm (UTC)

Date: 2010-01-27 10:20 am (UTC)
From: [identity profile] henu3detb.livejournal.com
А всегда так. Сидишь в своем курятнике и думаешь, что кроме куриного помета ничего в мире нету, а если есть, то оно ненужное и вредное для здоровья.

Date: 2010-01-27 09:53 am (UTC)
From: [identity profile] rssh.livejournal.com
Талант у человека на срачи.
Но честно говоря 20 - 100 сущностей и 2 месяца: это жесть адская. Вы естимейшиом маленькие выставляете.

Date: 2010-01-27 09:55 am (UTC)
From: [identity profile] metaclass.livejournal.com
У нас никто никаких estimate никогда не спрашивает.
Все привыкли, что все делается "за один день". Потому что существующая платформа это позволяла, а сейчас нужно ее расширять до кроссплатформенности, веба, использования более современных чем дельфи средств разработки, итд.

Date: 2010-01-27 10:14 am (UTC)
From: [identity profile] rssh.livejournal.com
Ой. У меня на горизонте есть знакомая команда, состоящая из одного гения, фреймворка им разработанного лет 10 назад и пары аникейщиков. Так вот - их клиенты раз в полгода звонят нам и спрашивают - а что делать когда разработчики существующей системы окончательно испарятся (видно там это гений то ли в запой уходит, то ли денег больших хочет, то ли просто ему времени не хватает), сможем ли мы за день им все с нуля написать или хотя-бы существующее поддерживать ? Отвечаю обычно, что вобще-то мы все умрем; но людей жалко.

Date: 2010-01-27 10:19 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, вот от этого мы и хотим уйти :)

Date: 2010-01-27 08:01 pm (UTC)
From: [identity profile] theiced.livejournal.com
и хуй вы куда уйдёте от этого с таким подходом вашего начальства ;]

Date: 2010-01-27 08:04 pm (UTC)
From: [identity profile] metaclass.livejournal.com
"Попытка не пытка!"
Ситуация такая, что пока всех все устраивает. Я впилил на работе сначала svn, потом баг-трекер, основные действующие лица в итоге оказались этим очень довольны, документацию начали вести и следить за порядком.
(deleted comment)

Date: 2010-01-27 10:02 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да, у меня получается примерно так: если с инструментом нельзя начать работать за 1 (ОДИН) день, то я за него даже не смогу взяться, потому что на следующий день(или в этот же) меня нахер отвлекут какой-нибудь фигней и я инструмент настроить не смогу.
Т.е., инструменты, требующие на освоение больше дня, рассматривать бесполезно.
Видимо, это нихрена не правильно, и нужно просто ложить хер на все, выключать телефоны, емыл и жабер и сидеть целенаправленно курить, то что нужно.
А, и на мнение окружающих тоже хер положить, а то оно слишком разновекторное :)

Date: 2010-01-27 08:32 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Да, у меня получается примерно так: если с инструментом нельзя начать работать за 1 (ОДИН) день, то я за него даже не смогу взяться, потому что на следующий день(или в этот же) меня нахер отвлекут какой-нибудь фигней и я инструмент настроить не смогу.
Я этот плач у вас два года уже читаю. Хули делать? Убить себя апстену, или таки научить уже людей уважать твою работу, твоё личное время, твоё здоровье.

Date: 2010-01-27 08:44 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Не, тут дело не только в том, что отвлекают, итд.
Я даже сам не уверен, что имею право тратить время на то, чтобы разобраться с инструментом, который в 90% случаев придется массово допиливать до пригодности к продакшену. У нас, по всем параметрам, получается очень специфическая ниша - с одной стороны, полный GUI и опердень, а с другой - низкоуровневая работа с железом и сетями, да еще и администрирование всего этого. А большинство инструментов рассчитано на что-то менее разнообразное и безумное.

Я вот читаю ваши с dmzlj прения на тему окамла и его либо - мне страшно становится. Я этих слов ВООБЩЕ не слышал, и не уверен что большая часть программистов их тоже слышала. Т.е. это означает только одно: пойди что не так - садись и правь исходники инструмента/либы/фреймворка самостоятельно. Если вообще не делай с нуля. В принципе, с дотнетом то же самое - мы сейчас не можем использовать ключевой контрол так как нам надо, разработчик сидит с отладчиком 2008 студии в исходниках windows forms, ищет способы обхода. Но на дотнете уже большая часть этих вопросов решена, и таки комьюнити, хоть и индусское, но намного больше.

И вот я сомневаюсь в своем праве потратить время на то, чтобы делать себе инструменты, вместо решения текущих задач в лоб на существующих инструментах.

Date: 2010-01-27 08:51 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Я даже сам не уверен, что имею право тратить время на то, чтобы разобраться с инструментом, который в 90% случаев придется массово допиливать до пригодности к продакшену. У нас, по всем параметрам, получается очень специфическая ниша - с одной стороны, полный GUI и опердень, а с другой - низкоуровневая работа с железом и сетями, да еще и администрирование всего этого. А большинство инструментов рассчитано на что-то менее разнообразное и безумное.
Раз запилишь основное, а по мелочи ты любую платформу будешь допиливать.
Где проблема.

И вот я сомневаюсь в своем праве потратить время на то, чтобы делать себе инструменты, вместо решения текущих задач в лоб на существующих инструментах.
Два года уже сомневаешься.
В то время пока у меня руководство мучается "что делать с тупыми жабистами" и "как собрать разваленный третий день билд", я сижу и пишу кодоген. Потому что НАДО.
Потому я свои задачи все уже сделал, и занимаюсь ИНВЕСТИЦИЯМИ в будущее, и ОПТИМИЗИРУЮ РАБОТУ.

Что же, тебе остаётся лишь сомневаться дальше.
Учить не можешь, брать новое сомневаешься, выбить два дня "чтобы никто не трогал" не в состоянии.

Ты прости, но ты сам себе злобный буратино, что всё в такой жопе.
(deleted comment)

Date: 2010-01-28 08:49 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Будущее проекта

Date: 2010-01-27 10:16 am (UTC)
From: [identity profile] mr-st.livejournal.com
Хреновая там аргументация, мягко говоря. Уровня "microsoft говно".

Date: 2010-01-27 10:31 am (UTC)
From: [identity profile] potan.livejournal.com
Какая проблема начать?
Текстовый редактор - и вперед!
Правда, в качестве gui я использую web, который, обычно, другой человек разрабатывает.

Date: 2010-01-27 10:47 am (UTC)
From: [identity profile] metaclass.livejournal.com
Ну вот 99% так и говорят "так я ж использую веб, который делают другие люди".

А теперь я объясню, что нужно чтобы например нам начать новый проект:
1) поставить на работе меркуриал, т.к. svn не совсем подходит под наши условия. Во что то выливается - я уже писал недавно.
2) поднять резервный канал в интернет, т.к. основной падает часто, а доступ к серверу нужен.
3) поставить сервер баз данных и наладить у разработчиков доступ к нему, для создания баз(как раз идет этап разработки структуры базы).
4) поднять сервер приложений - это в случае дотнета IIS с настроенным asp.net приложением(dotnet 3.5)
5) поднять тестовую инфраструктуру для сервера - если по простому, это набор скриптов с wget, для проверки работы сервера.
6) сделать разработчикам доступ к базе конфигурации сервера приложений(база данных с гуи-редактором, из которой генерируется код и файлы конфигурации для сервера приложений)
7) сделать репозиторий в меркуриале со стартовой версией проекта, чтобы у разработчиков можно было сразу оттуда достать и начать работать.

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


Date: 2010-01-27 08:33 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
(3) вполне так раскатывается с нуля.
Под убунтой всё такое гавно ставится одной командой apt-get....
+ конфиги для postgres/etc, с указанием путей куда класть.
Или просто скрипт, что пропишет куда чего надо

Date: 2010-01-27 08:35 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Короче, всё что ты описываешь - под венду делается два дня, не спорю.

За пару недель слепишь аналог в линуксе - а дальше лёгким движением руки превращаешь его в скелетон (см. ниже что это), и все дальнейшие проекты будут развёртываться в виде:

sudo ./make_project project_name

в скриптах - apt-get / прописывание конфигов куда надо / и так далее

Экономь своё время.

(deleted comment)

Date: 2010-01-27 11:29 am (UTC)
From: [identity profile] metaclass.livejournal.com
Ааа, хорошая идея.
"Окунитесь в реальный программерский АД!".
Использовать разрешено любые фреймворки, готовые продукты и прочее, в жюри половина состоит из невмяняемых админов, вторая половина - боящиеся клавиатуры выпускницы кафедры бухучета усть-урюпинского техникума жабоживотноводства.
(deleted comment)

Date: 2010-01-27 02:34 pm (UTC)
From: [identity profile] g-rub.livejournal.com
Нет, все гораздо хуже.
Жюри ее не читает. :)

Date: 2010-01-27 01:41 pm (UTC)
From: [identity profile] udpn.livejournal.com
>> конфигурируемая миддлварь для произвольных баз данных, выставляющая CRUD операции в виде restful сервиса

BULLSHIT!

Date: 2010-01-27 03:32 pm (UTC)
From: (Anonymous)
А ему (Забиватору) и не надо быстро начинать -- он там херачит многолетний проект, инфраструктура настроена, все поднято.
Ясен хер, что в таких условиях в консоли вбить `make build` проще, чем запускать студию и проч., и проч. Хотя также ясно, что аргументация притянута за уши, ибо nant/msbuild никто не отменял

Date: 2010-01-27 03:51 pm (UTC)
From: [identity profile] teewoon.livejournal.com
Время - деньги. Вот и весь аргумент.

Date: 2010-01-27 07:48 pm (UTC)
From: [identity profile] dev-pit.livejournal.com
Последний абзац ох как знаком :)
Только C# мне не надоел :) Красивый язык по-моему получился.

Date: 2010-01-27 07:56 pm (UTC)
From: [identity profile] metaclass.livejournal.com
C# очень хороший язык.
Реализация, архитектура, API высокоуровневых частей фреймворка - страшный ад.
Коллега как-то искал баг вида "программа не реагирует на закрытие главного окна". Оказалось что логика валидации состояния контролов сделана настолько противоестественно, что удаление контрола с основного окна методом Parent = null; калечит состояние этого парента. Внутренности методов которые это выполняют - костыль на костыле и костылем погоняет, сразу очевидно, что авторам идея "посидеть подумать, а потом только писать" совершенно не близка.

Date: 2010-01-28 06:21 am (UTC)
From: [identity profile] dev-pit.livejournal.com
Периодически по мере надобности и интереса посматриваю что там внутри, таки да есть там как хорошие вещи, так и бред какой-то, разные люди пишут.

Date: 2010-01-27 08:29 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
deployment - очень важная и непростая тема.
deployment на моём проекте настраивать с нуля будет... Ну, скажем так, пару недель - пока все зависимости соберёшь, скрипты настроишь, зависимости и конфигурации пропишешь.

Теперь смотрим profit'ы.

* Разобравшись и настроив один раз, ты легко будешь делать все аналогичные проекты

* Легко сделать "скелетон" - генератор проекта, задаёшь название-авторов, запускаешь скрипт - на выходе готовый hello world, что УЖЕ умеет подключаться к базе и так далее.

* Если меня посадить за .NET + база + всё остальное, я тоже буду неделю а то и две сидеть и тупо фтыкать в инструменты - как чо где работает, куда крутить, как пускать тесты, и так далее

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 15th, 2025 04:10 am
Powered by Dreamwidth Studios