Dr. Friedrich
Dr. Friedrich
Да во всех.
Dr. Friedrich
Экосистема, инфраструктура
Dr. Friedrich
Библиотек значительно больше, а их качество — выше
Dr. Friedrich
А не как в Кабале, в котором добрая половина годных библиотек — врапперы вокруг сишного или плюсового кода.
Dr. Friedrich
Не стану скрывать, что контроль побочных эффектов и изобретение монадных трансформаторов на каждый чих мне тоже не очень импонирует, и кажется довольно запутанным, в отличие от.
Dr. Friedrich
А, ну и отладка приличная есть.
Dr. Friedrich
В общем, я, без шуток, не вижу ни единого аспекта, в котором Хаскель лучше Скалы. Ну, кроме синтаксиса — do-нотация там таки более прилично сделана.
Doge
Dr. Friedrich
А не нужен оптимизирующий компилятор, оптимизирующий JIT нужен.
Dr. Friedrich
Он и в хозяйстве удобнее
Dr. Friedrich
Ой, ну конечно.
Dr. Friedrich
Graal, вон, ещё лучше стал
Dr. Friedrich
Тут в самой жавамашине не хватает фичей для нормальной специализации кода, но и это скоро завезут, уже вот-вот.
Dr. Friedrich
Но собственно уже сейчас всё окей.
Dr. Friedrich
Про качество компилятора мне сложно судить, потому что код GHC я не читал. А вот рантайм значительно лучше у JVM.
Dr. Friedrich
Прекрасные оптимизированные бинарники, которые готовит GHC, очень любят того… упасть.
Dr. Friedrich
Толи в сборке мусора там что-то не так, толи шо
Dr. Friedrich
Пяток гигов кучу набираешь — и брык
Dr. Friedrich
Ну, это мой личный опыт. Я поверю, что никто больше с этим не сталкивался.
Dr. Friedrich
Но мы периодически используем Хаскель в контестах, и это сплошная боль —
- что при разработке (расставлять бесконечные trace везде, что тупо синтаксически неудобно)
- что при компиляции (ненавижу ошибки, связанные с монадным стеком, которые решаются рандомной расстановкой lift везде)
- что в рантайме (необъяснимые падения под нагрузкой)
Doge
Dr. Friedrich
У Scala ни одной из этих проблем нет, плюс код можно спокойно отлаживать.
Dr. Friedrich
Поставил в редакторе брейкпоинты и поехали
Dr. Friedrich
У F# — аналогично.
Doge
Что раздражает неимоверно
Dr. Friedrich
Напротив, с такими требованиями я ни разу пока не сталкивался.
Dr. Friedrich
Разве что нужно выпиливать везде списки
Dr. Friedrich
Просто ловишь тех, кто юзает списки, лупишь их и выпиливаешь
Doge
Разве что нужно выпиливать везде списки
Да даже стандартные комбинаторы для работы с коллекциями в скале тормозят только так.
Даже не над списками.
Часть проблемы, конечно, в том что по идиотски их задизайнили, но какими-нибудь rewrite rules может и можно было выправить
Dr. Friedrich
Ну чёрт знает, у меня пока что проблем не было. Я слышу про них иногда, но ни разу не видал.
Dr. Friedrich
Хотя дизайн либы с коллекциями в Scala — это разговор отдельный, на неё много ругаются, и сигнатуры методов заставляют волосы дыбом вставать, это да :)
Doge
Dr. Friedrich
Бонарт щас для .NET такое делает, и у него получается внятно.
Doge
И вопрос стоило оно вообще того
Dr. Friedrich
https://github.com/Kirill-Maurin/Sample.Struct/tree/master/Sample.Struct/Enumerables вотэтавот
Dr. Friedrich
И оно таки стоит.
Doge
Dr. Friedrich
В Скале нельзя получить проблемы монадического стека, если ты не ФП-фанатик :)
Dr. Friedrich
Ну я с этим согласен, и поэтому скептически отношусь к языкам, которые меня заставляют это делать.
Ayrat
Мне в скале пока нравится идея. Хорошая иде и плагин для скалы бодрый. Навигация моментальная, даже не быстрая, моментальная
Ayrat
И бряки куда угодно ставятся и работают.
Doge
Dr. Friedrich
Ну или макросами.
Doge
Ну или макросами.
Ну в какую-то из итераций макросистемы она даже неплохо так умеет, вплоть до раскрытия макросов.
Ayrat
Линтер ещё хороший, автоформатер.
Короче годный икспириенс
Ayrat
Фшарп похуже, даже в райдере.
Dr. Friedrich
Зато там sbt :)
Dr. Friedrich
sbt похуже мсбилда :)
Dr. Friedrich
Последний раз на контесте нашли смешную дырку — JVM очень жопошно работает с сертификатами
Ayrat
Я про сбт наслушался что это какое-то говно
Dr. Friedrich
Поэтому у нашего основного девелопера не скачивались депенденси
Dr. Friedrich
Dr. Friedrich
Мавен уж больно фуфельный, если тебе кастомизировать нужно.
Dr. Friedrich
Если не нужно и всё работает по дефолту — тогда ок
Doge
Я про сбт наслушался что это какое-то говно
Это скорее какая-то лавкрафтианская чуждая всему человеческому сущность.
Там внутренняя логика неожиданно нетривиальная для того, что ты обычно хочешь и ожидаешь от системы билда
Dr. Friedrich
Dr. Friedrich
Как там нормально определить таску и добавить её в депенденси к основному билду — это офигеть можно
Ayrat
Регулярно надо делать полный mvn clean install чтобы пропагировать изменения прото файла во все проекты
Dr. Friedrich
https://github.com/codingteam/Keter/blob/168f95c91e6f6af36dc2584a896cd494e36808d1/build.sbt#L32-L47 — ну вот это, например, это серьёзно разве?
Ayrat
А это 10 минут жизни
Dr. Friedrich
(webpack in fullOptJS in Compile).value, ёлы-палы
Dr. Friedrich
Я с этим кодом трахался несколько часов
Dr. Friedrich
Прежде чем он начал ну примерно как-то работать
Dr. Friedrich
x