metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-11-22 09:12 pm

fby

Посетил таки мероприятие элитных функциональщиков http://fby.by/

Достаточно неплохо, правда, под конец я утомился и доклад [livejournal.com profile] xeno_by про Dotty, независимую от компилятора модель языка, метапрограммирование и сохранение AST/метаданных вместе с бинарниками либ слушал в сумеречном состоянии сознания.

Еще не успел послушать целиком [livejournal.com profile] levgem, т.к. был на другом потоке, слушал про F#. Вообще, его доклад полезен тем, что это про законченный большой продающийся продукт, в то время, как другие рассказывали больше про общие фичи языка или про некоторые частные идеи.

Было, в целом, достаточно много скалы и F#, наконец-то я посмотрел на новые F# с провайдерами типов (я до сих пор по причине использования 2010 студии сижу на 2.0 версии).

[livejournal.com profile] tonsky рассказывал про критерии полезности языков программирования в целом. Упомянул недостаток clojure - слабую масштабируемость разработки, все-таки это язык для мелких команд вплоть до одного человека.

Еще меня очень пугает популярность шизофренистических тест-фреймворков для скалы и F#, где тест-кейсы пишутся в виде псевдо-английских фраз.

В целом, что немного напрягает - сильный разнобой в функциональных языках и нет явно видимого фаворита - во всех языках реализуются/портируются друг от друга похожие фичи, поддержка инструментов, насколько я понял, на данный момент лучше всего в F# - там на конференции прямо в vs всякие приколы типа "запустим тайп-провайдер и в репле получаем его структуру" демонстрировали, метапрограммирование живое в скале с кложей, асинхронность хорошо в хаскеле с эрлангами

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

PS: Кстати, главное что мне понравилось на конференции: сэндвичи с мясом и травой, в чем-то вроде лавашей.
Я первый раз присутствую на мероприятии, где дают нормальную еду для мозга, т.е. мясо, трава и чай/кофе, а не только сладости и печенье. Впрочем, чай я с собой в термосе притащил, т.к. предпочитаю пить достаточно крепкий зеленый с добавкой эхинацеи :)

[identity profile] naartir.livejournal.com 2014-11-22 07:25 pm (UTC)(link)
> Упомянул недостаток clojure - слабую масштабируемость разработки, все-таки это язык для мелких команд вплоть до одного человека.

А можно раскрыть тему для не видевших clojure в продакшне?

[identity profile] metaclass.livejournal.com 2014-11-22 07:35 pm (UTC)(link)
Основные проблемы, с моей колокольни:

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

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

Т.е. в кложури нет моральных ограничений или best practices которые позволили бы одновременно работать эффективно мне и при этом не делать код непонятным другим.
wizzard: (Default)

[personal profile] wizzard 2014-11-22 08:13 pm (UTC)(link)
> сильный разнобой в функциональных языках и нет явно видимого фаворита
хм, а в нефункциональных разве есть?

[identity profile] metaclass.livejournal.com 2014-11-22 08:15 pm (UTC)(link)
Ну в нефункциональных можно выбирать жабу или C#, не ошибешься. Если силен духом - C с ембедом.

[identity profile] vit-r.livejournal.com 2014-11-22 08:32 pm (UTC)(link)
В целом, что немного напрягает - сильный разнобой в функциональных языках и нет явно видимого фаворита

Ничего. Скоро выберут самый-самый плохой и сделают главным.

"как выжить программистам в условиях, когда важны продажи, а не технологии".

:-D

[identity profile] metaclass.livejournal.com 2014-11-22 08:37 pm (UTC)(link)
Так и плохой выбрать невозможно.
Надо просить [livejournal.com profile] xeno_by сделать скалу хуже, что ле :)
В смысле, ударится в продажи с концами, чтобы технологические прорывы вопреки делались.

Впрочем, если микрософт продвинет дотнет на линуксы, фаворитами будет C# и F# и это очень неплохой варинат.

[identity profile] vit-r.livejournal.com 2014-11-22 08:46 pm (UTC)(link)
Что бы кто бы ни продвигал, внутри будет код из Бангалора

[identity profile] cross-join.livejournal.com 2014-11-22 09:07 pm (UTC)(link)
Да, не хватает внятных статей типа вот задача, решаем её на дельфи, вот код кусками, теперь куски на кложуре, смотрете, как все стало круто и просто.
Заодно выяснятся классы задач, где имеет смысл подумать о декларативных языках.
В принципе, с этого вообще надо начинать.
GUI или имитационное моделирование на функциональщине - это какой-то нонсенс.

[identity profile] metaclass.livejournal.com 2014-11-22 09:15 pm (UTC)(link)
GUI на декларативных языках вполне нормально. Вообще для GUI нужно метапрограммирование, а оно+более-менее толковые GUI тулкиты только в скале и clojure есть. А жабогуй греховен и тормозит, не желаем мы его. Все остальное - разного уровня недоделанности и неработоспособности под виндами, потому что люди в основном веб всякий делают или вообще никаких продуктов не делают, а только скрипты запускают.

Насчет имитационного ничего не могу сказать, не знаю, чо там такого особенного.

[identity profile] cross-join.livejournal.com 2014-11-22 09:20 pm (UTC)(link)
Декларативный подход давно используется для описаний форм. Описания в терминах гуйевых объектов. Но это "мертвый гуй". Чтобы его оживить, нужен код.
В имитационном моделировании объекты живут своей жизнью и обмениваются сообщениями. Симула-67 - ООП в полный рост, хотя уже был Лисп.

[identity profile] veter-r-r.livejournal.com 2014-11-22 09:30 pm (UTC)(link)
А какие есть преимущества кроме "аутичный гуру будет пилить что-то тихонько на кложури и не убежит на гоа раньше времени"?

