7 ms·
Go is designed for average programmers working in a huge organization. That's why its dullness is a virtue.
by chrismealy 10y ago
Go is designed for average programmers working in a huge organization. That's why its dullness is a virtue.
- TazeTSchnitzel 10y agoSo, Java?
- pjmlp 10y agoNo, Java has become too advanced for the typical Go developer. Too many features.
- geodel 10y agoIt is for me. Could not figure out advanced tools like Maven or gradle. Maybe it was beneath Java experts at Sun/Oracle develop simple cli tool that could compile a java project with one command.
- Filligree 10y ago'gradle build' Unless the project is very badly configured, that should be all you need to compile it. Now, writing those .gradle files...
- geodel 10y agoYea, advanced language like Java should have advanced build tools and build files. Go is simplistic so `go build|install|run` just works without IDEs, build files, and external build tools.
- danieldk 10y agoWell, yes, if you include the build tool in with your language implementation you do not need external build tools. Compiling most Java projects is usually as simple as 'brew install maven; mvn package'. Maven does require a build file, but it can also do more than the go utility, such as deploying artifacts in a repository, build distributable tarballs, RPMs, debs, etc. Maven, like go, largely relies on convention over configuration as well. If you generate a POM file from the standard archetype, you basically drop your files in the right source directory and it will build. (I am not a fan of Java, but I think a lot of the criticism here is lazy. The first time you use the 'go' tool you have to learn its usage as well: how to separate library code from programs, what are the conventions for package structure, how to avoid API breakage for downstream users, etc.)
- vorg 10y ago> Now, writing those .gradle files... Gradle build files have confusing syntax. Just knowing which lines have an equals sign and which don't is a bit of work.
- pjmlp 10y agoYou mean just using javac -sourcepath is too hard?
- IshKebab 10y agoKind of, but with more `strings.hasSuffix(...)` and less `new StringComparatorFactory(new StringSubsetComparison(), StringComparisonPositions.END_POSITION, ...`
- Groxx 10y agoGive it time, Go is still pretty new and requires reinventing all those wheels and flexibility-allowances. It's already visible in some areas though - e.g. look at the hoops you have to code through to allow decent unit testing of controller-style code. Anything of interest has to be exported and injected, or you simply can't do it. Even Java's significantly better here with its runtime manipulation.
- pjmlp 10y agoIn Java it is string.endsWith(...), not much different.
- IshKebab 10y agoOk bad example but you get the idea.
- bwanab 10y agoSeems weird that from what I hear about the intense interview process that Google programmers go through that they'd feel a need to dumb down the language of choice.
- deleted 10y ago[deleted]
- Filligree 10y agoI have yet to meet anyone inside Google who actually likes the language. At best they call it a decent replacement for C or C++, which is damning with faint praise. Lots of people are neutral, of course.
- oddthink 10y agoI like it. My brain's already pretty full with trying to get a ML pipeline optimized and launchable, and if I need to write something to read a CSV file, make some RPC calls to a service for each row, and dump the results to a file, go just works. Sure, I could use something like Haskell, but then I'd have to worry about whether I'm accumulating a giant stack of thunks that'll blow up. go just works, and less of it will bit-rot than the comparable python script, thanks to at least some types. This is why the SREs seem to be fans, e.g. https://talks.golang.org/2013/go-sreops.slide#1 https://talks.golang.org/2013/go-sreops.slide#1
- danieldk 10y agotrying to get a ML pipeline optimized I wrote some machine learning tools in Go and the experience is quite bad. The lack of operator overloading and parametric polymorphism make most ML code ugly. It also does not help that Go's compiler backend does not optimize very strongly and calling out to C comes with a relatively large overhead. Sure, I could use something like Haskell, but then I'd have to worry about whether I'm accumulating a giant stack of thunks that'll blow up. There are many languages between Go and Haskell that are productive and provide a sufficiently strong type system.