My name is Barend Venter. As of writing this, I am an undergraduate studying Computer Science at Central Washington University at Ellensburg WA. I am writing this blog to document my experiences using functional programming on Windows, so that others may benefit from my solutions or contribute their own. The second purpose of this blog is to advocate functional programming.
My languages of choice at this point are F# and Haskell. I have written many applications in those languages, most of them trivial but some a bit more ambitious. The most substantial of these was a full implementation of the Rabin public key cipher for key exchange and a key generator to use with it. As time permits, I may also write on languages that have piqued my interest but in which I have not yet coded, such as Erlang or Scala.
As I pointed out, I intend to advocate functional programming. Functional programming needs advocates: many programmers are barely aware it exists, and do not understand how functional programming works or why people use it. People who advocate the use of functional languages and explain how to tackle difficult problems not covered in beginners' textbooks could do a lot to raise awareness of the discipline. If people are aware of the motivation behind functional programming, they can provide better support for functional styles of programming when writing libraries which functional programmers will want to use. People who are aware of the functional programming style may also find that the functional programming style simplifies some difficult programming problems and makes them more approachable.
I am still speaking in very vague terms here. In the coming months, I will be covering more specific examples of how I address my personal projects and class assignments in a functional way, and presenting my experiences with the tools and libraries available with for functional programmers (probably just Haskell, but I may touch on Visual Studio tools that pique my interest).
My intended audience are programmers who have already perused free online resources like Real World Haskell, Learn You a Haskell for Great Good, and A Gentle Introduction to Haskell. I will however try to write such that anyone clever and determined enough should be able to understand what I am writing about.
Here are some links to the resources mentioned above:
- Real World Haskell: http://book.realworldhaskell.org/read/
- Learn You a Haskell for Great Good: http://learnyouahaskell.com
- A Gentle Introduction to Haskell: http://www.haskell.org/tutorial/
I would recommend you glance over these briefly if you are unfamiliar with the Haskell programming language.
If you want to learn F#, I'd recommend buying Expert F# by Don Syme. The F# language has been changing at a fast pace and a lot of previously "built-in" features have been removed from the language and placed in libraries. You will want to pay attention to the examples in that book, as some of them may no longer work with the current version of F#.
My plan is to update at a minimum once every 2 months. My first planned post will be on parallel programming in Haskell, but I may deviate if I find something else more interesting to write about. I look forward to writing to you.
I am also a novice functional programmer, so I welcome any criticism and will gladly edit my posts accordingly to make them more instructive. So please read my blog postings critically, for your sake and mine, so we can learn from each other - or at least so that I can learn from you.
No comments:
Post a Comment