Live data from Hacker News

Why I Don't Want to Learn Go

arantaday.com

101–110 of 139 posts

Re: Why I Don't Want to Learn Go

#101
post #78
post #5

Earlier quoted context omitted.

Do you seriously doubt that the Go GC is significantly worse than the Oracle JVM GC (by the metrics of pause times and throughput)? I don't think I've ever heard anyone suggest that it isn't. My point with this article is simply that, even if Go's GC catches up to the JVMs (which would be an amazing accomplishment in itself), it would still be too inefficient for serious systems work. I provided several real-world ex…

My understanding is that go still provides a lot of tools to indicate when you want memory allocated and where the memory will go (which can optionally be left out). If these were used, wouldn't that make it easier for the go gc to perform better?

It doesn't. Go provides stack allocation and heap allocation. Stack allocation is the default (except for some always-on-heap things), and stack allocation is silently converted to heap allocation when you take the address of an object.

Go's memory management story is basically the same as Java's with the "use escape analysis to place objects on the stack" flag enabled. (To be fair, there is one extra thing that Go provides: the ability to allocate objects inside other objects.)

Re: Why I Don't Want to Learn Go

#102

Earlier quoted context omitted.

SQL isn't, and if it's not a serious language, what is? Perl and PHP are what the web app layer was originally built on, and they seem to be designed to maximize developer efficiency for small projects. I intentionally said most , since, obviously there are serious domain-specific languages. But stating that Go is designed for large code bases, creates a false dichotomy. Go has the advantage of being designed for the…

Calling Perl domain specific? I think those would be considered fighting words in some places. ;)

I love a certain subset of Perl with a passion bordering on mania. While I wouldn't call it domain specific, I do think it's better defined by the domains it's not well suited for. I wouldn't use Perl for GUI programming for example.

It's kind of a domain anti-specific.

Re: Why I Don't Want to Learn Go

#103

Earlier quoted context omitted.

Then it might work out fine, I don't know. In general I have to work off of their purported goals and priorities to get a feel for where the final destination of the language will be when it's more complete. If they say they aren't going to prioritize machine semantics, C-level runtime performance, or systems-grade control over code generation then I have assume those priorities will fall wayside to the established p…

I'm not saying Rust will "fail" like Go seems to be doing so far I think it's way too early to tell if Go is failing or not; it was announced less than three years ago. How successful was, e.g. , Ruby in '98?

Go isn't failing. It's actually doing quite well. I disagree with the design and implementation of almost every part of the language, but credit where credit is due: Google has created a language that a lot of people like.

Re: Why I Don't Want to Learn Go

#104
Why can't someone make a language where you can optionally use GC on one chunk of memory and use automated reference counting on another chunk? Tell the compiler which variables should be in which category, and then most of the quick programming is done in GC while all the stuff that needs to be performant will be in reference counting but automatically managed so you shouldn't have to know outside of the one keyword to flag the variable and occasionally breaking a cycle when you want to free a structure (or using weak references like Obj-C allows).

Re: Why I Don't Want to Learn Go

#105

Why can't someone make a language where you can optionally use GC on one chunk of memory and use automated reference counting on another chunk? Tell the compiler which variables should be in which category, and then most of the quick programming is done in GC while all the stuff that needs to be performant will be in reference counting but automatically managed so you shouldn't have to know outside of the one keyword…

I'm not very familiar with it, but doesn't C# or the CLR let you do something like this with managed and unmanaged code?

Re: Why I Don't Want to Learn Go

#106
I agree with the GC point. If I'm using a low-level language, my litmus test is "could I write an OS Kernel in it".

I have a naive question: could GC in Go be replaced with something like Apple's Automatic Reference Counting (ARC)? It could be an optional feature backed by inserting real alloc(), retain(), release(), and destroy() calls, so you'd still have full control if you wanted to turn it off.

Re: Why I Don't Want to Learn Go

#107

Earlier quoted context omitted.

Well IIRC, he's employed by Microsoft Research, which is not really the same as Microsoft proper. And they have used some concepts that are core to Haskell, such as LINQ being a monad, and F# is definitely related (though I don't know if that's an official Microsoft language).

I think F# is largely based on OCaml. I'm not sure what'd make a language official; MS does the development work on it, so I guess that'd be a yes on officialdom?

To be more precise, F# is based on the non-OO parts of Caml, with a completely different object system so it would be be compatible with .Net objects from other languages such as C#.

IIRC, the original research was going to be into making Haskell for .Net, but there were enough issues (in particular, being purely functional makes interop with C# and the existing .Net libraries radically more difficult) that ML seemed like a better fit.

Re: Why I Don't Want to Learn Go

#108
post #102

Earlier quoted context omitted.

Calling Perl domain specific? I think those would be considered fighting words in some places. ;)

I love a certain subset of Perl with a passion bordering on mania. While I wouldn't call it domain specific, I do think it's better defined by the domains it's not well suited for. I wouldn't use Perl for GUI programming for example. It's kind of a domain anti-specific.

> I wouldn't use Perl for GUI programming for example.

I would. I used the gtk-perl bindings for a project and I thought they were very well done. Previously I had only used the C bindings and taking the step to a higher level language (and more importantly, one with closures) was a very nice step. It was a much better experience than doing Cocoa with Objective-C, IMO, but that could have also been related to the specific (smallish) project I was doing.

Re: Why I Don't Want to Learn Go

#109
post #47

Earlier quoted context omitted.

>Go tries to be as expressive as Python and run as fast as Java Why the seemingly almost complete lack of love for Pypy from Google then? It's not like you can stop using Python anytime soon even if you keep extending Go. I believe Google's made one tiny donation to Pypy. Given their benchmarks ( http://speed.pypy.org/ ) and given Google has literally tens of billions in hard cash lying around I can't see how you can…

(1) Google spent lots of developer resources on Unladen Swallow, which ended up not giving the speed increases they expected, but that's another story. (2) Last thing I heard, Google's trying to minimize their Python usage in favor of Java.

Re #2, I heard ~November that Python was deprecated in production at Google. No idea what the details/caveats on that are (I presume it applies mainly to new code?).

Re: Why I Don't Want to Learn Go

#110

Earlier quoted context omitted.

Nobody believes GC is a bad idea, it's a canard to suggest otherwise. It's that it's a contradiction of terms to say that you are offering a "systems" language but the language in question has non-optional GC. Go isn't competing with C and C++, it's competing with Java and C#.

I believe GC is a bad idea. Programmers should know what their objects are doing.

I believe that Rob Pike has made the point that garbage collection is required to make the concurrency model practicable. Being Go's foremost raison d'être, its use of CSP should not be ignored or abused, or you won't be getting much out of Go. That's not to say that low-latency garbage collection isn't interesting, or that Go's authors haven't been around this block. (You might be interested to read http://doc.cat-v.org/inferno/concurrent_gc/concurrent_gc.pdf )
Post reply on HN