Опрос: ФП в Украине ’2013

Что интересного произошло в сфере функционального программирования в Украине за прошедший год?

Кто-нибудь начал (или прекратил) писать на функциональном языке?

Какой-нибудь запомнившийся доклад или событие?

Поменялось ли вообще отношение к ФП у вас или ваших коллег в 2013 году?

Поделитесь.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Количество отказов приходить в EPAM на собеседование в FPF подбирается ко второму десятку. А, ещё Lean вышел, и это хорошо :)

А почему так много отказов?

Потому что много предложений. У меня сложилось впечатление, что каждый новый HR начинает искать человека на эту позицию с нуля и обязательно находит меня — не выясняя, звали ли уже до него.

Кстати, судя по количеству спама приходящего в линкедин (особенно качественного спама), скала, внезапно, вполне сейчас в треде.

Интересно, что изменилось к 2015-му... Кто «страдал фунциональщиной» два года назад, — продолжаете?

Надо будет както собрать мысли в кучу, и написать все что думаю про скалу )

Давай. Я поигрался скалой, — но как-то совсем не впечатлился. Там свой особенный JVM-ад.

Я оказался ленивым б*длом, и на полноценную статью меня не хватило :(

Однако, в двух словах, и очень сумбурно:
-Скала довольно сильно отличаеться от джавы(6,7; 8 — сам не юзал еще). Все те кто говорят что скала это таже джава с сахаром — бейте их в лицо.
-Функциональное программирование в данной ипостасьи, это объявить оператор присваивания инкарнацией дьявола на земле, и использовать любые трюки чтобы обойтись без него.
-Если дело не касаеться перформанса и спецефических либ, то трюков достаточно для большинства задач. Там где всеже нужно какойто бизнес стейт хранить и процессить — хитро решаеться аккой.
-Все эти функциональные штуки, всякие каринги, тайп класы, монады на практике просто еще один набор «паттернов» о том как организовывать ваш код, но в основном на уровне «внутри метода».
-Досконально скалу никто не знает, и кучу всего не используют, но вполне живут с этим.
-На практике, для толкового дева достаточно нескольких месяцев, чтобы он перестал писать джавообразное императивное г-но, и начал органично употреблять функциональный стиль. Наличие кода в проекте который можна копи-пастить/смотреть, а также регулярных код ревью с опытными товарищами — сильно помогают.
-Основной плюс это получаемое удовольствие от работы самим девом.
-Оптионы. Забыл про НаллПоинтеры от слова совсем.
-Паттерн матчинг и кейс класы — великая вещь. :-)
-фучями, промисами, монадами, и акторами многопоточный код пишется в своей массе довольно легко и ненапряжно, проблем с мультипоточностью на мелких задачах невозникало совсем.
-После скалы, от джавы (6,7) — тупо тошнит.
-Для меня самым минусом являеться потеря уверенности в вопросе производительности внутри всей этой функционально-объектной каши. Если чтобы в какойнить коллекции в джаве, оценить производительность операции, мне достаточно было открыть исходник и повтычить минут 20. ТО в скале все гораздо мутнее: большушее непонятное дерево наследований, всякие билдеры, имплиситные преобразования и конверсии, и прочее — приходиться тупо гуглить, и верить авторам на слово :-)
-Наб*длокодить можна и на скале и в фугкциональном стиле, никак не зависит, вообще :-).
-идея не дотягивает по уровню поддержки до джавы, но всеже работать вполне можно. В 15-й обещают дебаг анонимных функций — вообще шастье наступит.
-непонятно-магический сбт, необходимость париться с разными версиями либ скомпиленых разними компиляторами, итд.
-мелочи вроде времени компиляции.
-субъективно, с выходом спарка, вакансий стало больше, и вообще вся эта тема пошла скала==биг дейта и машин лернинг.

а я вот только сравнительно недавно — с полгода где-то — функциональщиной начал страдать немного))

Ну и чо как ваще? Скала? хаскель? Ощущения? Впечатления? Чувства?

