A few weeks ago I decided to build a tool for generating code, a tool that help me and others to build software in a faster way. Yeap! It’s going to be an excellent tool and it’s going to help (hopefully) a lot of people. I though in some basic features and there is no tool like that (or I don’t know it), the idea seems pretty solid. I need a proof of concept, some way to determinate if it’s possible to build that, a pretotype.

So I take my old hammer (C#) and code until 3o’clock, it was finished, a console application with basic functionality. It works pretty well, but I had some doubts about it, just works on Windows with a SQL Server Database, not very open source way of building it. I need other platform for my tool, and learn a good language in the way. I started asking the intern with this question: “What Programming Language should I use?”.

I want to build a command line tool, and it had to be multipltaform (Any desktop OS) to cover a great part of the environments. So C++ crossed my mind, but something was missing in this picture, it’s just translate the core algorithm to C++ and learn how to build a console application in multiples OS. It wasn’t the learning experience I was looking for.

Reading a little about the topic I found Haskell kind of interesting, a lot of people reviews talks about what a good experience of learning is, and the power it has, it’s compared to C++ in maturity but for functional programming. Reading and reading more reviews just convinced me that it’s the language and experience I was looking for. So I started reading the good book learnyouahaskell.com, it’s pretty friendly and fun to read. There were a lot of concepts to learn: Typeclasses, list comprehension, pattern matching, guards, etc. And the list goes on. It’s ok, remember that names shouldn’t make things harder, “Understanding stands over Naming concepts”. I’ve already read half the book and I have nothing to say than all the recommendations was right, it’s a pretty amazing language and the learning experience is over power! The build of my tool had to wait but I think it worth the time.

I recommend (Like almost everyone) to learn Haskell or a functional programming in a functional way.