9 ms·
I think the author gets closest to the mark in the Conclusion, but still falls short. Go is very attractive as an "upgrade" from Ruby/Python or Java. It's a goo
by mikeokner 11y ago
I think the author gets closest to the mark in the Conclusion, but still falls short. Go is very attractive as an "upgrade" from Ruby/Python or Java. It's a good replacement for the interpreted languages when speed/performance matters and it makes the async paradigm feel much more accessible. And compared to Java, the fact that Go compiles to a native binary is a huge benefit. It's not a replacement for C or a good "teaching" language, nor would anyone call it "mature" at this point, but it does fill a niche and fills it pretty well.
http://blog.disqus.com/post/51155103801/trying-out-this-go-thing http://blog.disqus.com/post/51155103801/trying-out-this-go-t...
- zak_mc_kracken 11y agoIn my experience, Go is a lot more attractive as an upgrade from Ruby or Python. It's a very steep downgrade from Java on all points imaginable: type system, exceptions, genericity, garbage collector and runtime, tooling, IDE's, etc...
- nostrademons 11y agoIt's an upgrade in terms of compile times, deployment simplicity, conciseness, concurrency, etc. Some people care about such things.
- threeseed 11y agoCompile times are largely irrelevant if you use something like JRebel, Play, Tomcat or the many other frameworks that support hot reloading. And Java is far broader and more flexible at concurrency than Go with libraries like Quasar, LMAX Disruptor and the many HFT contributed ones. Let's also not forget that Java is significantly faster, has every library under the sun, has a dependency system that actually makes sense and you have seamless interop between multiple languages e.g. Ruby, Python, Scala, Clojure. Anyone who thinks Go is an upgrade to Java is woefully misinformed.
- caoilte 11y agoAdrian Cockcroft does and I don't disrespect his opinion even though I'd far rather functional languages won the developer mindshare myself. We shouldn't be under-selling how light the Go footprint is. In the long run it may be one of the few languages to compete with unikernels.
- Jweb_Guru 11y ago> In the long run it may be one of the few languages to compete with unikernels. Can you please clarify what this means? I don't really understand what it would mean for a language to compete with a unikernel.
- woah 11y agoSome people like things that are minimal and good enough. Also, there is a huge swath of engineers who just really dislike writing Java.
- ascendantlogic 11y ago"Let's also not forget that Java is significantly faster" Citations please. While I am not necessarily saying I don't believe you (because a properly tuned JVM is lightning fast), making a statement like this without numbers to back it up is a gaping hole in your argument.
- nkozyra 11y agoAs always, it depends on what you're measuring. I find it to be largely a wash http://benchmarksgame.alioth.debian.org/u64q/go.html http://benchmarksgame.alioth.debian.org/u64q/go.html Keep in mind this is comparing Go 1.4, I'd expect 1.5 to do better.
- igouy 11y agoKeep in mind Go 1.5 has not been released yet :-)
- 11y ago
- rlonstein 11y ago> It's an upgrade in terms of compile times, deployment simplicity, conciseness, > concurrency, etc. Some people care about such things. I remember the days of going for coffee while the compiler chugged away but I wonder what compiles people do on a regular basis that take such time? I just rebuilt SBCL here on a mid-2012 MBP and it took less than 6 wallclock minutes in the background including download and whatever else I was doing: real 5m12.752s user 4m33.393s sys 0m27.579s I personally use D when possible, but waiting on compiles is usually secondary to the amount of time I spend thinking or exploring.
- 0xdeadbeefbabe 11y ago> IDE's Lack of an IDE is a feature not a bug. Edit: or it is a symptom of a feature. No one has written one yet because they are happy with what they have. > tooling Do you mean you need an IDE that speaks the language to write anything efficiently? Do you mean your first day on the job is spent setting up tools? Wrong philosophy in my opinion; I could imagine something better.
- chc 11y agoHaving tools that can spot errors early, help you track them down quickly and help you comprehend, organize and refactor your code can be very useful with a large codebase, and I don't think it's fair to characterize that as "you need an IDE that speaks the language in order to write anything efficiently."
- neoyagami 11y agoLike gosublime?
- chc 11y agoYes, Gosublime is a good example of how tooling can be helpful, though from what I can tell it is somewhat less helpful than what you'd expect in a decent IDE (e.g. no refactoring support, the interface is mainly dropdowns, weak support for finding definitions and usages).
- NateDad 11y agoReally, all I need is gofmt on save, and even that is mostly because I've gotten so used to it that I drop ugly unformatted dreck into my editor and let gofmt clean it up. I worked full time for year without go to definition, mostly because full text search is almost as good most of the time, due to how regular formatted go code is. I don't really use anything else, mostly because I don't need anything else and I have better things to do than install editor plugins.
- matthewmacleod 11y agoIn some ways, this is correct. Go is much more simple and consistent than Ruby or Java, has a better deployment story, and better tooling in some ways. As a language, it's much less enjoyable to write. Yes, the concurrency primitives are much better, and that's a good programming tool. But to a developer coming from Ruby, code is often needlessly repetitive and obtuse to write. It ends up being overly verbose, full of copypasta, and much less expressive. It's got it's niche – I've found it useful for writing small command-line utilities, and it's been surprisingly helpful at putting together a good deploy story for some work I've done on the Raspberry Pi (with the benefit of being well-structured and reasonably performant). But I wouldn't like to use if full-time – mostly because it's just so weirdly irritating to write.
- meowface 11y agoI wish there was a language somewhere in between Ruby/Python, Elixir, and Go.
- lobster_johnson 11y agoHave you looked at Nim?
- jerf 11y ago
- istvan__ 11y agoI am not sure your definition of upgrade, but it is definitely a downgrade in terms of features even comparing it to Java. It has lean environment that makes it more attractive to systems programming and the CSP (channels, go routines etc.) make it great for concurrency. The trouble starts when you are shifting from systems projects to business logic projects. This is where Java runs circles around Go (or for that matter several other languages/environments). I wish Go had similar type system like OCaml. https://functionwhatwhat.com/go%E2%80%99s-type-system-is-an-embarrassment/ https://functionwhatwhat.com/go%E2%80%99s-type-system-is-an-... If I would like to teach something smart to software engineers I use OCaml, if I want to teach how simple things can achieve a lot I use Go. (They gonna end up programming in Java or Python anyways :)) )
- meddlepal 11y agoI get the feeling that the people who deride Java either have little experience with the language and ecosystem or had were the poor folks that had to maintain a legacy <1.4 Java app for years and have no experience with modern Java. It has its quirks (what languages doesn't?) but it is a fantastic general purpose programming language.
- twic 11y ago> And compared to Java, the fact that Go compiles to a native binary is a huge benefit. I'm baffled by this. I've been deploying Java applications for years, and this has literally never been a problem. You build a WAR (or EAR, or uberjar, or distzip, or whatever). You install a JRE on the machine. You deploy. You're done. It's never been a problem for me, and it's not something that's talked about as a problem in the Java community, which suggests it's not a problem for other people. When i see someone suggesting that Go has a significant advantage over Java in terms of deployment, i assume that they don't actually have experience of deploying Java apps, they're just regurgitating the standard Go talking points.
- andrepd 11y agoI think you must agree that no matter how painless it is, binary < JAR + JRE, in terms of deployment effort.
- masklinn 11y ago> And compared to Java, the fact that Go compiles to a native binary is a huge benefit. Java has multiple native code compilers, how is it a benefit when Java can do the exact same thing? (FWIW I learned recently that C# also has at least one native code compiler).
- MattHarrington 11y agoOne option with C# Windows Store apps is that they can generate native code using something called ".NET Native". https://msdn.microsoft.com/en-us/vstudio/dotnetnative.aspx https://msdn.microsoft.com/en-us/vstudio/dotnetnative.aspx