Ayrat
ну так даже на лиспе дохуя написано
Ayrat
причем сложных КАД систем
Shub
а если уже меряться, кто обо что травмировался в эпоху становления как инженер - ну так у меня и этих историй есть
Shub
поэтому я бы разделял два явления - развитие статической типизации до практически приемлемого уровня и коммодизацию индустрии, сопровождающуюся неизбежным падением уровня среднего работника
Doge
ты это так сказал, будто со статической типизацией архитектура возникает сама и априори.
Я сказал не про то, что легко на статике получить приемлимую архитектуру, а про то, что на ней чуть сложнее сделать совсем лютый треш.
Shub
в смысле, одинаково легко
Ayrat
Не соглашусь. Мне кажется лютый треш зависит не от системы типов, а от юзера
Doge
совершенно одинаково
В статике при этом проще будет разобраться хоть как-то.
Ayrat
Сиречь программиста
Doge
очень, очень оптимистичная позиция
Хотя бы инструментарий более-менее как-то работает.
Vladyslav
а я поддержу
Shub
учти, что в динамике тулинг на порядки лучше, чем в статике, из-за гораздо более развитой рефлексии
Shub
поэтому сломать тулинг для произвольного статического языка - раз плюнуть
Ayrat
В статике при этом проще будет разобраться хоть как-то.
Ну нет. Там всякие интерфейсы, оверрайды, рефлексия туда-сюда. Кодгена еще добавить и полный пиздец
Doge
То есть возможности хотя бы относительно надежно посмотреть все использования и вхождения.
Ayrat
концов не найдёшь в коде
Vladyslav
учти, что в динамике тулинг на порядки лучше, чем в статике, из-за гораздо более развитой рефлексии
это там где у тебя по подсказке иде вываливается все-все кейворды? а кейворд твой главный иснтрумент
Shub
IDE там ничего не умеют, как и средства анализа и рефакторинга.
а ты стало быть считаешь, что рефакторинг в IDE определяется системой типизации?
Vladyslav
писать на строках(кейвордах) это очень круто
Shub
это там где у тебя по подсказке иде вываливается все-все кейворды? а кейворд твой главный иснтрумент
не знаю, что у вас там вываливается, в моих языках обычно не более 15-20 кейвордов, я их наизусть обычно помню
Doge
Vasily
концов не найдёшь в коде
Я так понимаю, ты ща опыт с текущим проектом пытаешься отрефлексировать :)
Shub
Простота его написания определяется системой типов.
на любом достаточно нетривиальном с++\жава\скала проекте ты будешь вьезжать в суть проблемы около 3 месяцев при самых благоприятных обстоятельствах
Shub
Ну достаточно спорное утверждение. Зависит от проекта очень сильно.
ты пытаешься сказать, что тривиальные проекты на статике проще, чем нетривиальные на динамике, что ли?
Doge
Встречал нетривиальные проекты, которые были достаточно нормально написаны, чтобы вьехать можно было за меньшее время.
Shub
ну как же без анекдаты
Shub
сравни проект на рельсах\джанге, самую примитивную вебню с 30-40 API и простеньким пулом воркеров а-ля селери и аналог на жаве\скале
Shub
а потом сравни эту же самую жаву с аналогом на хаскеле
Doge
ну как же без анекдаты
Был бы у нас нормальный способ собрать статистику и её обработать, то споров бы про ЯП и подходы было бы на порядки меньше. А пока вот приходится именно на таких примерах.
Shub
https://arxiv.org/pdf/1901.10220.pdf
Doge
сравни проект на рельсах\джанге, самую примитивную вебню с 30-40 API и простеньким пулом воркеров а-ля селери и аналог на жаве\скале
Зависит от сложности логики внутри. Если простейщие круды, которые идеально на джангу/рельсы ложатся, то это одно. (Да и то, на современном спринге можно очень похоже бахать код)
Doge
https://arxiv.org/pdf/1901.10220.pdf
Его частично опровергли же уже, насколько слышал.
Roman
срач про динамику против статики?
Roman
или про то, где труднее/легче говна поесть?
Shub
Ок, спринг без кусков легаси жаба ее.
это довольно натянутое сравнение. кроме того, я хотел бы увидеть хоть одно приложение без круда, или где круд не составляет 80% функциональности
Romɑn
@vshapenko ты с тайпшейп разобрался в итоге?
Крылатый
Но и тут уже к CRUD переезжаем потихоньку.
Doge
Да и на прошлом месте последняя система была по сути кастомным ETL, а не крудом.
Shub
Я бы показал, но это NDA
извините, но это очень забавно
Doge
опять анекдата?
Ну у тебя там тоже была анекдата. кроме того, я хотел бы увидеть хоть одно приложение без круда, или где круд не составляет 80% функциональности
Roman
имхо при прочих равных, когда у команды есть понимание, как надо разрабатывать софт, и вообще набито достаточно шишек, статика сильно помогает держать разработку управляемой и быстрее фичи клепать с меньшим кол-вом багов.
Doge
у меня хотя бы есть гитхаб, на котором я могу смотреть на более-менее произвольные проекты
Я как-то давно на гитхабе чисто крудов не видел. Но мы может очень в разных частях его обитаем.
Roman
в такой команде типизация играет довольно второстепенную роль
а что играет первостепенную? // Но даже если второстепенную, то все же играет, и в лучшую сторону, так?
Shub
Я как-то давно на гитхабе чисто крудов не видел. Но мы может очень в разных частях его обитаем.
я тебе подскажу: приложения без крудов - это приложения без пользовательского ввода, персистенса и вывода. ищи реализации черных ящиков
Shub
а что играет первостепенную? // Но даже если второстепенную, то все же играет, и в лучшую сторону, так?
хороший вопрос. я бы сказал, количество набитых шишек и умение делать выводы по каждой конкретной шишке. а то есть персонажи с головой как цветная капуста, но выводов не делающих
Крылатый
извините, но это очень забавно
Ну да, звучит так себе
Doge
я тебе подскажу: приложения без крудов - это приложения без пользовательского ввода, персистенса и вывода. ищи реализации черных ящиков
Ну спорно. CRUD по определению всё же подразумевает определенный набор операций с данными и некий способ их хранения.
Shub
насколько помогает статика я ответить затрудняюсь. в основных мейнстрим-языках в проектах движение обычно в сторону ослабления типизации. яркий пример тому спринг, где 50% функционала - это привнесение динамизма в статическую жаву
Крылатый
Хотя.. online.sbis.ru, там читай нет crud
Vasily
@vshapenko ты с тайпшейп разобрался в итоге?
Пока руки особо не дошли его добить
Shub
Ну опыт и умение делать выводы оно как бы и так подразумевается. Пушто без этого вообще говорить не о чем
просто часто неявно подается тезис “статика за вас сделает все выводы, причем неявно”
Shub
мол, если у вас проблемы в проекте на динамике - переходите на статику, станет легче
Romɑn
Пока руки особо не дошли его добить
а, а я тебя снова в основном заменшенил
Shub
Это скорее от отсутствия других инструментов для метапрограммирования в языке.
пример присутствия таких инструментов в другом языке можешь привести?
Romɑn
Пока руки особо не дошли его добить
т.е. а есть код твоего сериализатора? Я не могу понять что я не так делаю с объектами
Roman
мол, если у вас проблемы в проекте на динамике - переходите на статику, станет легче
ну статика все же решает определенные проблемы. Иначе бы никто не заморачивался с ней вообще. Но мозгов статика в голову не добавляет, очевидно
Romɑn
Ну код есть какой-то
можешь показать часть с IShapeMember и с IMemberVisitor? let mkMemberDecoder (shape:IShapeMember<'DeclaringType>) = let memberVisitor = { new IMemberVisitor<'DeclaringType,Decoder<'DeclaringType>> with member __.Visit(shape: ShapeMember<'DeclaringType,'Field>) = mkDecoder<'Field> () failwith "" // shape.Set } shape.Accept( memberVisitor )
Romɑn
у меня явно что-то не так
Vasily
https://gist.github.com/vshapenko/454240c57aa423280e1da8fe8e343769