For a long time (several years) I did not dare to form a final opinion about Haskell: thoughts were too contradictory. And now, finally, thanks to this post about the
analysis of the program for determining the dichotomy of a graph, I can do it :)
I realized that Haskell programmers - basically, they need to say, hobby programmers are those who program not Haskell, the solution of the problem, the algorithm, the system!
[1] Look at what a simple algorithm is described in the note, and how many language constructs, explanations and discussions are piled up around it. (To understand how simple the algorithm is, you can look in the comments for options on Lisp, Python).
I know this mindset very well - when, in pursuit of maximum use of the power of a language, you forget about the task itself, because in the Lisp-world it is also often found: there are languages that can really inspire. And the phrase “it blew my brain out” often sounds both about Lisp and Haskell. But this is - garbage! Of course, one cannot help but be pleased to learn something new, but one should not rejoice in it as a child of a new toy. A good programming language should be as clear and simple as possible, should give a person the freedom of expression. Honestly, this is exactly what I was delighted when I discovered Lisp: I found what I was looking for. And not to the fact that I saw some kind of construction or twist, which I have never seen before.
')
Haskell is a very interesting language that has both advantages and disadvantages. Pros: this is an interesting semantics and a strong theoretical base, good execution speed of a binary code, which is provided by modern compilers. Disadvantages: terrible syntax
[2] , artificial limitation, which leads to the need to use complex approaches where they can cope well and simple. And they just have to be engaged if you are interested in the topic of programming languages as such, their development and research. Other, more practical languages take much more from Haskell: Clojure is a prime example.
But it is not for writing large systems, and not even for the study of algorithms in the general case. In addition to syntax and semantics, programming languages have a third aspect, perhaps even the most important, which is often forgotten - pragmatics. How the language is used, what it is for, what the community of its developers and users live with.
Haskell's pragmatist is that he exists first of all to research ... Haskell .
Notes:[1] There are, of course, exceptional, beautiful Haskell programmers who wrote a lot of useful code for the real world on it, but this, as they say in the aphorism that I dislike, only confirms the rule.
[2] For a modern language, irregular syntax is disrespect for its users. After all, no one in the modern multilingual world does not program in the same language, therefore one should not demand from a person to keep in mind the idiosyncrasy of everyone. And these common languages will be more and more, and the amount of legacy code will not decrease. I am now dealing with Lisp, Python, Php, C, JavaScript, Shell, Java. And this is not the most vivid example.
Ps. Initially, I raised the topic on
my blog . However, I decided to bring it up for a wider discussion, in order to hear the opinion on this matter of Haskell programmers.