This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
fp:home [2014/10/25 12:13] djo Added external link to Scalaz presentation |
fp:home [2017/07/12 21:41] djo [Lisps, more generally] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Functional Programming ====== | + | ====== Clojure and Scala ====== |
- | Why Functional Programming (FP)? | + | At the time I originally created this page, functional programming on the JVM was a controversial idea. Today, Scala and Clojure are de-facto standards for large scale distributed systems development and in my current job we use both. Here I index blogs and links on these topics. |
- | I do not oppose object oriented programming (and think that OO can coexist nicely with FP), rather, I believe that a style of programming that embraces the advantages of both OO and FP can realize significant benefits. For example: | + | ===== Clojure(script) ===== |
- | * Easier tests with fewer fixtures and mocks, that refactor cleanly with the production code | + | * [[http://hoplon.io|Hoplon]], the most innovative web programming environment I've seen in a long time |
- | * More natural parallelism. | + | * [[https://coconutpalm.github.io/clj-boot/|Boot Boot]], a batteries-included setup for easy library creation with Boot: |
- | * Using a functional architecture, often parallelism can be added automatically as a feature of the library, without requiring synchronization or locking. | + | * Including live compile/test followed by hot code reload, |
- | * With multiple cores being standard equipment on today's computers, having natural parallelism that you just switch on is a huge advantage. | + | * Markdown to documentation with live browser reload, |
+ | * and (optional) upload to gh-pages and Clojars | ||
+ | * **Perun** - static web sites using Clojure | ||
+ | * [[http://deraen.github.io/hello-world/|Introductory blog]] | ||
+ | * [[http://perun.io|Home page]] | ||
+ | * [[https://github.com/Deraen/deraen.github.io/blob/blog/build.boot|Example web site / blog using Perun]] | ||
- | Put quite simply, a functional style of programming can be achieved in any programming language, from //Java// to //Scala//--yet it is not the usual style that is practiced. | + | ===== Lisps, more generally ===== |
- | In this space, I'll document my explorations into functional programming. Most of the code here will be in either Java or Scala, though currently I'm using Java most of the time. | + | *[[http://practicaltypography.com/why-racket-why-lisp.html|Why Racket]] is an excellent blog describing benefits that the Lisp family of languages generally brings to programming. |
+ | *[[http://www.lispcast.com/idea-of-lisp|The Idea of Lisp]] provides useful context and history explaining why Lisp has endured and remains useful today. | ||
+ | ===== Scala ===== | ||
- | In addition, the "Monad" design pattern is a significant pattern in functional code. An ongoing theme is an attempt to demystify what a Monad is, where every experienced programmer has already used monads (often without realizing it), and why this is useful. | + | * http://noelmarkham.github.io/scalaz-scala.io -- Excellent Scalaz presentation |
- | + | ===== Java and FP (pre Java-8) ===== | |
- | + | ||
- | In this space I index my writings on functional programming, and particularly on Monads. | + | |
* [[blog:improvements_on_null_safety_for_java_and_eclipse|An Option Monad for Java]] | * [[blog:improvements_on_null_safety_for_java_and_eclipse|An Option Monad for Java]] | ||
Line 25: | Line 30: | ||
* [[blog:java_and_scala_monad_tutorials|A list of Scala and Java monad tutorials]] | * [[blog:java_and_scala_monad_tutorials|A list of Scala and Java monad tutorials]] | ||
- | ===== External links ===== | ||
- | * http://noelmarkham.github.io/scalaz-scala.io -- Excellent Scalaz presentation |