Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This was an excellent article. Agree with the author on many points. Some notable mentions:

- Scheme: One of the best languages. A shining example of the beauty of simplicity. I personally envy folks that got to learn programming with SICP. Unfortunately, I didn't crossed with the SICP as a kid, when I would probably had devoured it.

- Haskell: possibly the most advanced programming language, with the downside of having way too much syntax.

- Opinions on programming languages are biased most of the time. Significant experience with dozens of languages is required, to diminish the bias.



Haskell too much syntax? That's a very weird claim. Haskell's syntax is one of the leanest around.

You could even argue the lack of syntax can be confusing sometimes. Beginners often mix up types, patterns and expressions, because there isn't a huge syntactic difference.


Yeah, that surprised me as well. There are declarations of types and classes etc which are a bit confusing at first, and then there are `do` and `case` and the like. Certainly not a lot though, compared to say C++ or Scala. I think what might make it appear more difficult is that it's just so different from almost anything else out there, so it's not just that there's a bit of new syntax to learn, but that almost nothing that you've learned in other languages will be applicable.


That is more or less what I mean by Haskell having too much syntax. Let me start by saying that I am far from an expert, and I am just expressing a subjective opinion. I would welcome if anyone shows me that I am wrong. Haskell is a brilliant language. Yet I have this personal and completely subjective opinion. When using Haskell, I get the feeling that the different syntax constructs, just don't fit too well conceptually among them.

The language on the whole is far superior to most others. Yet the syntax constructs don't feel to fit elegantly to me. It is not just that purely functional is a completely different paradigm. It is that the actual implementation lacks a global conceptual elegance. I am going to give an actual example: Take pattern matching. That is a nice conceptual idea. You can pattern match in function, and it is great. But then, you can also pattern match in list comprehensions. So patter matching can be combined in two completely different operations. This does not feel elegant, it feels awkward. It is not very obvious where pattern matching can or can not be used. Haskell is full of things like this.

This lack of overall elegance, makes it harder to mentally handle and become agile with the language. It takes more effort, so it feels that the it has a substantial cognitive overload. Maybe this is completely fine, and is required for the benefits of purely functional programming. Or maybe there could be a different, more elegant implementation of a purely functional language.

Or maybe I'm just biased by a lack of extensive experience with dozens of languages. As a fun note, let me add that as a side project, I am currently at work on a programming language, that address these things that I see as problems. It is not a purely functional language that aims to compete with Haskell, but it happens to address the issue of lack of overall elegance, that I am describing here. I currently have a conceptual design for a type system that specifically aims for conceptual elegance within the whole language. Also it happens that this language will be a graphical language, instead of text based. At worst it will be a great learning exercise for me. I hope that it at least end being an interesting curiosity.


He means that Haskell has a lot of operators. Haskell code is often very symbol-heavy instead of word-heavy, which IMO can make it hard to read. It reminds me of Perl in that way.


Yeah, but those operators are defined by libraries. There is very little built into to the language. Perl is exactly the opposite.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: