Why learning Haskell/Python makes you a worse programmer
lukeplant.me.uk
lukeplant.me.uk
http://news.ycombinator.com/item?id=1883663
http://news.ycombinator.com/item?id=407796
I'm still sympathetic to the author's plight because my experiences have been similar. After learning Python and Haskell (and Clojure) and then returning to Java, I find myself missing features like first class functions and list comprehensions and so on. It's hard coming to terms with the fact that you're back in Blub and having to cram your thinking back into that box. It isn't so much becoming a worse programmer as becoming a more frustrated programmer.
>>I've found, contrary to what you sometimes read,
that learning Python and Haskell has not improved
my programming using other languages.
This is more about his personal experience than any hard facts about Haskell or Python making the general population a worse programmer.>I find I think in Python, and even in Haskell to some extent, even though I have used Haskell very little.
demotivates you to read the rest.
string.Join("\n", mylist.Select(x => x.Description).Where(description => description != ""));
He may be being sarcastic but in so far as Haskell idioms don't work in imperative languages he is right, especially as it applies to the large framework languages. The whole standard library (and as he calls out the ASP.net framework) expects a certain kind of mentality that isn't FP centric. The amount of FPisms that you can bring to an ASP.net app are few and far between. On a low level, C# (at least at that time) had very poor FP support. On the High level design side ASP.net dictates part of your design and does it in a somewhat FP hostile way.
Without a solitary shred of evidence to support my conjecture, I claim that the problem is that programmers are given a smattering of information about how to use some tools, but are not taught about the progression of tools over time. The history of programming languages is a history of attempts to solve various problems and a history of various design trade-offs.
Deprived of this basic grounding, young programmers are constantly rediscovering the good and the bad, and the Internet gives us a constant stream of their revelatory essays, all of which can be summarized as "Babies vs. Bathwater: Fight!"