Давно смотрю в сторону elm, но пока с ним ничего серьёзного не делал. Тут попалась статья "Elm changed my mind about unpopular languages", после прочтения которой снова захотелось что-нибудь написать на этом языке.
В статье Александр Кэмпбелл делится тем, как он начал работать с языком и тем, как он перешёл от этапа отрицания к этапу принятия. Рассказывает про то, почему в elm нет рантайм ошибок и почему больше не считает его языком для хипстеров.
У elm много плюсов: элегантный командный интерфейс, поставляющаяся с платформой утилита для автоматического форматирования кода, обязательное следование semver у пакетов, дебаггер с поддержкой time-travel, отличная производительность, хорошо проработанный интерфейс взаимодействия с JS. Также есть минусы: высокий порог входа для программистов, привыкших работать с императивными языками, нельзя использовать на сервере, недостаёт высокоуровневых возможностей других функциональных языков, например, Haskell.
#elm #fp
https://blog.realkinetic.com/elm-changed-my-mind-about-unpopular-languages-190a23f4a834
В статье Александр Кэмпбелл делится тем, как он начал работать с языком и тем, как он перешёл от этапа отрицания к этапу принятия. Рассказывает про то, почему в elm нет рантайм ошибок и почему больше не считает его языком для хипстеров.
У elm много плюсов: элегантный командный интерфейс, поставляющаяся с платформой утилита для автоматического форматирования кода, обязательное следование semver у пакетов, дебаггер с поддержкой time-travel, отличная производительность, хорошо проработанный интерфейс взаимодействия с JS. Также есть минусы: высокий порог входа для программистов, привыкших работать с императивными языками, нельзя использовать на сервере, недостаёт высокоуровневых возможностей других функциональных языков, например, Haskell.
#elm #fp
https://blog.realkinetic.com/elm-changed-my-mind-about-unpopular-languages-190a23f4a834
Medium
Elm changed my mind about unpopular languages
Have you tried using software from way off the beaten path? Maybe you tried to make software for your graphing calculator and realized that…
Продолжаем чтение статей Акселя Раушмайера (что поделать, они очень хороши). В этот раз попалась статья про оптимизацию хвостовых вызовов (tail call optimization - TCO) в ES2015.
Всё написано по делу и с хорошими примерами. Рассказывается про стек вызовов. Объясняется то, в каких случаях будет происходить оптимизация вызовов и в каких не будет, при этом даются советы про то, как это исправить. Например, некоторые рекурсивные функции без хвостовой оптимизации могут быть преобразованы в рекурсивную функцию с TCO, если воспользоваться дополнительной функцией-хелпером (как в примере с вычислением факториала).
Наличие оптимизации хвостовых вызовов помогает реализовывать рекурсивные алгоритмы более органично. Жаль только, что TCO, похоже, не скоро будет добавлен в v8 (Chromium) и SpiderMonkey (Firefox) из-за проблем с его реализацией. Поддержка TCO пока только есть в Safari.
#js #tco #fp #es2015
http://2ality.com/2015/06/tail-call-optimization.html
Всё написано по делу и с хорошими примерами. Рассказывается про стек вызовов. Объясняется то, в каких случаях будет происходить оптимизация вызовов и в каких не будет, при этом даются советы про то, как это исправить. Например, некоторые рекурсивные функции без хвостовой оптимизации могут быть преобразованы в рекурсивную функцию с TCO, если воспользоваться дополнительной функцией-хелпером (как в примере с вычислением факториала).
Наличие оптимизации хвостовых вызовов помогает реализовывать рекурсивные алгоритмы более органично. Жаль только, что TCO, похоже, не скоро будет добавлен в v8 (Chromium) и SpiderMonkey (Firefox) из-за проблем с его реализацией. Поддержка TCO пока только есть в Safari.
#js #tco #fp #es2015
http://2ality.com/2015/06/tail-call-optimization.html
Посмотрел доклад 2018 года Расса Олсена про функциональное программирование — "Functional Programming in 40 Minutes".
В отличие от статей про ФП, в которых говорится забыть все концепции программирования, Расс говорит о том, что не надо их выкидывать — их надо взять и немного порефакторить. Он на примере показывает как существующие концепции, которые известны всем программистам живут в ФП. Рассказывает про "три столпа" функционального программирования — чистые функции, иммутабельность и работу с сайд эффектами. Работа с сайд эффектами разбирается на примере Clojure — Атомы/Агенты/Акторы.
Название доклада немного кликбейтное, но содержание хорошее. Доклад будет полезен тем, кто только начинает разбираться с ФП. Рекомендую посмотреть, если интересуетесь этой темой.
#talk #fp #clojure
https://www.youtube.com/watch?v=0if71HOyVjY
В отличие от статей про ФП, в которых говорится забыть все концепции программирования, Расс говорит о том, что не надо их выкидывать — их надо взять и немного порефакторить. Он на примере показывает как существующие концепции, которые известны всем программистам живут в ФП. Рассказывает про "три столпа" функционального программирования — чистые функции, иммутабельность и работу с сайд эффектами. Работа с сайд эффектами разбирается на примере Clojure — Атомы/Агенты/Акторы.
Название доклада немного кликбейтное, но содержание хорошее. Доклад будет полезен тем, кто только начинает разбираться с ФП. Рекомендую посмотреть, если интересуетесь этой темой.
#talk #fp #clojure
https://www.youtube.com/watch?v=0if71HOyVjY
YouTube
Functional Programming in 40 Minutes • Russ Olsen • GOTO 2018
This presentation was recorded at GOTO Berlin 2018. #gotocon #gotober
http://gotober.com
Russ Olsen - Author of Getting Clojure and Eloquent Ruby, VP at Cognitect @russolsen3122
ABSTRACT
Functional programming has finally escaped from academia. These days…
http://gotober.com
Russ Olsen - Author of Getting Clojure and Eloquent Ruby, VP at Cognitect @russolsen3122
ABSTRACT
Functional programming has finally escaped from academia. These days…
Вилл Тейлор опубликовал статью про основные понятия лямбда-исчисления на примере JavaScript — "An introduction to Lambda Calculus, explained through JavaScript".
Лямбда-исчисление — это вычислительная модель, в основе которой лежат чистые функции. В статье на примерах показывается, что в ней нет ничего сложного — основные принципы счисления умещаются в несколько правил. Составные части лямбда-исчисления — переменная, абстракция, аппликация. Для вычислений используется β-редукция — по сути поэтапная замена переменных в функции конкретными значениями. В статье ещё рассказывается про каррирование, связанные и свободные переменные, α-эквивалентность, ассоциативность и приоритет.
Статья не сложная. Если интересуетесь функциональным программированием, очень рекомендую почитать.
#js #math #fp
http://willtaylor.blog/an-introduction-to-lambda-calculus-explained-through-javascript/
Лямбда-исчисление — это вычислительная модель, в основе которой лежат чистые функции. В статье на примерах показывается, что в ней нет ничего сложного — основные принципы счисления умещаются в несколько правил. Составные части лямбда-исчисления — переменная, абстракция, аппликация. Для вычислений используется β-редукция — по сути поэтапная замена переменных в функции конкретными значениями. В статье ещё рассказывается про каррирование, связанные и свободные переменные, α-эквивалентность, ассоциативность и приоритет.
Статья не сложная. Если интересуетесь функциональным программированием, очень рекомендую почитать.
#js #math #fp
http://willtaylor.blog/an-introduction-to-lambda-calculus-explained-through-javascript/
www.willtaylor.blog
An introduction to Lambda Calculus, explained through JavaScript
I have recently become very interested in functional programming - using pure functional languages such as Haskell, as well as functional programming in JavaScript. One of the main areas of study that is often cited as significant for functional programmers…
Ричард Фельдман — автор книги "Elm in Action" — рассказал про сдвиг парадигм программирования — "The Next Paradigm Shift in Programming".
За 50 лет существования индустрии программирование эволюционировало от использования goto до идеи отказа от сайд эффектов. Технологии и подходы достигали своего пика и медленно сходили на нет. Ричард рассказывает про то, что на данный момент ООП достигло своего пика и рано или поздно оно будет заменено новыми подходами. Доказательство этому повышенный интерес к функциональному программированию. Практически все современные языки поддерживают фичи из фп. Можно найти книги от программирования в функционально стиле в JavaScript, в C++, Java и т.п. Более того основные фичи ООП (инкапсуляция, наследование, методы) либо признаны неэффективными, либо для них есть альтернативы (модули, композиция, функции первого класса).
Очень интересный доклад. Рекомендую посмотреть.
#talk #fp #history
https://www.youtube.com/watch?v=6YbK8o9rZfI
За 50 лет существования индустрии программирование эволюционировало от использования goto до идеи отказа от сайд эффектов. Технологии и подходы достигали своего пика и медленно сходили на нет. Ричард рассказывает про то, что на данный момент ООП достигло своего пика и рано или поздно оно будет заменено новыми подходами. Доказательство этому повышенный интерес к функциональному программированию. Практически все современные языки поддерживают фичи из фп. Можно найти книги от программирования в функционально стиле в JavaScript, в C++, Java и т.п. Более того основные фичи ООП (инкапсуляция, наследование, методы) либо признаны неэффективными, либо для них есть альтернативы (модули, композиция, функции первого класса).
Очень интересный доклад. Рекомендую посмотреть.
#talk #fp #history
https://www.youtube.com/watch?v=6YbK8o9rZfI
YouTube
Richard Feldman — The Next Paradigm Shift in Programming
Update: ETE is back for 2021! Get your tickets for $89 at https://2021.phillyemergingtech.com.
Originally, GOTO statements were widespread. Then structured and procedural programming appeared, and now that's the normal way of doing conditionals, and the…
Originally, GOTO statements were widespread. Then structured and procedural programming appeared, and now that's the normal way of doing conditionals, and the…