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] binf.livejournal.com 2014-11-23 02:03 pm (UTC)(link)
Ок, так и запишем, шо ФП-велосипед на C# быстрее изобрести чем пользоваться готовым на F#

[identity profile] thesz.livejournal.com 2014-11-23 07:37 pm (UTC)(link)
Подтвержу. Это именно так.

[identity profile] binf.livejournal.com 2014-11-24 03:43 am (UTC)(link)
Попробуйте ещё раз, а то ваше оригинальное мнение похоже на глупость. Начните с примера

[identity profile] thesz.livejournal.com 2014-11-24 04:24 am (UTC)(link)
Я думаю, вы думаете, я не распознал сарказм. Я распознал.

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

[identity profile] binf.livejournal.com 2014-11-24 05:39 am (UTC)(link)
"фи, в языке нет фичи Х" - это ни разу не пример. Пример - это алгоритм, который на C# проще реализуется, чем в F#.

[identity profile] metaclass.livejournal.com 2014-11-24 06:12 am (UTC)(link)
Лучше не алгоритм, а законченный проект :)
Правда, с таким критерием с функциональщиной будет тяжко, потому что успех проекта от языка зависит сильно косвенно - "взяли нормальный язык, на проект сбежалась толпа PhD с 10 лет опыта промышленной разработки и запилили его за месяц".

[identity profile] binf.livejournal.com 2014-11-24 06:33 am (UTC)(link)
Да ну, какой там проект, хотябы кусок алгоритма. Ну и вряд ли щас PhD при наличии выбора будет делать в C# что-то большее, чем хост-проект в решениии, смысла нет. Как я вижу, в С# есть две важных фичи, и обе к языку не относятся :

- интегрированность с "главными" фреймворками

- razor

[identity profile] thesz.livejournal.com 2014-11-24 12:07 pm (UTC)(link)
У F#, когда я последний раз на него смотрел, первая вещь отсутствовала. Плохо он интегрировал и интегрировался.

Смотрел я на него четыре года тому назад. Может, что и поменялось.

[identity profile] binf.livejournal.com 2014-11-24 05:29 pm (UTC)(link)
прошу учесть, что выше я говорил за C#. Ну за четыре года конечно многое изменилось в лучшую сторону в плане интегрированности F#, но он всё ещё на третьем месте. Например, я могу сделать asp net приложение чисто на F#, и клиентскую часть в том числе, но без razor. Но я всё же делаю с хост-проектом на C#, так проще. ReSharper к сожалению тоже мимо, зато появились годные рефакторинги от сообщества

[identity profile] thesz.livejournal.com 2014-11-24 10:44 am (UTC)(link)
Любой алгоритм, требующий рекурсивных данных и/или рекурсивного обхода, реализуется в F# труднее.

Например, я более-менее справился с написанием patricia tree с пропусками на C#. На F# я вообще за это не возьмусь, несмотря на то, что мой алгоритм был полностью функциональным - ни одной модификации данных на месте, всегда создание. У меня там парочка-троечка вспомогательных функций была, которая была бы реализована в F# через let посередине основного алгоритма и вызвала бы у компилятора сообщения о несущественной ошибке.

Сравнение с образцом чуть сложнее в C#. Но не существенно - 2+N строки на сравнение вместо одной.

[identity profile] binf.livejournal.com 2014-11-24 11:55 am (UTC)(link)
У меня там парочка-троечка вспомогательных функций была, которая была бы реализована в F# через let посередине основного алгоритма и вызвала бы у компилятора сообщения о несущественной ошибке

Спасибо, что поделились опытом, но я даже близко не представляю о чем у вас тут речь

Сравнение с образцом чуть сложнее в C#

Паттернматчинг в ЯП без конс-списков и алгебраических типов - это даже не смешно.

[identity profile] thesz.livejournal.com 2014-11-24 12:05 pm (UTC)(link)
"Паттернматчинг в ЯП без..."

http://wiki.tcl.tk/9547

У меня нет с этим проблем в заметном количестве языков. C# не исключение.

Я думаю, различие во взглядах объясняется различием в объёме опыта. В переводе на русский язык: мои носки лучше стоят потому, что я старше.

[identity profile] binf.livejournal.com 2014-11-24 05:52 pm (UTC)(link)
любопытно было бы взглянуть на именно C# реализацию. Я не знаком c tcl и не знаю насколько годные структуры данных он позволяет создавать, но в C# данные откровенно слабы и я не представляю что там можно сматчить без подхода на основе паттерна Visitor. Надеюсь не Visitor вы предлагаете