metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-01-22 09:30 pm

Языки программирования? По барабану.

По мотивам срачей с ребе айседом на тему "LISP/Clojure vs Java vs C++ vs Ruby vs Haskell" запишу свои тезисы, чтобы не забыть:

0) Выбор языка программирования - по сараю. Код никто не пишет. 90% работы - это общение с клиентами, писание требований, документирование, объяснение клиентам, почему их требования не имеют смысла, где взять готовый продукт, делающий нужное, и прочая и прочая.
Ход мысли не программиста-фанатика, мыслящего категориями "как и на чем писать", а категориямии руководителя-менеджера "зачем писать, какие ресурсы использовать для этого, какая будет прибыль и какие дальнейшие прибыли или убытки это за собой потянет".

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

2) Основная проблема - это не собственно выполнение работы (по моему, если не лезть в реализацию совсем уж новых концепций программирования, типа "а теперь мы сделаем хаскель, на котором можно писать низкоуровневые драйвера", то все мыслимое и немыслимое уже придумано и сделано, достаточно разобраться, склеить и скомпилировать), а заставить себя взяться за эту работу. Если язык при этом лезет под ноги всяким тупизмом, т.е. в 2012 году ВНЕЗАПНО не работает "искаропки" - отправляется в утиль.

Есть только одно неприятное следствие вышеуказанного: если так думать, заниматься "личными" проектами становится крайне затруднительно. Прибыли от них нет, приобретенное умение программировать уже НЕ НУЖНО, сделать что-то действительно новое и полезное - 90% будет не код, а анализ рынка, реклама, общение с коллегами, клиентами, заказчиками, опен-сорсным комьюнити и прочая.
А писать в стол всякое уныние, коего готового 100500 вариантов - нет вообще никаких стимулов.

Последнее время эта тема напрягает, т.к. я привык постоянно заниматься какими-то "интересными проектами", но постепенно требования к ним в силу моего перфекционизма переросли порог "можно сделать в свободное время не напрягаясь".

[identity profile] flammar.livejournal.com 2012-01-23 08:41 am (UTC)(link)
ява его задавила

[identity profile] denisioru.livejournal.com 2012-01-23 08:43 am (UTC)(link)
ну давай, открой тайну, каким таким способом кастомизировать внешний вид емайла для клиента? При том что из общих данных надо уметь получить короткую SMS, нормальный html-емайл и пару видов квитанций/счетов на оплату в случае инет-магазина.

[identity profile] flammar.livejournal.com 2012-01-23 08:47 am (UTC)(link)
Выбор языка программирования

Если не брать игры.

Java или С для написания нативных библиотек под Java. Остальное - говно, как выясняется потом.

Хаскели-хуяскели с глиспами - если только для слоя бизнес-логики, которая потом булет обрабатываться тоже кой-нидь хернёй, написаной на Java. Но и тут часто лучше какая-нидь своя херня на XML.
Edited 2012-01-23 08:47 (UTC)

[identity profile] metaclass.livejournal.com 2012-01-23 09:01 am (UTC)(link)
Плейнт-текст шаблоны с подстановками? Пишутся не приходя в сознание :)

[identity profile] denisioru.livejournal.com 2012-01-23 09:02 am (UTC)(link)
подсказка: в одном случае надо сделать список номенклатуры-табличку (емайл), в другом не надо (SMS/счет на оплату).

плайнтексты дольше будет пилить, чем написать это же на XSLT.

[identity profile] denisioru.livejournal.com 2012-01-23 09:04 am (UTC)(link)
а, ну и всякие мелочи: форматирование суммы, даты-времени, выделение цветом в зависимости от того включена фича или нет (есть доставка - пишем черным текстом, нет доставки - пишем бледно серым что нет), состояние заказа (оплачен/в работе/в доставке) тоже разным выделяется.

[identity profile] thedeemon.livejournal.com 2012-01-23 09:13 am (UTC)(link)
Задачи разные бывают, тут спешить и валить все в одну кучу не надо.
Для видеокодеков лучше С++. Для компиляторов лучше функциональщина типа того же Хаскеля или Окамла. Для ойфонов c ойпадами Obj-C. И т.д.

[identity profile] serbod.livejournal.com 2012-01-23 09:20 am (UTC)(link)
По основной работе пользую 1С, отличная платформа для задач автоматизации учета. Работать с ней - удовольствие.

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

Для специализированных задач использую стандартный инструмент. Для веба - PHP, JS. Для геймдева - C/C++/ObjC (зависит от платформы). Для админства - bat и bash. Итд..

