
A 29/04/2012, às 19:43, Ertugrul Söylemez escreveu:
Hello there,
actually I did not want to participate in this discussion, but as I have experience teaching many programming languages to many different sorts of people, I feel obligated to share my observations.
To someone marginally skilled at logical thinking Haskell appears to be the first choice as the first programming language. I'm offering two experiences as a reference:
* I had to teach C++ to a math student. The language was very hard to grasp, because as someone with math skills you practically have to go back to stone age. Instead of writing equations and relationships you have to imagine yourself sitting before a large array of little slips of paper and manipulate them arithmetically to reach the goal you want. Remember that the array is your memory. You don't have a brain in C++. This was about the most difficult part and the whole thing turned out to be a very frustrating endeavor, because you basically have to temporarily forget what you learned in university.
Yes ! As someone who studied pure maths for 6 years, Haskell seems so natural and elegant to me, yet so alien to about everyone else I know that are very good coders already in other languages. When I’m reading about Haskell, I’m constantly like “yeah, that’s like it’s done in mathematics !”, the type of discourse is the same, the same relentless obsession with finding more general models of things, getting what are the fundamental properties of something and then generalizing (what is an open set ? -> topology, what is summing ? group theory, algebras, etc ) until you hit the stratosphere (category theory...). Specially since discovering functional programming I have a hard time coding in imperative languages because my times studying math refined my taste for elegance and I find it quite rare to find elegance or beauty in imperative code, where I find it a lot in functional code. In the end for me it has really become an aesthetic choice. This is such an insightful post ! Thanks ! best, Miguel Negrão