Earlier quoted context omitted.
I deliberately didn't mention specific programming languages because I knew that would lead to bickering about the relative merits of Python vs Java vs .NET vs Clojure, which would just distract from the greater point. Your curious assertion that I'm somehow part of "Go culture" only confirms this. I think we can do a lot better than .NET or Java. .NET isn't even cross platform and Java has a lot of legacy cruft. Not…
A sample from the newer stuff in the .NET world: http://nancyfx.org How modern is that for you?
Why Go gets criticized so much
191–200 of 251 posts
Re: Why Go gets criticized so much
#192Re: Why Go gets criticized so much
#193Earlier quoted context omitted.
Go and Scala also allow every pointer to be null, no? Scala has an option type, but so does Java 8. Defining one in C# is easy. But there is Ceylon, Kotlin, Clojure, whatever. Kotlin uses ? suffixes to define if something is optional. And at least the code interops nicely. You can inherit a huge Java codebase and slowly convert the code over. No such luck with Go. Unless you're converting into C!
C# and Java optionals aren't very useful, since they would be reference types themselves, and thus could be null! I would submit Rust and Swift as "decent" type systems, if Haskell is the standard for "good". They do nullability correctly, but lack HKTs.
Re: Why Go gets criticized so much
#194Earlier quoted context omitted.
Any normal compiler usually allows overriding these options. I normally write Haskell and it has it all: unused variables, unused imports, name shadowing, non-exhaustive pattern matching, everything. But these things are warnings in my dev build and errors in the release build. That's a sane way to do it.
Except some people wouldn't enable -Werror, and the quality of Go code would suffer on average. Plus, now your compiler has options .
Re: Why Go gets criticized so much
#195Earlier quoted context omitted.
A sample from the newer stuff in the .NET world: http://nancyfx.org How modern is that for you?
Same old same old? If you think nancyfx represents a leap forward I don't know what to say.
Re: Why Go gets criticized so much
#196Earlier quoted context omitted.
Go and Scala also allow every pointer to be null, no? Scala has an option type, but so does Java 8. Defining one in C# is easy. But there is Ceylon, Kotlin, Clojure, whatever. Kotlin uses ? suffixes to define if something is optional. And at least the code interops nicely. You can inherit a huge Java codebase and slowly convert the code over. No such luck with Go. Unless you're converting into C!
C# and Java optionals aren't very useful, since they would be reference types themselves, and thus could be null! I would submit Rust and Swift as "decent" type systems, if Haskell is the standard for "good". They do nullability correctly, but lack HKTs.
[0] https://msdn.microsoft.com/en-us/library/b3h38hb0%28v=vs.110...
Re: Why Go gets criticized so much
#197Disclaimer: I work at El Goog. I recently moved teams so that I could use Go exclusively. It's often been said that Go solves the problems Google developers have, and it's 110% true. It's much easier to get things working, and it's much easier to write things like Protocol Buffers. But the key for me is that Go isn't fun in the sense of "wow, I'm so smart that I managed to one line this thing", it's fun in the "wow I…
Huh, funny enough - Go was my first try to replace PHP, but as I don't share opinion "copy-paste is better than generics" and "executable comments are ok", I tried Rust, and now I have REST API with 10000+ LOC - it serves multiple web apps and works just awesome and I really feel fun of programming and I'm enjoying language. So "I don't know why you'd want to write a web app in Rust" sounds ridiculous for me. Really,…
Re: Why Go gets criticized so much
#198Earlier quoted context omitted.
Very recently I have begun to work as programmer, and having to work with PHP I looked at phpunit and unit testing (first time I do it semi-seriously). The guidelines for mocking that I have found are about dependency injection (phpunit has some helpers, but I think that's it). What is the alternative to it?
The problem isn't with the idea of using mocks in testing. The problems start, as often the case, when people start religiously applying a design pattern and end up over using or abusing it. The problematic thought process goes like this: 1. Gee, my tests are really slow and flaky and hard to run because they talk directly to a database. I know! I'll swap out my real database connection with an in memory database. 2.…
Re: Why Go gets criticized so much
#199Earlier quoted context omitted.
I think that behavior is annoying, too. I've wonder if there's a way to tell the compiler to generate a warning for unused variables instead of just erroring out.
No there isn't. Because Go loves to show you the middle finger.
Re: Why Go gets criticized so much
#200Honestly, it comes across as a language designed by someone only incidentally aware of programming. This isn't an argument, this is the first impression.
At the risk of sounding stupid, and not really having a say in the argument for or against Go, I will say I tried to learn how to program Go on my own by trying to "guess" how to write a program. (A time waster, I had seen code but mainly glossed over it.) The program I tried to write was "Hello, World" and the way I tried to guess was using the Go website's sandbox.
The result: https://play.golang.org/p/oc-cxnjJiI (Best case: https://play.golang.org/p/NJpwhLUPA_)
I'm sure the same thing would happen trying to learn C++ from a compiler's cryptic error messages, but C++ is not Go.
One thing I dislike about Go is the culture or lack-there-of surrounding it. Especially in the canonical Hello World example, which chooses to use Japanese/Chinese language in an unnecessary way. A little presumptuous. Especially since it's used in a one-off sort of way with no explanation.
I also think it's interesting that it's the survivor of the Go and Dart launches, when I never saw the purpose of Go when it was launched, compared to a special set of libraries for C.