[identity profile] veter-r-r.livejournal.com 2014-11-22 09:32 pm (UTC)(link)
Просто те кто пишет на дельфи, осилить куски на кложуре не могут в принципе.
А те, кто осилил кложурь, давно забыли что существует какое-то там дельфи.

Редкие исключения типа автора этого жж не выступают на публике в принципе ))

[identity profile] metaclass.livejournal.com 2014-11-22 09:33 pm (UTC)(link)
Для живого гуя можно FRP использовать. Хотя я пока реально используемых в продакшене либ не видел, эксперименты все.

А ну для объектов и сообщений есть эрланг и акторы в скале.

[identity profile] messirvoland.livejournal.com 2014-11-22 09:36 pm (UTC)(link)
> В целом, что немного напрягает - сильный разнобой в функциональных языках и нет явно видимого фаворита
Как мне не нравиться Scala, но она. MS стек без серьезных причин никто брать не будет. У Erlang своя ниша и ему там хорошо. Haskell для общего развития и в продакшен тянуть - безумие. Остается JVM. Clojure слишком динамическая и там скобочки. Вот методом исключения остается Scala. Тем более хайп вокруг нее сформировал не плохое комьюнити, есть уже много интересных фреймворков, типа того же play, akka.

[identity profile] metaclass.livejournal.com 2014-11-22 09:41 pm (UTC)(link)
У хаскеля, скалы и F# - более приличная система типов, на которой можно без извращений предметку моделировать и более читабельным образом описывать. Собственно, даже если пользоваться только SQL и жабой или C# - зная нормальные системы типов, гораздо проще делать архитектуру софта и не допускать глупых ошибок.

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

У эрланга - заточенность под кластера, битоебские протоколы и восстановление при ошибках.

[identity profile] metaclass.livejournal.com 2014-11-22 09:44 pm (UTC)(link)
Вот я так же думал, но скала уверенным путем идет в тот же ад, что С++.
Кроме того, sbt не работает, maven - содомия, idea плагины не работают, eclipse - грех.

Язык, в котором надо несколько дней заниматься настройкой инструментов, негуманен. Хотя для любителей БДСМ, которыми переполнено IT наверно нормально :)

[identity profile] cross-join.livejournal.com 2014-11-22 09:49 pm (UTC)(link)
Понятно, что в объектных языках есть элементы функциональщины, а в функциональных - элементы ООП.
Вопрос именно в подходе.
По-моему, писать ООП программы на скале - не самое разумное занятие.

[identity profile] metaclass.livejournal.com 2014-11-22 09:52 pm (UTC)(link)
Скала изначально сделана для скрещивания OOP и FP подходов. Причем OOP там еще побольше чем FP, там больше упор на нетривиальный вывод типов, нежели на функции высшего порядка.

[identity profile] cross-join.livejournal.com 2014-11-22 09:57 pm (UTC)(link)
Вот хотелось бы посмотреть на примеры в стиле "чистый ООП", "ООП с функциональщиной", "чистая функциональщина". Чтобы оценить преимущества не самых высших порядков.

[identity profile] love5an.livejournal.com 2014-11-22 10:15 pm (UTC)(link)
я из C# сделал что-то функциональное, с декларативностью и куртизанками. Хотя сфера - опердень. Единственный минус - среднестатистические разработчики на C# плохо понимают что происходит.

[identity profile] veter-r-r.livejournal.com 2014-11-22 10:20 pm (UTC)(link)
Ребе, менеджеру или тем более клиенту пофиг на систему типов, ей-богу.
Меньше ошибок это ОК, только это крайне сложно подтверждать, ибо вряд ли есть достоверная статистика набранная на сравнимых проектах.

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

Эрланг ОК, но например, был у меня проект, в котором отлично внедрили RabbitMQ заточив под кластера, восстановление при ошибках, распределенную очередь и т.д. при этом не написав ни строчки на собственно эрланге. Просто взяли готовый продукт, который уже использует заточенность эрланга, а предметная часть решалась уже на серверах по старинке.

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

[identity profile] jakobz.livejournal.com 2014-11-23 01:07 am (UTC)(link)
То что GUI сейчас в основном лепят на ООП - первая причина того, что его на сегодняшний день можно UI сделать либо очень херовым, либо на две страницы и три кнопки, либо очень дорогим.

ООП-подход к UI - не скейлится (как и всё ООП). Сложность растёт экспоненциально от количества полей и кнопок на форме, и количества cross-cutting фич типа валидации, undo, optimistic concurrency, и подобного.

Частично проблемы пока решаются метапрограммированием (который в ФП обычно лучше), датабиндингом (который кастрированные линзы/FRP), и всякими MVVM (которые про то что стейт UI надо держать отдельно и желательно immutable).

Короче из UI осталось выкинуть оставшуюся половину императивщины и ООП, и будет все хорошо.

[identity profile] 4s999cz.livejournal.com 2014-11-23 04:08 am (UTC)(link)
ты просто гений, тобой все гордятся!

[identity profile] 4s999cz.livejournal.com 2014-11-23 04:12 am (UTC)(link)
метакласс, тебе нужно было в шоу-бизнес идти. ты страдаешь из-за неправильной профессии.
прыгал бы на сцене, пел песенки. то шо надо.

[identity profile] thedeemon.livejournal.com 2014-11-23 05:11 am (UTC)(link)
>В имитационном моделировании объекты живут своей жизнью и обмениваются сообщениями.

Это ж Erlang!
Его почему-то на ФП конференциях продвигают, хотя это самый ОО язык.

Page 1 of 4