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

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

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

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

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

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

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

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

[identity profile] metaclass.livejournal.com 2014-11-23 08:57 am (UTC)(link)
Если бы дело ограничивалось качествами языка - имело бы смысл брать скалу или F# (или эрланг для специфических ниш).
Менеджерам и клиентам на технологии не похуй - хорошие выбирают то, что будет более эффективно (в т.ч. и пхп, если на рынке этих пхпистов по рублю пучок, а задача несложная), типичные - "то что всегда использовали".

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

[identity profile] metaclass.livejournal.com 2014-11-23 09:05 am (UTC)(link)
Мне нельзя, я асоциальный псих.

[identity profile] binf.livejournal.com 2014-11-23 09:47 am (UTC)(link)
у F# система типов на дженериках, там всё несколько хуже чем в хаскеле с классами типов. Те же банальные функторы на F# уже никак не представишь, и это приводит к хуевой туче однотипного кода. В scala по идее должно быть ещё круче, но в итоге выродилось в дичающую сложность с ковырянием трейтов и case-классов.