посмотрел несколько языков по чуть-чуть (в смысле базовые вещи): Scheme, Haskell, Erlang, Ocaml, SML, F#, а также чуть-чуть язык Hy (лисп для питона — github.com/hylang/hy ) и парочку совсем редкостей типа PureScript’a. Из всего этого меньше всего понравился Ocaml (SML был почему-то более понятен). Scheme, F# - в принципе неплохо, но пока не знаю как с ними быть. Haskell — в целом понравился, но то, что у него по сути своя собственная кухня и что он достаточно сложный для серъезного применения — пока его решил не трогать (хотя например понравился веб-фреймворк Scotty) ну и в плюс, что есть одесское сообщество хаскелистов. Так что хаскелем возможно еще займусь посеръезнее. Эрланг — понравился, но то, что он по большому счету ускоспециализированный пока тоже решил его не трогать (так еще хочу когда-нить глянуть Elixir и Joxa).

Поэтому пока остановился на изучении Clojure. Ну и может быть, если основным языком у меня станет Python (пока я пхпшник, но думаю может перейти на питон) — то тогда поизучаю hy для фана.

P.S. Скалу пока не хочу, ибо читал, что она достаточно сложна, да и боюсь для скалы наверное надо хорошо знать джаву (в случае с кложурой как я понял сильно уж знать джаву не обязательно).

P.S. Скалу пока не хочу, ибо читал, что она достаточно сложна, да и боюсь для скалы наверное надо хорошо знать джаву (в случае с кложурой как я понял сильно уж знать джаву не обязательно).

Это кстати не совсем правда, у нас на проекте работало пару ребят которые не знали джаву совсем. Тем не мение, необходимость воспользоваться джавовской либой, или какой инфраструктурой — всегда может возникнуть.
Это кстати не совсем правда, у нас на проекте работало пару ребят которые не знали джаву совсем.
хорошо, если так)
Правда тут еще такой момент, что смотреть скалу меня пока не тянет. Возможно через какое-то время решусь нее посмотреть, а пока я пас насчет изучения скалы.

Хаскель в СофтСерве. Предметная область — разработка и сопровождение нового функционального ЯП. Почти год. Все отлично.
Все некоммерческие проекты за последний год — тоже на Хаскеле.
По поводу собыйтий и докладов — мы (я и мой коллега) проводим в Днепропетровске серию митапов в духе «детям обо всем на свете». Были тематические митапы по Хаскелю, Скале и Эрлангу. Людям это интересно и мы будем продолжать.

В public domain, пожалуй, есть только вот эта статья: citeseerx.ist.psu.edu/...=10.1.1.90.7370

По платной подписке доступно гораздо больше — dl.acm.org/...FTOKEN=91048774

Классно, но я подразумевал результаты последних лет/года ...

Использование функционального языка для написания нового функционального языка — это ещё один способ продемонстрировать рекурсию в ФП ? ;)

А чем не подошли существующие языки, если не секрет ?

Вас же не смущает то, что компилеры С/С++ писались на нем же?)
Почитайте en.wikipedia.org/wiki/SequenceL — там вкратце есть. Тут кстати кто-то жаловался что ФЯ не многопоточны)

Тут кстати кто-то жаловался что ФЯ не многопоточны)
Называется — гляжу в книгу, вижу фигу.

Если очень коротко — то это простой (даже примитивный) язык с автоматическим распараллеливанием всего на свете для написания встраиваемых библиотек. Существующего, по-моему, подходящего под указанные характеристики, нет.

Немного говнокожу на Erlang в течении последних года полтора . Нравится.

Понравился доклад на IT Jam’e этого года от Максима Сохацкого про Erlang и N20 и опыт его компании в разработке на нем.

второй год пишу just for fun на Clojure

очень понравился доклад Gilad Bracha:
www.infoq.com/...ional-pros-cons

Почти год просидел на Erlang. Писали (и пишем сейчас) платформу для обслуживания социальной функциональности в наших приложениях. Не первый год с Erlang, но опыта набрались много. Рассказали об этом на конфе, слайды можно найти здесь — goo.gl/BYoJx2 (там больше подробностей о предметной области и разработке). В команде 2 человека пишут на Erlang (возможно скоро будет 3). Приложение уже очень большое (!). Разрабатывали как в книжках пишут: быстрый beta-прототип (запущенный и работающий), потом полноценное приложение, production release и суппорт, сейчас очень активно развиваем функционал.

