Друзья, продолжаем разбираться в функциональном программировании. Во второй части из этой серии статей вы познакомитесь с основными принципами этой парадигмы разработки и поймёте, как этот подход отличается от объектно-ориентированного или императивного программирования.
Рубрика «функциональное программирование» - 17
Функциональное мышление. Часть 2
2018-08-29 в 8:36, admin, рубрики: .net, F#, fsharp, fsharplangru, microsoft, Блог компании Microsoft, математика, Программирование, функциональное программированиеИспользуем Ramda вместе с Redux
2018-08-26 в 13:47, admin, рубрики: javascript, JS, ramda, React, redux, ФП, функциональное программированиеЭто перевод статьи Using Ramda With Redux, в которой рассказывается о том, как упростить ваш код на основе библиотеки Redux с помощью библиотеки Ramda, позволяющей писать код в функциональном стиле.
P.S. Если вы не знаете, что такое Ramda — приглашаю вас к переводу цикла статей о ней.
На моей текущей работе мы работаем над фронтенд-проектами, использующими React и Redux. Мы также используем библиотеку Ramda для того чтобы эффективно работать с Redux. Данный пост описывает несколько способов, в которых мы использовали Ramda в наших React/Redux приложениях.Читать полностью »
Мои любимые примеры функционального программирования в языке Kotlin
2018-08-17 в 15:27, admin, рубрики: android, collections, devcolibri, functional, java, kotlin, sorting, джава, коллекции, никто не читает теги, Программирование, разработка, сортировка, функциональное программированиеОдной из замечательных особенностей Kotlin является то, что он поддерживает функциональное программирование. Давайте посмотрим и обсудим некоторые простые, но выразительные функции, написанные на языке Kotlin.
Завтра ICFP Contest 2018, ура! (+полезное для участвующих в первый раз)
2018-07-19 в 10:16, admin, рубрики: icfpc, icfpc2017, icfpc2018, Блог компании Контур, контест, ненормальное программирование, Программирование, Спортивное программирование, функциональное программированиеПривет! Завтра в 16:00 (UTC) стартует ICFP Contest 2018 — ежегодное 72-часовое командное соревнование для программистов, посвящённое решению единственной, но интересной и заковыристой задачи.
Картинка, вызывающая ностальгию у участников ICFPC 2017.
Уже участвовали в ICFPC? Тогда вам и объяснять ничего не надо. Вы уже собрали любимую команду или нашли новую, подписались на твиттер, IRC-канал и репозиторий организаторов, поучаствовали в перекличке на Reddit и запланировали хорошенько выспаться перед пятницей.
Ни разу не участвовали? Тогда самое время проделать всё вышеперечисленное, потому что участие в ICFP Contest — это лучшее, что может с вами случиться в ближайшие три дня. Если сомневаетесь, то у меня для вас кое-что есть:
Erlang для IoT
2018-07-16 в 9:13, admin, рубрики: diy или сделай сам, erlang, IoT, iot platform, linkit smart, MediaTek, mips, Интернет вещей, Разработка для интернета вещей, функциональное программирование, эрлангВолна интереса к микроэлектронным устройствам и их взаимодействию между собой для промышленных и бытовых нужд привела к развитию большого количества конструкторов для разработки на базе достаточно мощных SoC (систем на чипе), достаточно миниатюрных относительно микроконтроллерных решений, но уже содержащих в себе полноценную операционную систему. Разработка приложений для таких конструкторов практически не отличается от обычной серверной разработки, за исключением того, что ограничение по ресурсам все равно надо держать в уме.
Безразмерный воздушный шар. Утилитарная магия анализа размерностей
2018-07-05 в 2:04, admin, рубрики: Алгоритмы, анализ размерностей, математика, математическое моделирование, системы типов, теория подобия, функциональное программированиеНа написание этой небольшой заметки меня натолкнула недавно опубликованная на Хабре статья Динамика вертикального полёта летательного аппарата легче воздуха. Захотелось написать комментарий, но он быстро перерос во что-то большее и, как кажется, более полезное.
В оригинальной статье приводится пример расчёта динамики воздушного шара или аэростата в атмосфере. При этом учитываются и сопротивление воздуха и градиенты плотности и температуры атмосферы, так что задача сводится к нетривиальному дифференциальному уравнению, которое благополучно решается численно средствами языка Python. В статье всё хорошо: шар взлетел, остановился, где надо, мы получили и предельную высоту и время подъёма. Потребовалось запустить другой шар, скажем, побольше, нагрузить его поосновательнее, или поменять водород на гелий – не проблема – поменяем параметры в программе и снова всё посчитаем. Программка понятная, линейная, работает, что же можно здесь улучшить, если не усложнять модель?
Можно сделать так, чтобы модель и расчёты стали универсально полезными не для какого-то конкретного шара, а для широкого круга задач. Можно обеспечить оптимальную точность вычислений при численном интегрировании дифференциального уравнения. Можно избавиться от необходимости вручную задавать пределы интегрирования и шаг при расчёте в широком диапазоне параметров. Наконец, можно многое рассказать о динамике полёта нашего шара и без численного решения. И для всего этого служит один давний приём, верный и надёжный, когда-то обязательный при любых расчётах на ЭВМ и до их появления, а сейчас факультативный и часто относимый к магии и искусству – приведение уравнений к безразмерному виду и собственным масштабам. Воспользуюсь задачей о воздухоплавании, как примером и покажу, насколько более осмысленным и изящным становится анализ задачи, при использовании этой техники. А потом объясню почему это может быть важным для программистов, и отчего эта статья попала в хаб «Функциональное программирование».
Функциональное мышление. Часть 1
2018-07-03 в 7:10, admin, рубрики: .net, F#, fsharp, fsharplangru, microsoft, Блог компании Microsoft, математика, Программирование, функциональное программированиеВ этой серии статей вы познакомитесь с основными принципами функционального программирования и поймёте, что значит «мыслить функционально» и как этот подход отличается от объектно-ориентированного или императивного программирования.
Пишем GUI к 1С RAC, или снова о Tcl-Tk
2018-07-02 в 5:54, admin, рубрики: 1c, tcl/tk, Программирование, системное администрирование, функциональное программированиеПо мере вникания в тему работы 1С-овских продуктов в среде linux, обнаружился один недостаток — отсутствие удобного графического мультиплатформенного инструмента для управления кластером серверов 1С. И решено было этот недостаток исправить, путём написания GUI для консольной утилиты rac. Языком для разработки был выбран tcl/tk как, на мой взгляд, наиболее подходящий для этой задачи. И вот, некоторые интересные аспекты решения хочу представить в данном материале.
Читать полностью »
Мышление в стиле Ramda: Заключение
2018-06-24 в 16:48, admin, рубрики: javascript, JS, ramda, функциональное программирование1. Первые шаги
2. Сочетаем функции
3. Частичное применение (каррирование)
4. Декларативное программирование
5. Бесточечная нотация
6. Неизменяемость и объекты
7. Неизменяемость и массивы
8. Линзы
9. Заключение
10. Использование Ramda с Redux
11. Функциональные компоненты с React stateless функциями и Ramda
12. Модульные редюсеры и селекторы
Данный пост завершает серию статей о функциональном программировании под названием "Мышление в стиле Ramda".
В последние восемь постов мы говорили о JavaScript библиотеке Ramda, которая предоставляет функции для работы с JavaScript в функциональном, декларативном и иммтубельном стиле.
В течении этой серии статей, мы узнали, что Ramda имеет несколько основных принципов, которыми движется её API:
- Данные идут последними: почти все из функций принимает параметр с данными последним аргументом
- Каррирование: почти каждая функция в Ramda "каррирована". То есть, вы можете вызвать функцию только с частью неоходимых аргументов, и получить новую функцию, которая будет ожидать оставшиеся аргументы. Как только все аргументы будут предоставлены — оригинальная функция будет вызвана.
Эти два принципи позволяют нам писать очень чистый функциональный код, который объединяет базовые строительные блоки в более мощные операции.Читать полностью »
Мышление в стиле Ramda: Линзы
2018-06-24 в 16:14, admin, рубрики: javascript, JS, ramda, функциональное программирование1. Первые шаги
2. Сочетаем функции
3. Частичное применение (каррирование)
4. Декларативное программирование
5. Бесточечная нотация
6. Неизменяемость и объекты
7. Неизменяемость и массивы
8. Линзы
9. Заключение
10. Использование Ramda с Redux
11. Функциональные компоненты с React stateless функциями и Ramda
12. Модульные редюсеры и селекторы
Данный пост — это восьмая часть серии статей о функциональном программировании под названием "Мышление в стиле Ramda".
В шестой и седьмой частях мы изучили, как читать, обновлять и трансформировать свойства объектов и элементы массивов в декларативном и иммутабельном стиле.
Ramda также предоставляет более общий инструмент для выполнения данных операций, который называется линзами.Читать полностью »