Сообщение Re: Так, господа, а вот это уже серьезно (Haskell нужен 2) от 21.06.2022 21:51
Изменено 21.06.2022 21:53 cppguard
Re: Так, господа, а вот это уже серьезно (Haskell нужен 2)
Здравствуйте, Grienders, Вы писали:
G>http://www.reddit.com/r/haskell/comments/2useoq/haskell_opportunities_at_facebook/
Я работал в fb с Haskell, проект был связан с автоматизацией модерирования контента. Если упрощённо, то на Haskell был написан механизм, который принимает невероятное количество сигналов и по всяких хитровы...думанным правилам принимает решение о блокировке контента. И я скажу, что это был ад. Сотни (а может и тысячи?) файлов с правилами на 1000+ строчек, никакой поддержки со стороны IDE. Но самое главное — мы ведь в функциональном мире, где всё чисто, да? — ага, только вот без контекста ваши чистые функции бесполезны, и контекст всё равно загружать придётся, только через боль и страдание и интерпретирование всего и вся в голове. Проще говоря, контекст загружается через вызов функций с побочными эффектами, которые меняют состояние контекста, который по сути... глобален. Да, это возврат к Си годов этак восьмидесятых, только под соусом смузикрутости. Ещё один вариант загрузки контекста — через оооооооооооооооооооооооооооооочень большой Map c невероятным уровнем вложенности, сиречь, любый смузихлёбами JSON. Что характерно, до этого момента я уже работал с функциональным языком в большом проекте, только там был Clojure, но картина была один-в-один (и аргументы адептов тоже).
У меня есть подозрение, что Haskell был выбран голубой компанией из-за возможности поймать множество ошибок на этапе компиляции, потому что у Haskell потрясающая система вывода типов, которая действительно позволяет писать безопасный код. Только это не идёт бесплатно из коробки, нужно приучить писать себя такой код. А иначе любой код с Maybe (аналог Optional из Java) превращется в бездумное бросание исключения, если аргумент пустой. То же касается и исключений. Поэтому несмотря на всю типобезопасность у меня очень часто подгорало при отладке очередного исключения с трейсом из сотен строчек. Ну то есть язык сам классный, но не надо строить иллюзий, что в большой корпорации код на нём будет напоминать ванильные, ламповые и идиоматичные структуры из уроков с какого-нибудь learnyousomehaskell, там как и везде кровь, кишки и часы отладки.
P.S. мне очень понравилось работать с фейсбучным дополнением https://engineering.fb.com/2014/06/10/web/open-sourcing-haxl-a-library-for-haskell/, это бы я утащил к себе на новый проект.
G>http://www.reddit.com/r/haskell/comments/2useoq/haskell_opportunities_at_facebook/
Я работал в fb с Haskell, проект был связан с автоматизацией модерирования контента. Если упрощённо, то на Haskell был написан механизм, который принимает невероятное количество сигналов и по всяких хитровы...думанным правилам принимает решение о блокировке контента. И я скажу, что это был ад. Сотни (а может и тысячи?) файлов с правилами на 1000+ строчек, никакой поддержки со стороны IDE. Но самое главное — мы ведь в функциональном мире, где всё чисто, да? — ага, только вот без контекста ваши чистые функции бесполезны, и контекст всё равно загружать придётся, только через боль и страдание и интерпретирование всего и вся в голове. Проще говоря, контекст загружается через вызов функций с побочными эффектами, которые меняют состояние контекста, который по сути... глобален. Да, это возврат к Си годов этак восьмидесятых, только под соусом смузикрутости. Ещё один вариант загрузки контекста — через оооооооооооооооооооооооооооооочень большой Map c невероятным уровнем вложенности, сиречь, любый смузихлёбами JSON. Что характерно, до этого момента я уже работал с функциональным языком в большом проекте, только там был Clojure, но картина была один-в-один (и аргументы адептов тоже).
У меня есть подозрение, что Haskell был выбран голубой компанией из-за возможности поймать множество ошибок на этапе компиляции, потому что у Haskell потрясающая система вывода типов, которая действительно позволяет писать безопасный код. Только это не идёт бесплатно из коробки, нужно приучить писать себя такой код. А иначе любой код с Maybe (аналог Optional из Java) превращется в бездумное бросание исключения, если аргумент пустой. То же касается и исключений. Поэтому несмотря на всю типобезопасность у меня очень часто подгорало при отладке очередного исключения с трейсом из сотен строчек. Ну то есть язык сам классный, но не надо строить иллюзий, что в большой корпорации код на нём будет напоминать ванильные, ламповые и идиоматичные структуры из уроков с какого-нибудь learnyousomehaskell, там как и везде кровь, кишки и часы отладки.
P.S. мне очень понравилось работать с фейсбучным дополнением https://engineering.fb.com/2014/06/10/web/open-sourcing-haxl-a-library-for-haskell/, это бы я утащил к себе на новый проект.
Re: Так, господа, а вот это уже серьезно (Haskell нужен 2)
удалено