«Почти год» — потому что часть времени пишу на Clojure. Использую на том же проекте, но для другой серверной задачи. Впервый попробовал ClojureScript (с самим Clojure работаю уже более 2х лет). Очень доволен: архитектурой, кодом, скоростью разработки. В текущем году обязательно расскажу и об этом опыте на какой-нибудь из предстоящих конференций.

По мелочам:
* Читал курсы по Erlang, — много, догло и с домашними заданиями. Заинтересованных много. Подумываю в этом году повторить.
* Принял участие в разработке компилятора языка Elm (на Haskell).
* Ровно год назад сделал библиотеку Fn.py «Functional programming in Python: implementation of missing features to enjoy FP» (goo.gl/9f7vXG) — народу вроде как понравилось.
* Прочитал 11 докладов о функциональном программировании и смежных областях (список здесь kachayev.github.io/talks ).
* Изучил Racket, прочитал несколько новых книг по FP.
* Посидел со Scala, делая домашки для курса «Reactive programming» — еще раз убедился, что не хочу возвращаться на Scala (мое личное мнение, не обращайте внимания, если вам нравится).
* Поковырялся с Elixir, попытался немного креативно поэкспериментировать, но дальше креатива не пошел (goo.gl/EnrrF4 ).

Расскажите, чем скала не нравиться.

Повторюсь еще раз, это обычное субъективное «не нравится».

А почему elixir не пошёл ? Как замена erlang-у не рассматриваете ?

Однозначно нет. Слишком много неувязок и противоречивых моментов, как в дизайне, так и в имплементации языка. Может это болезнь молодости и пройдет со временем, но сейчас — твердое нет.

у меня ФП чеслось но после помощи Одерски прошло.

отсыпьте Одерски.
или сцылочку хотяб))

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

Когда-то была хорошая статья о сравнительных перспективах ФЯП. Со словами о том, что у OCaml пожалуй наиболее беспроблемные перспективы.

Лол же, окамлу 20 лет почти, а они до сих пор ниасилили больше чем один процессор работой занимать

Javascript, Python, Ruby вроде как мейнстримовые, они тоже «ниасилили» (если пользоваться вашей терминологией). И что с этого?

Мне пришлось пописать на чистой java, после несколькиз лет scala (в связи с тем что подхватил проект в стартапе после 1-го программиста и менять язык времени не было). Опыт интересный — первые несколько дней вобще ругаешься когда пишешь, чуть ли не беспрерывно, потом засыпаешь, .. потом придумываешь режим который позволяет более или менее производительно что-то делать (но сколько кода писать приходится руками — просто ужас).
Сейчас есть понимание какие модули будут в scala, какие — лучше оставить на java. В чистой java тоже есть своя прелесть, заключающаяся в том, что все прозрачно — можно поймать человека на улице, показать ему где-что находится и в принципе он сразу войдет в курс дела. У меня сейчас в мозгах следующее разделение: ФП — подобное это вертикаль, когда нам надо выжать максимум функциональности на единицу времени и в предметную область все равно надо въезжать, традиционное [Java] — это горизонталь, где в принципе код не важен, нужно построить какую-то стандартную функциональность котороу можно будет двигать и для которой нет готового решения.

Я смотрю в комментариях отписались несколько человек, кто использовал ФП на практике в Украине и им за это даже платили. Интересно, какая была предметная область?

Географический проект связанный с картами и путями. На этом все.

ФП там просто укорачивало некоторые алгоритмы, упрощало асинхронные вычисления, ну и традиционно — приманка.

В этом году я поменял работу на проекты на Scala. Кстати после того как получишь определенный начальный опыт на работе в Украине поментально пропадает вакуум предложений. Множество компаний предлагают проекты, почти раз в неделю.

