Saturday 10 January 2015

Try to understand concepts

The reason of sharing this post with you is that for a second i thought that some may say:

"Who needs these lambda calculus stuff to do functional programming!?"

You may not need, especially if you want to be just a good programmer nothing more. Yes, you can do functional programming if you don't know anything about lambda calculus. I think I already told when I was writing about stability patterns that try not to learn the name of the patterns and then use them because you know the names, instead know the reasons why a software gets unstable and then know how you can make it stable, it is much more effective than learning just the name of patterns and then using them as books say.

Richard Feynman one of the American physicist who had very famous lectures on physics
have a saying:

"You can know the name of a bird in all the languages of the world, but when you're finished, you'll know absolutely nothing whatever about the bird. You'll only know about humans in different places, and what they call the bird … I learned very early the difference between knowing the name of something and knowing something."

I have seen many people who actually were a very good programmers but they really didn't understand what they are doing. They don't know about the memory, its limitation and how it gets allocated, how a procedure call works, how a loop works and ...

The result of not knowing these may have just a slight difference when you are working on a small project with a small load. But when it comes to work on a large and complex software which should handle thousands of customers at a time, these programmers have nothing in their hand.

They think they are genius, so they write a procedure to calculate something for each user in recursive, it works for the small customer base, but as customer base gets large and large the system crashes, just because they know nothing about the stack limitation and the way recursive procedures work. They include many many Java Script libraries in their web page and things get wrong, they open a new connection whenever they want to access the database and ...

Knowing how to program is not enough
All of the above is because they just know programming, and this is not enough. Their knowledge is enough to write a program on a paper or just for compilation, in theory. Like those people who have read things about big data and available frameworks they know their name well, the year of release of each version, their spec ... and when they come to discussion to design an ecosystem to process big data for real, they say, "it is easy use this, this, that, and ... it works"

... yes, it works, but only on a paper and only for bosses. This is the time when you have to kill yourself because bosses usually have a tendency to believe on these people who know the names, versions and ..., bosses like to find cheap, easy and short solutions.

What I am trying to say is that learning and understanding the concepts of the Lambda Calculus theories will help you to understand what you are doing, why functional programming insists on using single argument functions and ...