Functional programming matters

During the reading of Scala in action, I found the reference link quoted by the author(Nilanjan Raychaudhuri), which is an introductionary article about functional programming. I’ve learned that functional programming is minority compared to object oriented programming, which means it is not popular, but being a curious programmer, I am eager to know for a long time why it has its attractiveness, where it is being used and how it can be used to solve real world problems.

The first programming language I know about functional programming is LISP. When I read the book Hacker and Painter, Paul Graham mentioned the power of LISP programming language and it amazed me. But I am a regular guy who learned Java as my mother tongue in programming world, so I am sort of afraid to read bunch of parentheses here and there. After some digging, I found out that Clojure and Haskell are pure functional programming languages, but I still don’t feel comfortable because I love to learn something that have good adoption by some great companies, :). Scala emerged at this point and I believe it’s a good starting point to learn functional programming for the developers who have strong Java background. At a further step, Haskell or ML may be a choice and it depends on my interest then.

Practice is very important, however, it should be directed by theory, this is very true for most of application science, so it is for computer science. With good theory or mindset, we can have a whole picture avoiding lose correct sight moving forward. Well, with solid practice, we can build up our capability and experience gradually and give feedback to our thoughts. They are complimentary.

For practice part, I am reading some books and taking some courses in Scala. And I will study some typical frameworks or libraris like Akka, Play! and twitter’s Spark later in the future. If I got some time and energy, I may do some experimental projects and discuss Scala with my friends who love new languages. That’s a rough plan that may change along with my learning course, but the key point is to master the language and its typical application.

For theory part, I would suggest you read the reference recommended by Nilanjan as well. After the first glance, I believe it is a good article and after finish reading, I give it a five star for beginners. The part I most like is the examples and the rationale step by step. So here I’d like to give the link and you can explore the magic of functional programming.

http://www.defmacro.org/ramblings/fp.html

And another interesting reading I recently read is the letter Dijkstra wrote to the Budget Council of The University of Texas, in which he mentioned some good points why learning some FP is good for freshman,

http://chrisdone.com/posts/dijkstra-haskell-java

So happy reading and I will return to functional programming details in next FP post.