Значительно больше докладов стало по ФП даже на Java конференциях. Сохраняется впечатление что стоит пойти на Java конференцию, так там будут доклады о Scala, Clojure, NoSQL, DevOps и лишь малый процент собственно о Java-технологиях. Отложив отдельно NoSQL/DevOps/тестирование Clojure/Scala хорошенько отхватили внимания. Не знаю, слишком много или нет

Хоть некоторые только окрывают для себя функциональные подходы, то у тех кто его ранее трогал отношение к ФП стало более взрослым, вместо священной коровы, которая магически решит все проблемы и добавляет +10 к интеллекту, люди все же не забыли что их данные обрабатывают нормальные алгоритмы, а приложение хорошо работает из-за нормальной архитектуры. ФП лишь стало в ряд с другими инструментами, позволяя проще управлять некоторыми процессами, например асинхронные вычисления. Это радует. До этого было какое-то нездоровое отношение

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

Я писал на Common Lisp полгода (хотя CL — это часто больше императивщина, но его часто в ФП записывают), но т.к. еще хотя бы 1-2 лисперов не нашли, то вторую половину года вместо меня писали пяток джавистов-середнячков, и никак не могли зарелизить то, что у них было на лиспе еще в мае. Вывод в том, что суперпродуктивное средство программирования — нифига не решение проблем продуктовых команд (а аутсорса и подавно). Особенно, если остро стоит вопрос а) найма б) саппорта.

Ну да, не хотят принимать риски и париться обучением.
Кстати, интересно, а если запариться с обучением, сильно ли тяжело найти норм работников ?

Думаю, все не очень радужно тут, это надо коммьюнити ростить, и чтобы лучшие люди этого коммьюнити почему-то хотели у тебя работать; чтобы коммерческая разработка пересеклась с таким, это звезды правильно должны встать; гораздо проще просто платить больше / лучше условия (что было в случае моих клиентов, но с натягом и очень хотелось дешевле масштабировать команду).

Кмон, на этом форуме все дартаньяны, самовосхвалением здесь никого не удивишь. А вот когда дело доходит до предметного обсуждения, все эти лисперы и эрлангеры дружно сливают.

вот он, в шляпе и белом пальто (сокр от Пало Альто)

Правильно говорить — полупальто тогда

и шо в штатах — растёт спрос на ФП?

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

помнится, когда появились плюсы, а следом Джава, то туда ломанулись резко, охотно и уверенно.
Если отбросить то что за джавой стоял Сан (ибо они не сильно давили авторитетом),
то джава обещала решение реальных проблем (утечки памяти, переносимость).
Новые ДжВМ-языке не обещают решение проблем, они просто предоставляют альтернативный путь которым программист может попытаться сам решить свои проблемы. Точно так же как и Хаскеллы/ОКамлы/Лиспы которые не обещают что будут решением реальных проблем, а лишь альтернативным инструментом.

Чего вы в самом деле.
Пусть пишут, что тут плохого?
Вот тут: dou.ua/...ic/8889/#408976
предлагают вообще на бумаге писать,
так что ФП еще ОК.

Ну это же деливери юнит менеджер, что с него возьмешь?

ну ладно, ТС спросил — я ответил, какое самовосхваление, ничего хорошего в конце концов для заказчика не вышло, в чем я честно признался

Ну ты же противопоставил себя группе джава девелоперов ссылаясь на суперпродуктивное программирование? Я готов предметно дискутировать, программирование на джава менее продуктивно чем на лиспе только в каких то супервырожденных случаях

В начале осени очень хотелось, но потом как-то прошло :-)

Субъективно скалы стало больше, для остальных языков ситуация както не поменялась.
Кстати, что имхо знаковое, так это то что благодоря Мартину «монада» — больше не тайное знание хаскеллистов, а простой концепт вполне доступный «императивному быдлу».

Я прослушал курсы по erlang и с лета активно пишу на erlang + n2o.

Что-то я не вижу в указанной ссылке поиска работы. Да и какая разница ? n2o достаточно приличный инструмент, что бы им пользоваться. Если автору надоест, я продолжу. Форк c github никто не отменял.

Подписаться на комментарии