Для проектирования обычно использую голову, конструктор форм и объектно-классовую модель данных. То есть, сначала строю визуальный макет приложения (формочки, менюшки, кнопочки), а потом "оживляю" его логикой. Проектированием БД не парюсь, использую ORM - структура таблиц БД создается автоматом на основании полей хранимых объектов.

[identity profile] serbod.livejournal.com 2012-01-23 09:27 am (UTC)(link)
Ну, я участвовал в реализации мониторинга движения лекарств с точностью до упаковки, там в принципе ничего сложного, даже без компов, на бумажных бланках реализуется. Штрихкод/артикул + номер партии/серийный номер.

Для кладовщиков вообще элементарно - на коробке есть несколько липких бирок с штрихкодами и прочими данными - достаточно бирку отлепить и вклеить в бланк.

[identity profile] osdm.livejournal.com 2012-01-23 09:44 am (UTC)(link)
Мои тезисы:
1. Не у всех программирование занимает только 10%. На всех моих работах этот процент был существенно больше.
2. Выбор языка и фреймворка мало влияет на скорость решения задач типа "написать алгоритм сортировки", но напрямую влияет на задачи типа: сделай и переделай стопитьсот форм для ввода и редактирования какой-нибудь фигни. Вплоть до шестикратной разницы в скорости.
3. Если у тебя стоит задача типа "сделать стопитьсот формочек" и есть несколько джуньоров/подчиненных для ее решения, то можно позволить себе на месяц зарыться в документацию, лично пообщаться с автором тула, написать свой компонент грида и т.п., если потом на основании написанных тобой костылей и инструкций джуньоры смогут клепать формочки быстро, безболезненно и безошибочно, а ты сможешь отдохнуть.

[identity profile] blackyblack.livejournal.com 2012-01-23 10:11 am (UTC)(link)
Ну. Это если есть кладовщики со сканерами. А если попытаться тупо в лоб реализовать в точности по ТЗ, то веселенькая задачка получается, а.
В реале были нефтяники, которым надо было отслеживать местоположение и нештатные режимы работы какого-то вентиля. Под нештатным режимом понимается падение в океан, съедание акулами, переезд бульдозером... А под отслеживанием понимается информация в реальном времени в любой точке мира о состоянии этого вентиля. Возьметесь реализовать?

[identity profile] serbod.livejournal.com 2012-01-23 10:16 am (UTC)(link)
Если будет карт-бланш, то возьмусь. Навскидку - http://el-project.ucoz.ru/news/cobham_le_plessis_robinson_avarijnyj_peredatchik_elt96_std/2011-10-02-136

[identity profile] blackyblack.livejournal.com 2012-01-23 10:28 am (UTC)(link)
Карт-бланш не будет. Будет ТЗ и смета.
Если не сложно, опишите, как бы вы решали эту задачку и в какой бюджет вы бы уложились.

Про Сарсат почитал - любопытная система. Но где вы возьмете под неё аппаратуру и как обеспечите передачу из-под воды или нефти? Как защитите антенну от случайного или злонамеренного повреждения?

[identity profile] plumqqz.livejournal.com 2012-01-23 10:38 am (UTC)(link)
Смешит самоуверенность ай-тишного оналитега в том, что он за два дня лучше изучил тонкости бизнеса клиента, чем сам клиент за 20 лет работы в этом бизнесе.

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

[identity profile] serbod.livejournal.com 2012-01-23 10:46 am (UTC)(link)
В моем примере выше компьютеры и сканеры есть далеко не везде. Даже там, где они есть, в мониторинге они не участвуют.

Смысл в том, чтобы отследить маршрут лекарства в нештатной ситуации - подделка, порча, подмена. Для этого достаточно знать данные с упаковки (штрихкод и номер партии), а дальше эту партию можно отследить по цепочке складов/дилеров тупо по телефону. Если дилер не зафиксировал у себя номер партии при поступлении/продаже - значит он крайний. =)

[identity profile] flammar.livejournal.com 2012-01-23 10:54 am (UTC)(link)
Ну, к играм надо было бы еще добавить драйвера и кодеки. То, что в андроиде (который есть поздняя и удачная пародия на Windows.NET/Singularity) нативное.

Для ойфонов c ойпадами Obj-C.

Obj-C - это исторически сложившийся PL для ябельщины, ещё с первых мак-осей. Опять-таки, он более "объектно-ориентированно-образен", чем С++.

