tag:blogger.com,1999:blog-654279083390275842.post410988404852400658..comments2024-03-19T12:22:43.654+03:00Comments on Размышлизмы eao197: [life.work] Интересно было бы узнать о дальнейшей судьбе хаскельных проектов в ПроСофтеeao197http://www.blogger.com/profile/17283739752119445290noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-654279083390275842.post-83817044851799708992012-02-25T13:01:43.092+03:002012-02-25T13:01:43.092+03:00@имя:
ну и для pet-проектов громкое слово rationa...@имя:<br /><br /><i>ну и для pet-проектов громкое слово rationale обычно не применяют, но пишут</i><br /><br />Доморощенные проекты как раз и отличаются тем, что в них крайне редко можно встретить хоть что-нибудь из упомянутого тобой. И тому есть объективные причины: времени и ресурсов едва хватает чтобы сделать функционал, а уж чтобы задокументировать что-нибудь... Тут уж звезды должны очень удачно сложиться. Или pet project должен перейти из категории "доморощенного" в категорию "коммерческого".eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-56905898633182349532012-02-25T12:23:14.640+03:002012-02-25T12:23:14.640+03:00ну и для pet-проектов громкое слово rationale обыч...ну и для pet-проектов громкое слово rationale обычно не применяют, но пишут<br /><br />1. чем проект является<br /><br />2. чем проект не является<br /><br />3. еще бывает в faq-е разъясняют "а почему сделанно именно так"<br /><br />у тебя в s-objectizer это могло бы быть объяснение почему агенты (или их классы, я уж нихрена не помню) именуются строками, а не типами, доступными компилятору<br /><br />кстати, в с++11 содержимое литерала доступно компилятору, т.е. можно будет написать типа <br /><br />auto a = "some"_agent;<br /><br />тогда 's', 'o', 'm', 'e' будет доступно в шаблонахимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-5501539568639427252012-02-25T12:05:00.740+03:002012-02-25T12:05:00.740+03:00rationale вовсе не обязан быть объемным -- проект ...rationale вовсе не обязан быть объемным -- проект начинался с какой-то точки -- скажем, аналоги есть, но в одном не устраивает то, а в другом не устраивает это -- вот оно и должно быть в rationale<br /><br />а вообще кто о чем, а я о языках :-) нефиг пользоваться новым языком, если автор не выкатил rationale помимо самого описания языкаимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-84085573109097325352012-02-25T10:31:13.025+03:002012-02-25T10:31:13.025+03:00@имя:
Ну ты сравнил теплое с мягким! Тебе часто п...@имя:<br /><br />Ну ты сравнил теплое с мягким! Тебе часто приходилось видеть, чтобы какой-то pet-project в рамках небольшой компании имел объемный документ под названием "Design Rationale"? Из того, что мне приходилось делать самому и что доводилось видеть, было за счастье иметь хоть какое-то вменяемое описание того, что сделано в рамках pet-project-а. А уж точное и выверенное описание того, что хочет сделать автор, и в каком направлении это будет развиваться... О таком вообще никогда не слышал. Поэтому и сказал о фантастике.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-37825855113339544782012-02-24T23:57:55.095+03:002012-02-24T23:57:55.095+03:00@Евгений Охотников
кому фантастика, а кому нормал...@Евгений Охотников<br /><br />кому фантастика, а кому нормальное явление<br /><br />читаем, например, <a href="http://www.adahome.com/Resources/refs/rat95.html" rel="nofollow">Ada 95 Rationale</a><br /><br />это именно design rationale, а не описание языка -- вот цитатка:<br /><br />As was discussed in II.11, Ada 83 had a serious violation of the contract model because ...... Ada 95 cures this flaw in the contract model by requiring that ...имяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-21195921819780383202012-02-24T17:34:06.917+03:002012-02-24T17:34:06.917+03:00@daapp:
В таком случае, на каком именно языке был...@daapp:<br /><br /><i>В таком случае, на каком именно языке был написан тот или иной софт, имеет третьестепенное значение.</i><br /><br />Вот с этим не согласен. Если проект написан на языке, специалистов по которому найти тяжело, то перспективы его развития весьма туманны. К тому же компания всегда будет под страхом вопроса "А что мы будем делать, когда с трудом найденный специалист по редкому языку Х надумает от нас свалить". Тем более, что эти специалисты весьма резво сваливают.<br /><br />Ну и конкретно о Хаскелле. Как раз вакансия для хаскеллистов в ПроСофте показала, что не хотят достойно платить за Хаскелль, а Хаскеллисты не демонстрируют достаточной степени лояльности, чтобы оставаться и делать начатый ими проект. И таких хаскеллистов даже в Москве, полагаю, нужно очень напряженно искать.<br /><br />Так что, с точки зрения безопасности развития проекта, риски остаться с Хаскеллем в глубокой жопе выше, чем преимущества от разработки надежного софта на более высокоуровневом языке. Тем более, что вопрос степени требуемой надежности здесь еще нужно посмотреть.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-86699393691369985942012-02-24T17:15:21.141+03:002012-02-24T17:15:21.141+03:00@Евгений Охотников
> И почему-то мне казалось,...@Евгений Охотников<br /><br />> И почему-то мне казалось, что в ПроСофте в той команде, где велась разработка на хаскелле именно такая ситуация.<br /><br />В таком случае, на каком именно языке был написан тот или иной софт, имеет третьестепенное значение. Ведь если контора захочет, то сможет получить профит от использования более надёжного инструмента, а не захочет - то клиенты сильно удивятся тому, что новая версия глючней старой (после переписывания глюки прут бурным потоком).daapphttps://www.blogger.com/profile/12401513539241813411noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-6871986835791171672012-02-23T23:30:30.393+03:002012-02-23T23:30:30.393+03:00@имя:
я не понял, насчет какой несовместимой верс...@имя:<br /><br /><i>я не понял, насчет какой несовместимой версии идет речь</i><br /><br />Я вот об этом: <i>2. выкатит мало совместимую новую версию, и забьет на старую</i><br /><br />Если руководство дает разработчику добро и берет всю ответственность на себя, то разработчик уже может не думать о том, какие последствия будут от его деяний. "Я всего лишь солдат, я лишь выполнял приказы".<br /><br /><i>1. помимо описания языка должно быть еще language design rationale</i><br /><br />Ага, ага. Фантастика.<br /><br /><i>2. в language design rationale должна быть прописана цель минизации проблем или вообще отсутствия проблем перехода на новую, в чем-то несовместимую версию, и показано, какими архитектурными особенностями это достигается, и каким практическим образом предполагается к применению</i><br /><br />Совсем уж фантастика.<br /><br />Можно с большей долей вероятности заменить "язык" на "фреймворк" или "тулкит", который некий продвинутый разработчик закладывает в основу какой-либо корпоративной разработки. Это может быть специализированная БД, система принятия решений, сильно оптимизированный графический движок и т.п.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-19161902206530928572012-02-23T20:45:36.725+03:002012-02-23T20:45:36.725+03:00@voidlizard
ок, примем как факт что я не ванга :-...@voidlizard<br /><br />ок, примем как факт что я не ванга :-) и посмотрим на успехи нового стартапа, где работает theszимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-91308065404722263752012-02-23T20:33:07.777+03:002012-02-23T20:33:07.777+03:00и если так, то language design rationale должно бы...и если так, то language design rationale должно быть как раз и объяснено, каким образом архитектура языка предотвращает breaking changesимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-16721669027351357482012-02-23T20:31:01.545+03:002012-02-23T20:31:01.545+03:00я вообще достаточно близок к мнению, что хороший д...я вообще достаточно близок к мнению, что хороший дизайн языка как раз и означает невозможность breaking changesимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-75596680760143177522012-02-23T20:19:12.359+03:002012-02-23T20:19:12.359+03:00@Евгений Охотников
> Следовательно, у разрабо...@Евгений Охотников <br /><br />> Следовательно, у разработчика есть моральное право и забить, и сделать несовместимую версию.<br /><br />я не понял, насчет какой несовместимой версии идет речь<br /><br />если речь идет о несовместимой версии нового языка, то тут должны быть не эфемерные моральные принципы, а конкретные вещи:<br /><br />1. помимо описания языка должно быть еще language design rationale<br /><br />2. в language design rationale должна быть прописана цель минизации проблем или вообще отсутствия проблем перехода на новую, в чем-то несовместимую версию, и показано, какими архитектурными особенностями это достигается, и каким практическим образом предполагается к применениюимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-40753097943826586482012-02-23T09:02:53.195+03:002012-02-23T09:02:53.195+03:00@voidlizard:
Нет никаких проблем с поддержкой чуж...@voidlizard:<br /><br /><i>Нет никаких проблем с поддержкой чужого хаскельного кода кроме патологической нелюбви к хаскеллу.</i><br /><br />Так вот и интересно, сохранится ли такое же мнение в ПроСофте через год-полтора.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-82514668688391667732012-02-23T09:01:14.892+03:002012-02-23T09:01:14.892+03:00@daapp:
Спасибо за развернутый комментарий. Мне з...@daapp:<br /><br />Спасибо за развернутый комментарий. Мне знакома ситуация, когда команда маленькая, знания каждого участника суперважны и уход любого из них переводит проект если не в мертвое, то уж точно в законсервированное состояние. Когда возможен только мелкий баг-фиксинг, но нет речи о развитии.<br /><br />И почему-то мне казалось, что в ПроСофте в той команде, где велась разработка на хаскелле именно такая ситуация.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-18862581424925769192012-02-23T08:57:09.941+03:002012-02-23T08:57:09.941+03:00@имя:
я придерживаюсь мнения -- за все отвечает р...@имя:<br /><br /><i>я придерживаюсь мнения -- за все отвечает руководство</i><br /><br />Спасибо, я понял.<br /><br /><i>риски, связанные с тем, что разработчик</i><br /><br />Исходя из предыдущего утверждения, за это отвечает руководство. Следовательно, у разработчика есть моральное право и забить, и сделать несовместимую версию.eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-57869108351344447172012-02-23T08:45:24.799+03:002012-02-23T08:45:24.799+03:00Предложение по выпиранию достаточно странное, учит...Предложение по выпиранию достаточно странное, учитывая, что иностранный стартап, который ориентируется на хаскелл и набирает удаленных сотрудников в наших краях в том числе появляется не так уж часто, и ВНЕЗАПНО thesz оказался именно в нём, когда он тут появился.voidlizardhttps://www.blogger.com/profile/15380526926137088671noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-53244678716972483162012-02-23T08:33:25.362+03:002012-02-23T08:33:25.362+03:00Нет никаких проблем с поддержкой чужого хаскельног...Нет никаких проблем с поддержкой чужого хаскельного кода кроме патологической нелюбви к хаскеллу. <br /><br />А так --- язык как язык. Ничего экзотического. Это не J и не Agda.voidlizardhttps://www.blogger.com/profile/15380526926137088671noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-17689151649996702752012-02-23T02:45:52.526+03:002012-02-23T02:45:52.526+03:00Дело в том, что с увеличением сложности проекта, с...Дело в том, что с увеличением сложности проекта, сложность самого инструмента, как ключевого фактора, уменьшается, а знания о внутреннем устройстве продукта (как и что он делает) сильно возрастают в цене. В качестве примера могу привести случай из собственной практики: контора производит 2 типа оборудования и поставляет его со своим софтом (без софта оборудование бесполезно), софт делают 2 программиста по одному на каждый тип оборудования,<br />софт не маленький, программист сопровождающий более сложный софт ушёл, но за полгода до конца контракта предупредил фирму об уходе и успел часть знаний передать оставшемуся программисту. Остальные знания о системе программист получал опытным путём и, понятное дело, часть знаний о работе программы просто утеряна. Через полгода пришёл новичёк, он занимается тем софтом, что поменьше, а старожил тем, что побольше, оба изучают новое для себя, но один в слепую, а второй может получить хотя бы часть ответов на свои вопросы от коллеги. Новичку для въезда в проект понадобилось полгода, через год он уже уверенно резал и выкидывал мёртвый код, чтобы хоть как-то понять работу системы в целом, добавлял новый фичи по желанию заказчика и с ужасом представляя себе что будет, если старший программист решит не продлять контракт. В итоге, новичек через 3 года не стал продлять контракт и более мелкая софтина фактически осталась без поддержки и развития и одна линейка оборудования теперь просто груда железа. Старый программист полноценно не может её поддерживать, потому что у него свой код большой и сложный, а та софтина, которую он когда-то делал уже значительно изменилась, и для внесения туда правок ему надо значительно больше времени. А что будет, когда и он решит уйти?<br /><br />Ну и несколько слов об инструментах... Оба софта написаны на Delphi6, качество кода отвратительное (если в коде написано black, то вероятнее всего речь идёт о белом цвете), IDE слабо помогает в нём разобраться и причесать его, GUI благодаря "легкости создания интерфейсов c помощью Delphi" очень трудно модифицировать (нередко бывает необходимо вручную переразместить несколько десятков элементов, чтобы добавить ещё один в нужное место формы), переход на новую версию IDE очень труден из-за наличия сторонних компонентов, которым нет замены, ну и отсутствию какого либо описания того, как должна работать система.<br /><br />Ну и помимо этого при работе с железом надо помнить про устные предания о том, как железо себя ведёт и где легко нарваться на трудновоспроизводимую необъяснимую ошибку. Предания эти передаются от одного программиста к другому и никогда не документируются, потому что времени вот прямо сейчас на это нет, а вот как только, так сразу...<br /><br />И вот после этого всего, хаскель (ну или другой "маргинальный" язык) воспринимается как возможность избавиться хотя бы от части проблем, сэкономить немного времени на сидение в отладчике (а без него понять как работает большая программа не Delphi невозможно) и написать хотя бы небольшое how-to во всей системе в целом и некоторым важным частям, я уж не буду вспоминать, что мало кто из дельфистов прользуется контролем версий - это тоже крайне маргинальный инструмент.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-87997237239083863922012-02-23T02:33:43.405+03:002012-02-23T02:33:43.405+03:00и еще одно <vanga_mode> а в новой компании t...и еще одно <vanga_mode> а в новой компании thesz-a взяли только для того, чтобы посмотреть, что такое хаскель и хаскелисты </vanga_mode>имяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-13985521069406734202012-02-23T02:30:27.441+03:002012-02-23T02:30:27.441+03:00гораздо интереснее обсудить моральную ответственно...гораздо интереснее обсудить моральную ответственно разработчика(-ов) языка... ой, я хотел сказать риски, связанные с тем, что разработчик <br /><br />1. просто забьет на свой язык<br /><br />2. выкатит мало совместимую новую версию, и забьет на старуюимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-82407459945512809652012-02-23T02:27:45.572+03:002012-02-23T02:27:45.572+03:00теперь насчет моральной ответственности -- ничего ...теперь насчет моральной ответственности -- ничего такого вообще нет<br /><br />я придерживаюсь мнения -- за все отвечает руководство <br /><br />если оно не учло каких-то угроз (потеря жизнеспособности проекта из-за ухода ключевого разработчика), то оно и виновато<br /><br /><vanga_mode> но скорее всего там выперли thesz-a вместе с хаскелем; т.е. ему поставили условие "либо находишь команду людей, согласных работать за 70 тыр. на том же языке что и ты, либо переходишь на шарп, либо увольняешься" -- отсюда понятно появление вакансии и ее открытость </vanga_mode>имяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-13983797520653126932012-02-23T02:18:10.303+03:002012-02-23T02:18:10.303+03:00в чем Left прав -- так это в том, что п.1 может вн...в чем Left прав -- так это в том, что п.1 может внезапно перейти в п.3<br /><br />пример: у нас объекты величиной 2-4-6 байт, мы ограничены в памяти, и просто не можем позволить 4-байтовый vtbl ptr у них<br /><br />тогда нам приходится залезать в п.3, организуя свой vtbl ptr (а точнее type tag) из нескольких (скажем, 3) битимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-88932748442895547522012-02-23T02:14:37.458+03:002012-02-23T02:14:37.458+03:00Left зацепил правильный момент, но в целом я с ним...Left зацепил правильный момент, но в целом я с ним не согласен<br /><br />насчет технологий -- обычно есть 3 уровня:<br /><br />1. то, что пишется идиоматично на данном языке; если оно написано неидиоматично -- получается быдлокод<br /><br />пример: юнион с тайптегом вместо иерархии классов в с++ (и другие варианты "ооп на си")<br /><br />2. то, что может быть написано на данном языке с проверкой компилятором, но чересчур сложно -- например, слишком сложные и неочевидные вычисления на шаблонах или на типах в хаскеле<br /><br />3. то, что не может быть написано на данном языке с проверкой компилятором, и приходится расписывать подробно, что можно вызывать после чего, а что нельзя, и т.д.<br /><br />п.3 на современных языках обычно большой, п.2 тоже хватает, п.1 это в общем-то может даже меньше половины случаев<br /><br />так что если п.1 написан неидиоматично (что вряд ли в случае thesz), или в случае п.2 будет abuse языковых технологий (что может быть), то дело в технологияхимяhttps://www.blogger.com/profile/17115793398497396330noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-78727800922446443542012-02-22T23:38:36.084+03:002012-02-22T23:38:36.084+03:00@Left:
Под большим проектом понимается что: объем...@Left:<br /><br />Под большим проектом понимается что: объем кода или количество совместно работающего над кодом людей?eao197https://www.blogger.com/profile/17283739752119445290noreply@blogger.comtag:blogger.com,1999:blog-654279083390275842.post-39473278973378474332012-02-22T17:31:24.470+03:002012-02-22T17:31:24.470+03:00> Но вот чем хороши мейнстримовые технологии --...> Но вот чем хороши мейнстримовые технологии -- больший выбор. Т.е. среди 100 потенциальных кандидатов больше шансов найти того, кто продолжит разработку. Чем среди 3 таких.<br /><br />Дело в том что при достаточно большом проекте - проще взять достаточно толкового человека пусть даже не знакомого с той технологией на которой был написан проект. И такие ситуации - сплошь и рядом, люди начинают изучать проект и параллельно технологию (технологии). И ничего, справляются.Lefthttps://www.blogger.com/profile/17455926726018486961noreply@blogger.com