Метка «функциональное программирование» - 3

А что такого можно написать на Scala, чего нельзя на Java?
(из разговора с одним моим знакомым другом, человеком и программистом)

The best reason to learn a new programming language is to learn to think differently.
Chad Fowler

Переход с Java (C++, ..) на Scala (Clojure, Haskell, Erlang ..) как повышение абстракции программирования
Хочу рассказать не о простоте конструкций Scala по сравнению с Java и не о том, что в 1 строчку Scala я могу уместить 20 строк Java. А наоборот, копнуть поглубже, уронить устои ООП и посмотреть на реакцию благородной публики.
Читать полностью »

image

Уважаемые разработчики и специалисты по разработке ПО! От лица команды конференции DevCon 2013 я с удовольствием анонсирую в рамках конференции проведение “Школы функционального программирования”.

Не знакомы с функциональным программированием, но всегда хотели набраться знаний? Знакомы, но хотите углубить знания? Знаете хорошо и вам интересен хардкор? Для всех для вас на конференции пройдет школа функционального программирования, в рамках которой, лучшие эксперты страны прочитают ряд лекций по функциональному программированию от самых азов до глубоких методов и приемов.

Цель школы

Познакомить участников конференции с парадигмой функционального программирования и языками функционального программирования (F#, Haskell и другие), показать удобство применения языков ФП для решения практических задач в области параллельного, асинхронного, облачного и веб-программирования и работы с большими объемами распределенных данных.

В рамках Школы функционального программирования участники конференции смогут:

  • Познакомиться с парадигмой функционального программирования и понять, как можно программировать «по другому», без переменных, оператора присваивания и побочных эффектов
  • Оценить преимущества языков программирования (F#, Haskell и других) для решения задач параллельного, асинхронного, облачного и веб-программирования и для обработки больших распределенных данных
  • Поговорить о развитой системе типизации в функциональных языках и об использовании функционального подхода в программировании на C#

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

Успешно сдавшие выпускной экзамен получат отличительные знаки об окончании школы и возможность участвовать в итоговой чайной церемонии.
Читать полностью »

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

Читать полностью »

Изменение кода программы во время ее выполнения на примере Common Lisp

Введение

По моему скромному мнению, Lisp — жемчужина среди языков функционального программирования. Несмотря на то, что это один из первых в истории (1958 год) высокоуровневых языков, он по сей день не перестает удивлять. Мне кажется, он настолько обогнал свое время, что его час еще только готовится прийти.

Так давайте попытаемся написать программу, которую проблематично будет создать на других языках. Как следует из названия статьи, эта программа будет редактировать собственный код по мере своего выполнения. Для ее создания я использую Common Lisp, а точнее его интерпретатор SBCL.
Читать полностью »

БГУ лого
Clojure logo
В этом семестре (осенью 2012) был проведён факультатив по языку Clojure в Белорусском ГУ. В посте будет описан факультатив: причины, программа, задания, результаты, впечатления.
Читать полностью »

Встреча FProg 2012 12 в Петербурге
12 декабря 2012 года в 19:00 в петербургском офисе JetBrains пройдёт встреча по функциональному программированию FProg. В программе встречи представлены доклады о языках Haskell, Kotlin и Clojure:

  • Илья Сергей. Статический анализ и оптимизация кода в GHC
  • Андрей Бреслав. Функции и данные в Kotlin
  • Дмитрий Грошев. Reducers в Clojure

Обязательная запись на встречу для доступа в офис осуществляется на странице встречи через Twitter-аккаунт.
Читать полностью »

В функциональных языках программирования есть возможность генерировать бесконечные последовательности значений (как правило чисел) и оперировать этими последовательностями. Реализуется это функцией, которая, не прерывая свою работу, генерирует значения одно за другим на основе своего внутреннего состояния.
Но, к сожалению, в обычных языках нет возможности «вернуть» значения в место вызова не выходя из функции. Один вызов — один результат.
Генераторы удобно было бы использовать совместно с возможностью Delphi по перечислению значений (GetEnumerator/MoveNext/GetCurrent). В этой статье мы создадим функцию-генератор (может даже бесконечную) и будем использовать ее с таким объектом для перечисления, чтобы всё работало прозрачно без необходимости вникать в реализацию.
Читать полностью »

Критика этой статьи. Ознакомление с ней необходимо для понимания контекста вопроса.

Как и автор исходной статьи, я собираюсь описывать практику, и немного теории, необходимой для осмысления этих самых практических действий.
Читать полностью »

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

Что значит абстрагирование потока управления или «control flow», как выражаются наши заморские друзья? В случае, когда никто не выпендривается, потоком занимаются управляющие конструкции. Иногда этих управляющих конструкций недостаточно и мы дописываем свои, абстрагирующие нужное нам поведение программы. Это просто в языках вроде lisp, ruby или perl, но и в других языках это возможно, например, с помощью функций высшего порядка.Читать полностью »

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js