[identity profile] sergiej.livejournal.com 2012-01-23 10:56 am (UTC)(link)
Клиент вас выгонит с таким "решением" и правильно сделает. Вы предлагаете технологическое решение уровня девятнадцатого века. Есть полно современных решений для такой задачи.
Наверно мы всё-таки друг друга не поняли. Перед тем, чтобы предлагать своё ТЗ, которое не отвечает требованиям заказчика (и, кстати, автоматически выкидывает меня из тендера, я теряю контракт), я предлагаю выяснить что заказчику действительно нужно, что он выкатил такое странное требование.
Может я лучше приведу реальный пример. Заказчик требует "записывать все данные со всех экранов, которые пользователь
с определёнными правами видит в системе.". Ужасно дико, у вендора железа уже доллары в глазах запрыгали от такого счастья. Начинаешь выяснять... оказывается проблема только в том, чтобы выявлять пользователей, которые дёргают личные данные VIP клиентов и продают налево. Что уже совершенно другая задача. Она и прописывается в ТЗ.

[identity profile] sergiej.livejournal.com 2012-01-23 10:57 am (UTC)(link)
Клиент достаточно умный, но уточняющие вопросы не помешают, это верно.

[identity profile] serbod.livejournal.com 2012-01-23 10:59 am (UTC)(link)
Аппаратуру можно найти через гугль или связавшись с представителем данной службы.

Для такого хитрого случая, как подземные/подводные передатчики можно сделать релей - на поверхности будет приемник аварийного сигнала и передатчик сигнала на спутники/GSM. Такая система давно применяется в охранных системах - где-то в недрах объекта спрятаны слабые автономные датчики, которые импульсно сигналят на местный "пульт". Сразу включается сирена и вызов оперативных служб.

В вашем случае нужно мониторить не только аварийный сигнал, но и состояние. Можно сделать по той же схеме: защищенные датчики, контроллер и передатчик на объекте - пульт вахтера - интернет/телефон/спутник.

[identity profile] blackyblack.livejournal.com 2012-01-23 11:18 am (UTC)(link)
По этой системе я погуглил. Аппаратура только в сборе и для интеграции мало пригодна. Сигнал идет на пульт МЧС и с ними согласоваться будет крайне тяжело. На самом деле проще использовать коммерческие спутниковые системы, но опять же остается проблема с антенной.

"В вашем случае нужно мониторить не только аварийный сигнал, но и состояние. Можно сделать по той же схеме: защищенные датчики, контроллер и передатчик на объекте - пульт вахтера - интернет/телефон/спутник."
Была такая идея. Но еще раз, заказчик рассылает свои вентили черт-те куда и вполне может продать 1 штуку. Представляете решение: городить времянку с вахтером, пультом, приёмником, спутниковым терминалом для того, что следить за одним вентилем. Кроме того, вентиль напрочь металлический и в произвольных условиях, то есть внезапно может быть на глубине в 100 метров.

В итоге я просто хотел показать, что при расплывчатых условиях использования можно подписаться на заведомо нереализуемый проект. Ни вы, ни второй собеседник не спросили, сколько собственно стоит сам вентиль, в какую среду и на какую глубину он будет погружен, какие нагрузки должен выдерживать, какое время автономной работы должно обеспечивать устройство и какие предельные температуры. Каждый из этих пунктов легко и непринужденно меняет стоимость проекта на порядок, а сравнение со стоимостью вентиля сразу говорит нам о целесообразности проекта и это именно тот случай, когда клиент не прав, потому что он не заплатит.

[identity profile] blackyblack.livejournal.com 2012-01-23 11:21 am (UTC)(link)
Ну о том и речь. Клиент несет пургу и ему важно об этом сообщить и выдать своё предложение. Если пурга попала в тендер, то пламенный привет тем, кто этот тендер выиграет.

[identity profile] serbod.livejournal.com 2012-01-23 11:23 am (UTC)(link)
Почитал про подводную и подземную связь. Все не так просто. Но наверняка с удаленным объектом есть связь по кабелю. В крайнем случае можно использовать звуковой диапазон. Например, взять пару добротных модемов на 150-300 бод, способных работать в диком шуме и подключить их к мощной звукоусиливающей аппаратуре. Рыбы будут вшоке. =)

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

[identity profile] blackyblack.livejournal.com 2012-01-23 11:27 am (UTC)(link)
"Но наверняка с удаленным объектом есть связь по кабелю."
Нет, кабели запрещено использовать. Потому что искра и пипец всему.

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

"А в экстремальной ситуации можно предусмотреть аварийный передатчик-самописец типа "черный ящик" для облегчения поиска и уточнения картины аварии."
А вот это единственно реализуемый вариант постановки задачи. Но черные ящики - не наш профиль. :)

[identity profile] sergiej.livejournal.com 2012-01-23 11:33 am (UTC)(link)
Это не пурга, он просто не всегда имеет опыт говорить языком IT и пишет как умеет, надо уметь понимать что он имел в виду.

[identity profile] serbod.livejournal.com 2012-01-23 12:14 pm (UTC)(link)
webUI на дельфи? Посмотри IntraWeb =)

Page 4 of 6