Support us

Функциональный прорыв: влияние новой парадигмы уже заметно во многих языках

Оставить комментарий
Функциональный прорыв: влияние новой парадигмы уже заметно во многих языках

10 декабря в Минске в третий раз пройдёт единственная в Беларуси конференция, посвящённая функциональным языкам программирования F(by). В преддверии мероприятия мы попросили опытных спикеров и партнёров мероприятия поделиться своими мыслями о настоящем и будущем функционального программирования.

Читать далее

Иллюстрация: GeekBrains

Как вы оцениваете развитие Clojure, который отметит 10-летие в 2017-м?

Пьер-Ив Ришар, CTO и сооснователь Exoscale (Швейцария):

— За 10 лет Clojure превратилась из нишевого проекта в полноценного «гражданина» JVM и экосистемы Java. Последние нововведения — как, например, spec system — показывают, что Clojure в ближайшие годы будет продолжать своё развитие как смесь прагматизма и продвинутых механизмов разработки.

Никита Прокопов, Senior Software Engineer в Cognician Software (Россия):

— Сейчас в Clojure затишье. Основные, самые мощные задумки реализованы. Дальше только рост и то, что называют adoption.

Малкольм Спаркс, основатель JUXT (Великобритания):

— Clojure всегда был весьма стабильным языком. Я оцениваю успех языка по тому, какая экосистема выстраивается вокруг него. Многие языки выглядят отлично по возможностям, но существует только один способ сказать, как «работает» этот язык — посмотреть на построенные на нём большие системы. За последние 10 лет люди, которые строили свои проекты на Clojure, остаются в целом довольны выбором языка. В новую систему на Clojure достаточно просто подключать новых людей, даже если они не знакомы с языком. Некоторые считают, что нехватка системы типов становится проблемой при масштабировании, но мы не видим в этом большой проблемы, если разработка ведётся с учётом этого ограничения.

Филипп Мейер, автор фреймворка Liberator (Германия):

— Я скептично относился к языку и был уверен, что Clojure достиг своеобразного «плато» в развитии. Но затем Рич Хики и его команда представили clojure.spec. Ядро языка Clojure снова оказалось настолько мощным, что просто невероятные вещи добавляются как библиотеки, в то время как в других языках они потребовали бы фундаментальных изменений. Я уверен, что в ближайшие годы мы увидим ещё больше подобных крутых изменений.

Иллюстрация: Beyond PLM

Сформировалось ли вокруг Clojure профессиональное сообщество?

Пьер-Ив Ришар:

— Комьюнити есть — пока оно не очень большое, но очень сильное, особенно в США. В Восточной и Западной Европе сообщество ещё формируется, и сильное присутствие языка в ключевых компаниях (в случае с Германией и Швейцарией) будет помогать росту интереса к теме.

Никита Прокопов:

— Коммьюнити прекрасное, в него очень легко попасть, оно дружелюбное и помогающее.

Малкольм Спаркс:

— Вокруг Clojure сформировалось глобальное сообщество, и многие его члены находятся в Восточной Европе. Сообщество нельзя назвать большим, но оно крайне мощное и эффективное — в том числе потому, что Clojure хорошо подходит для интеграции работы многих людей, а ещё из-за того, что достаточно ярких профессионалов работают над языком в качестве контрибуторов.

Филипп Мейер:

— Во многих частях США и в Лондоне есть сильное и «здоровое» сообщество, из которого выросли многие важные контрибуторы в язык и библиотеки. В Германии, полагаю, центром Clojure разработки является Берлин, но сообщества есть и в Гамбурге, Мюнхене и других городах. К сожалению, не могу прокомментировать ситуацию с Восточной Европой, так как недостаточно знаком с вашим регионом.
 

Фото: GeekBrains

Когда ожидать прорыва в популярности языков функционального программирования? Какие инструменты разработки Clojure в тренде сейчас и какие будут в ближайшее время?

Пьер-Ив Ришар:

— Влияние функционального программирования можно отслеживать через изменения и дополнения мэйнстрим-языков. Сложно представить, чтобы Haskell, Ocaml или Clojure набрали серьёзный вес, но можно наблюдать за появлением заметного влияния на Java, Javascript и C++, что помогает донести идеи функционального программирования до широкой аудитории

Наилучшим вариантом использования Clojure на данный момент является обработка данных, и так будет продолжаться некоторое время. Как многоцелевой язык, Clojure будет менять направление в зависимости от успеха в конкретных областях. Я надеюсь на усиление экосистемы Clojurescript и снижения планки входа для написания веб-интерфейсов, а также на появление новой низкоуровневой платформы для системного программирования на Clojure.

Никита Прокопов:

—  Прорыв давно случился, на мой взгляд. Мейнстримные языки поглотили идеи функционального программирования и прекрасно себя чувствуют. Из инструментов следуюет упомянать Emacs, который, судя по всему, с нами надолго.

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

