Friday, March 19, 2010

The functional programming journey

For the last year and half I've been playing around with F#. Accomplishing little task like simple File I/O, Winform UI Development, standard calculations, etc. Doing all of this because I have a F# book and a few web resources. So I figured that I would finally break down and do what the experts say I should do... which is to learn another functional programming language. A few weeks ago I went looking on I Tunes-U for some functional programming lectures. To my surprise I found quite a bit of lectures. UC Berkley & Stanford lectures stood out the most so I tried the Stanford lectures. Programming Paradigms by Jerry Cain is a great series of lectures covering C/C++/Java/LISP/Python/networking and more. I chose to jump into the LISP section of the series. After reviewing the lectures it gave me a fresh perspective on F#, and suddenly F# made a lot more sense in my head. Now I'm able to do thing like interface with WPF from F#, I wrote my own F# library and leveraged it in a C# project I'm working on, and the more I learn about core functional fundamentals the more I learn about F#. I guess I just needed a deeper understanding in order to wrap my mind around F# and functional programming in general. And I must say, the more I realize what the F# compiler is doing behind the scenes the more I appreciate it. Just yesterday I was writing some c# code in a project and thought to
myself "I wish I was in F# right now, because I'd be done with this task if I was". :-)
What does that mean exactly... should I make the transition to functional programming? Sometimes I think I could. I'd just need to beef up on my math skills, and I'd be all set. I'll save that topic for another day. :-)