This programmer can't code with taking the constraints of the program's environment into consideration.
After learning an unrelated programming language he isn't able to write idiomatic code in a different programming language with a different paradigms.
That's like being depressed when wanting to curse in English as the Russian curse words are much better but when translating them into English, they lose a lot of their appeal.
This programmer should learn that you shouldn't fight the basic premises of a language. That leads sometimes to ugly code but this often is still the best you can do within this particular language.
Also the next programmer to maintain this code will be much happier.
The main thing I learned when learning Functional Programming was that there are multiple ways to solve the same problem, which forced me to look at the data and output first instead of jumping to the syntax to get intermediate results. A program isn't a set of conditionals, loops, and objects, it's a transformation of data from one form to another.
Before FP, I would implement a compiler as a massive state machine. In FP, I think more in terms of small functions that work together in a stream, and the state machine is implicit. With declarative programming, I think in terms of defining the grammar.
I don't use FP techniques for everything, but my whole way of approaching a problem is different because I know that other options exist. Sometimes I'll use a for loop, other times I'll make a recursive mapping function, it really depends on which solution is simpler and less likely to have bugs.
This article does not age well. Especially the C# stuff...
Also, using Haskell 'very little' will not give you the experience you need to write something like this. Haskell has a (very) steep learning curve and you need to recognize ways to solve problems and to see the elegance (and the warts as well by the way). That takes time and effort; maybe there are people who just get it, I am definitely not one of those people, but the work, for me, was definitely worth it.
The article agrees that it made the author a better programmer. The argument they're making is that it made them a worse C# developer. Their Haskell experience allowed them to see the specific problems with their C# code but didn't give them the tools to fix them because functional programming isn't (or wasn't) idiomatic C#.
why hasn't it aged well? re: c#, afaik LINQ would solve this particular problem, so perhaps the solution wouldn't be as verbose nowadays. but other than that it still rings true – I miss Haskell when doing Python and keep coming up with weird hacks to shoehorn functional stuff into it (ask me about the time i used async/await to implement something like do-notation...) which probably makes me a "worse" python programmer, same as TFA
A dilettante complains about something they "learned," as opposed to committing to mastering it with real use and then forming an informed opinion. PEBKAC seems the more likely explanation.
[+] [-] bhaak|6 years ago|reply
After learning an unrelated programming language he isn't able to write idiomatic code in a different programming language with a different paradigms.
That's like being depressed when wanting to curse in English as the Russian curse words are much better but when translating them into English, they lose a lot of their appeal.
This programmer should learn that you shouldn't fight the basic premises of a language. That leads sometimes to ugly code but this often is still the best you can do within this particular language.
Also the next programmer to maintain this code will be much happier.
[+] [-] beatgammit|6 years ago|reply
Before FP, I would implement a compiler as a massive state machine. In FP, I think more in terms of small functions that work together in a stream, and the state machine is implicit. With declarative programming, I think in terms of defining the grammar.
I don't use FP techniques for everything, but my whole way of approaching a problem is different because I know that other options exist. Sometimes I'll use a for loop, other times I'll make a recursive mapping function, it really depends on which solution is simpler and less likely to have bugs.
[+] [-] tluyben2|6 years ago|reply
Also, using Haskell 'very little' will not give you the experience you need to write something like this. Haskell has a (very) steep learning curve and you need to recognize ways to solve problems and to see the elegance (and the warts as well by the way). That takes time and effort; maybe there are people who just get it, I am definitely not one of those people, but the work, for me, was definitely worth it.
[+] [-] ChrisSD|6 years ago|reply
[+] [-] uryga|6 years ago|reply
[+] [-] jpochtar|6 years ago|reply
[0] https://youtu.be/w-wbWGwZ7_k
[+] [-] throwaway3627|6 years ago|reply