• lobsters__ika@crustaceanson.theshelf.topM
    link
    fedilink
    arrow-up
    1
    ·
    1 month ago

    This is well written but I think over-all this is essentially an ad-hominem. I don’t mean any disrespect to the author in saying this but let me explain why I think that:

    Saying that people are unhappy with and criticize Go because it challenges their identity is saying that the criticism they have isn’t really valid or important, they only don’t like it because of their personality or something.

    The criticisms really are valid though:

    • The lack of polymorphism/generics means you can’t make a hetrogeneous collection in a type safe way. They recently introduced some kind of text substitution system to account for this.
    • The language lacks tail call elimination: This restrict blocks programmers from using certains kinds of procedural abstractions.
    • The language has goto: This breaks the ability to look at code in terms of block structured units.

    Go is overall pretty nice: safer than C, much higher level but still able to write the same sort of programs and has excellent concurrency features. So aren’t people right to be frustrated about these things? They make programming in the language worse and it’s disappointing to see something miss out on its potential.


    score 3 · canonical

  • Amusingly, discussions about Go and PHP both follow similar trajectories, albeit with wildly different features being discussed. People lambast PHP for a whole variety of technical reasons (all valid), while the supporters trot out arguments of pragmatism and ease of use (also valid).

    Swap around the features being discussed and it’s basically a verbatim Go argument.

    queue burning at the stake for suggesting parallels between Go and PHP


    score 9 · canonical

  • I’ll bite.

    But the Go philosophy of simplicity and pragmatism above all else is the polar opposite of what those languages espouse (in which complexity in the language is ok because it enforces correctness in the code).

    One reason I love haskell is because of its elegance. What is elegance? It is simplicity done right. A few simple properties can describe a whole lot of ideas. No factories, patterns, copy+paste bullcrap.


    score 1 · canonical

  • Leaning on “pragmatism” probably isn’t the angle you want to take given it’s (anti) intellectual pedigree: http://en.wikipedia.org/wiki/Pragmatism

    That aside, if we mean a focus on what is practical, it seems unlikely to be practical to make a human do the work a compiler could do. You can do a lot better than Go these days. You could do a lot better than Go 10 years ago.

    There are things I like about Go. Binaries and cheap threading come to mind. But to ignore the work PL has done to make entire classes of problems history is a perpetuating the “Null value billion dollar mistake”. Golang’s type system is near useless and emblematic of the sort of type system that dyn-langers wanted to escape to begin with.


    score 3 · canonical

  • I do not think that hate is the right word though, it is a hasty generalization to say it is so; the criticism comes out of the way it is designed compared to languages living in 2014, including those who are still successful from decades ago despite their shortcomings. Some people do have valid reason to be indifferent to it and express why they are so. That is not hate.


    score 9 · canonical

    • Some people do have valid reason to be indifferent to it and express why they are so.

      Being indifferent to things rarely warrants extensive blogging. And certainly not to the level that we’ve seen from monthly Go-is-horrible-because-it-doesn’t-have-generics posts.


      score 10 · canonical

      • I fully agree with your observation. This has driven the golang community to consider everybody touching the subject with an honest but critical eye a priori as a potential offender, not sticking to a technical argument and thus making anything meaningful hard to pass by. I wish the programmer community at large was less on taking sides based on hateful speech over actual technical merit.


        score 6 · canonical