Думаю, никто не станет спорить, что хороший код — код, который не только исполняет, но и максимально описывает свою задачу (это, конечно, относится в первую очередь к бизнес-логике). Причем описывает ее не деталями алгоритма, а своей сигнатурой (названием, параметрами и возвращаемым типом), сигнатурой вызываемых методов, переменными, которые он использует. В таком случае тело метода можно прочитать сверху вниз, не удерживая в памяти какой-то дополнительный контекст.Читать полностью »
Рубрика «функциональное программирование» - 52
Функциональное программирование в ООП
2012-10-08 в 14:08, admin, рубрики: clean code, ооп, Проектирование и рефакторинг, Совершенный код, функциональное программирование, метки: clean code, ооп, функциональное программированиеПрограммирование в Maxima
2012-10-06 в 17:03, admin, рубрики: maple, mathcad, mathematica, Matlab, maxima, octave, open source, компьютерная алгебра, математика, математический пакет, математическое моделирование, функциональное программирование, метки: maple, mathcad, mathematica, Matlab, maxima, octave, компьютерная алгебра, Лисп, математика, математический пакет, математическое моделирование, функциональное программированиеУрок Maxima
Введение
Maxima — свободная система компьютерный алгебры (Computer algebra system — CAS), основанная на Commmon Lisp. В своих функциональных возможностях она едва уступает другим современным платным CAS, таким как Mathcad, Mathematica, Maple; может проводить аналитические (символьные) вычисления, численные расчеты, строить графики (при помощи gnuplot). Имеется возможность написания скриптов и даже трансляции их в код на Common Lisp с последующей компиляцией. В виду того, что maxima писалась из разрабатывалась программистами lisp, ее синтаксис может показаться несколько запутанным, поскольку язык является сразу и императивным и функциональным. Я попытаюсь разъяснить именно эти моменты и доступно изложить суть функционального подхода, и совсем не буду акцентировать внимания на конкретных математических функциях: их довольно легко освоить самостоятельно. В данной статье рассматривается именно особенности исчисления и синтаксических конструкций maxima.Читать полностью »
Через тернии к Haskell. 2/2
2012-10-03 в 14:53, admin, рубрики: haskell, вынос мозга, монады, Программирование, функциональное программирование, метки: haskell, вынос мозга, монады, функциональное программирование
Вторая часть короткого и жесткого введения в Haskell. С первой можно ознакомиться здесь
Через тернии к Haskel (перевод). 2/2
2012-10-03 в 14:53, admin, рубрики: haskell, вынос мозга, монады, переводы, Программирование, функциональное программирование, метки: haskell, вынос мозга, монады, функциональное программирование
Вторая часть ПЕРЕВОДА короткого и жесткого введения в Haskell. С первой можно ознакомиться здесь
Оригинал здесь
Через тернии к Haskell (перевод). 2/2
2012-10-03 в 14:53, admin, рубрики: haskell, вынос мозга, монады, переводы, Программирование, функциональное программирование, метки: haskell, вынос мозга, монады, функциональное программирование
Вторая часть ПЕРЕВОДА короткого и жесткого введения в Haskell. С первой можно ознакомиться здесь
Оригинал здесь
Через тернии к Haskell. 1/2
2012-10-03 в 0:08, admin, рубрики: haskell, magic goody, Программирование, функциональное программирование
tl;dr: Очень краткое и сжатое введение в Haskell.
Как я подружил Unity3D и F#
2012-09-06 в 21:29, admin, рубрики: .net, game development, Mono, unity3d, Visual Studio, Компиляторы, Программирование, функциональное программирование, метки: .net, c++, game development, Mono, unity3d, Visual Studio, компиляторы, функциональное программирование
В последнее время я стал все больше и больше интересоваться функциональным программированием, и при выборе языка предо мною пал выбор среди двух очень понравившихся мне языков — Haskell и F#.
В F# меня соблазнило то, что его можно компилировать в MSIL сборки, что обеспечивает возможность использования библиотек классов F# в других языках Microsoft .Net, а также то, что он и сам может их использовать. Ко всему прочему, я ещё и начинающий разработчик Unity3D, и мне в голову пришла мысль: если компилируется в MSIL, то может можно использовать F# скрипты в Unity? Гугление дало ответ: по-человечески нельзя. Можно создать библиотеку классов, поставить в проекте ссылки на библиотеку UnityEngine.dll, компилировать и импортировать как ассет, после чего добавлять компоненты Mono-behaviour напрямую из библиотеки, но это не слишком удобно, согласитесь. Однако, пройдя гугл, Reflection и справку по Unity, мне все таки удалось приблизить(но не повторить в точности) работу с F# скриптами внутри редактора к тому виду, в котором производится работа со скриптами на встроенных языках. Подробности — под хабракатом.
Читать полностью »
Комбинаторная библиотека на C#
2012-08-15 в 10:44, admin, рубрики: комбинаторная библиотека, Программирование, производные функций, функциональное программирование, метки: c++, комбинаторная библиотека, производные функций, функциональное программирование Доброго времени суток, читатели!
В своей первой статье я бы хотел рассказать про такую интересную штуку, как комбинáторная библиотека (Combinator library). Все рассуждения постараюсь сделать максимально простыми и понятными.
Проблема
На самом деле не проблема, а попросту желание чего-нибудь интересного написать. А написать я решил систему для нахождения производных функций (статья несколько перекликается со статьями «Динамические мат. функции в C++» и «Вычисление производных с помощью шаблонов на С++», но я все же решил опубликовать её, так как надеюсь пролить свет на проблему несколько с другой стороны, да и все примеры будут на c#, а не на c++).
Собственно желания брать что-нибудь готовое не было никакого, тем более тогда терялся бы смысл всей затеи. И родилась идея, необычная для моего неопытного ума, реализацией которой я и занялся. Чуть позже, случайно прочитав про такой паттерн функционального программирования как «Комбинаторная библиотека», я понял что именно его и реализовал. Итак, что же это такое?
Читать полностью »
Комбинáторная библиотека на C#
2012-08-15 в 10:44, admin, рубрики: комбинаторная библиотека, Программирование, производные функций, функциональное программирование, метки: c++, комбинаторная библиотека, производные функций, функциональное программирование Доброго времени суток, читатели!
В своей первой статье я бы хотел рассказать про такую интересную штуку, как комбинáторная библиотека (Combinator library). Все рассуждения постараюсь сделать максимально простыми и понятными.
Проблема
На самом деле не проблема, а попросту желание чего-нибудь интересного написать. А написать я решил систему для нахождения производных функций (статья несколько перекликается со статьями «Динамические мат. функции в C++» и «Вычисление производных с помощью шаблонов на С++», но я все же решил опубликовать её, так как надеюсь пролить свет на проблему несколько с другой стороны, да и все примеры будут на c#, а не на c++).
Собственно желания брать что-нибудь готовое не было никакого, тем более тогда терялся бы смысл всей затеи. И родилась идея, необычная для моего неопытного ума, реализацией которой я и занялся. Чуть позже, случайно прочитав про такой паттерн функционального программирования как «Комбинаторная библиотека», я понял что именно его и реализовал. Итак, что же это такое?
Читать полностью »