Малкольм Спаркс:

— Я считаю, что мы уже видели, как функциональное программирование стало мейнстримом, особенно в последнее время. Это нельзя сравнить с прорывом дамбы — больше похоже на плавное заимствование идей функционального программирования более широким сообществом разработчиков. Как и «настоящие» языки функционального программирования вроде Haskell и Elm становятся популярнее, существующие языки перенимают идеи функционального программирования (JavScript, Java, C# и другие). Я считаю, что мы достигли прорыва в основных идеях функционального программирования. Станут ли популярными продвинутые концепции — покажет время. Лично я в этом сомневаюсь.

Относительно развития Clojure я могу сказать, что ожидаю роста популярности ClojureScript на NodeJS. Люди будут использовать его и для написания скриптов, учитывая сверхбыстрое время запуска. Большой потенциал кроется и в новых идеях использования ClojureScript в браузерах. Всё это может привести к интересным экспериментам с образовательными средами и браузерных IDE. Здесь может по-настоящему «засиять» динамический LISP.

А вот тренды в развитии языка — сложный вопрос. Я думаю, сообщества останутся относительно небольшими и продолжат разработку компактных библиотек. По-моему, распределённость и доступность библиотек, как и сложность языка на данный момент не вызывают вопросов. Я вижу большое будущее в Clojure Script, особенно сейчас, когда большинство инструментальных проблем решено. Следующий год может стать «годом серверного ClojureScript» кто знает?

Фото: The Heideblog

Филипп Мейер:

— Я думаю, что идея функционального программирования имеет фундаментальные преимущества, и многие языки впитают это в себя. Неизменные структуры данных, акцент на функции, а не классы и другие подобные идеи уже достигли Java, хотя для этого и потребовалось некоторое время. Я не жду единовременного «прорыва» — скорее, другие языки начнут поддерживать функциональные идеи. Для большинства новых языков я считаю функциональное программирование основной парадигмой.

Относительно инструментов разработки, я считаю, что cider/nrepl будут развиваться и помогать в дебагинге. На последней clojure/conj Билл Пиль представил Sayid, инструмент для проверки качества кода на Clojure, записывающий актуальное выполнение кода и отлично интегрированный с Emacs. Это освобождает от прописывания выражений print по всему коду для определения ошибок.

Предугадывание трендов — это сложный вопрос. Если бы мне приходилось делать ставку, я бы ставил на то, что Clojure или ClojureScript появятся на «встроенных» устройствах, небольших микроконтроллерах. А может, это просто мои мечты, потому что мне очень хочется избавиться от необходимости пользоваться С и С++, когда я играюсь с ними.

Иван Сухинин, директор Kibo commerce:

— Я думаю, что нельзя говорить о золотой эпохе именно функционального программирования в чистом виде. Скорее, мы видим расцвет функциональных подходов, которые внедряются на многих уровнях, от мейнстримовых языков (старушка Java и уже потертый C#) до подходов в деплойменте (immutable server, service-as-a-function и т.д.). При этом императивное программирование никуда не уходит, и мощность инструментов программиста часто исходит именно из-за грамотного комбинирования императивных и функциональных подходов.

Предположу, что причиной заимствования другими языками идей из функционального программирования кроется в вычислительных мощностях, растущих с каждым годом. Для их более эффективного использования требуются немного иные подходы в программировании, и так совпало, что у функционального программирования есть отлично подходящие концепции. Например, неизменяемые объекты, функции более высокого порядка и прочее. Самое интересное лично для меня — это функциональные подходы в деплойменте. Например, сводишь какой-либо микросервис до функции, возвращающей фьючу (future), и масштабируй себе в бекграунде, сколько хочешь. В вызывающем коде вызов такого микросервиса неотличим от обычной функции, а код может выполняться в serverless окружении и автоматически масштабироваться. В случае многопоточных вычислений неизменяемые данные избавляют от детских ошибок и упрощают понимание.

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

Место солидарности беларусского ИТ-комьюнити

Далучайся!

Читайте также
dev.by рекомендует: онлайн-ивенты сентября
dev.by рекомендует: онлайн-ивенты сентября
dev.by рекомендует: онлайн-ивенты сентября
dev.by рекомендует: онлайн-ивенты второй половины июня
dev.by рекомендует: онлайн-ивенты второй половины июня
dev.by рекомендует: онлайн-ивенты второй половины июня
dev.by рекомендует: ивенты июня
dev.by рекомендует: ивенты июня
dev.by рекомендует: ивенты июня
dev.by рекомендует: ивенты второй половины марта
dev.by рекомендует: ивенты второй половины марта
dev.by рекомендует: ивенты второй половины марта
2 комментария

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.