Live data from Hacker News

Why I Don't Want to Learn Go

arantaday.com

91–100 of 139 posts

Re: Why I Don't Want to Learn Go

#91
post #9

Earlier quoted context omitted.

>>No GC. Interesting that you disqualify Objective C? It use reference counting which should have a more predictable memory handling behaviour. Or is the dynamic stuff too much overhead for you? To me, it looks cheap (but I'm a scripter since quite a few years). (Not knowledgeable on this; I'm asking, not making an argument.)

It seems most people don't really understand the core of systems programming. Let me try to summarize: There can be no limitations of any kind in terms of expressing to the machine, precisely how the machine should behave. Period. No ifs-ands-or-buts about it. This means you must be able to define memory layout, management, instruction behavior and semantics, and optimally, be able to predict cache locality (arrays v…

> There can be no limitations of any kind in terms of expressing to the machine, precisely how the machine should behave.

I hear what you're saying but you're overselling C here. Straight up ANSI C has a lot of limitations in telling the machine what to do. Even the various proprietary extensions have limitations right up until you stop writing anything that looks a little bit like C, e.g. you start using "asm" style intrinsics that let you do assembly inline.

Re: Why I Don't Want to Learn Go

#92
post #80

Earlier quoted context omitted.

Fair point. Or for a more recent example, Microsoft hiring Simon Peyton-Jones and yet showing no interest in actually using Haskell for anything.

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).

* (though I don't know if that's an official Microsoft language)*

It is. When you launch Visual Studio >= 2010 it's there alongside C# in the Project Creation wizard.

Re: Why I Don't Want to Learn Go

#93

I think a large portion of online life is already ruled by Google. I will never use Go only because it comes from Google. A mobile with Google's OS, a Google browser and Google for email and now we will also code in a language controlled by Google? I have nothing against Google, but as a community of web developers our interest lies in diversifying and ensuring that no one gets more powerful than us. Also looking at…

I don't like giving over my life to Google either, but there's a big difference between using Gmail for everything and writing programs in Go. Go is an open source project. You can fork it right now if you want, call it Not-Evil-Go or whatever, and BAM it's no longer controlled by Google. They can never make it just up and disappear, the worst they could manage is to do like Oracle did with OpenSolaris and force the community to fork it.

Re: Why I Don't Want to Learn Go

#94
post #67
post #64

Earlier quoted context omitted.

Better than C++ and D? You must be joking.

Ok, not better than C++ and I haven't used D. I should've said "other mid-to-high-level langauge". But using C++ doesn't solve my complaints about the clunkiness of the non-critical path stuff. Still have wacky string handling and I'd rather write my own bintree or hashmap than have to use STL.

And throw away years of experience in optimization from the compiler developers?

You surely have lots of free time available.

Re: Why I Don't Want to Learn Go

#95
post #22

For all the talk of the speed benefits of Go, and it being static et all, I don't see much improvement over, say, Python. A lot of the questions re speed bumps on the mailing list are answered with "those are microbenchmarks, what matters is real cases" and generally a "lalala hands in the ears approach", even when it's obvious that the problem is deeper than some microbenchmark only case. Like this example: https://…

You could compare python with perl or php, you could compare Go with C, C++ or Java. But to compare Go to Python is a bit weird. Of course, you could do it, but why would you, almost every metric that you'd want to use would be off. You're comparing a compiled language with lightweight threads aimed at just-above-low-level programming backed by a single vendor with an interpreted language that is mostly geared toward…

For the type of applications people have been writing in Go, Python + PyPy would equally do as well.

Re: Why I Don't Want to Learn Go

#96
post #80

Earlier quoted context omitted.

Fair point. Or for a more recent example, Microsoft hiring Simon Peyton-Jones and yet showing no interest in actually using Haskell for anything.

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).

Sure it is, it is even listed on the official Visual Studio page:

http://msdn.microsoft.com/en-us/vstudio/hh388569

Microsoft also sponsors Haskell and OCaml research via Microsoft Research centers.

Re: Why I Don't Want to Learn Go

#97
post #10
post #7

Go is designed for large codebases, which is a problem that the author may not have, and so he may not see the benefits. One key feature is that the Go compiler itself is the style guide: it automatically reformats your code to remove style guide violations. This makes it easy to work on a codebase the size of Google's because everything looks like it was written by the same person. We try to do the same thing for C+…

That's fair - the largest code bases I've ever worked on are all less than ~200K LOC. They've enforced style by mandating committers hook a linter into a git pre-commit hook, and compilation time hasn't been a huge problem since the languages always support incremental/partial compilation (Java/Lisp for the most part). I can imagine that not working at Google-scale.

> They've enforced style by mandating committers hook a linter into a git pre-commit hook

Style-related presubmit hooks are a part of every project at Google. Plus readability requirements, etc - style is kept pretty damn consistent.

> compilation time hasn't been a huge problem since the languages always support incremental/partial compilation (Java/Lisp for the most part).

This is the far more interesting problem to solve at scale with a single centralized repository.

Re: Why I Don't Want to Learn Go

#98
post #76
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…

In C, don't people just allocate a slab of memory for critical paths too?

Sometimes, perhaps, but simple malloc/free are much faster and more predictable than what you see in GC'd languages, often mitigating the problem. On top of that, many critical paths can avoid even those by confining their memory allocation to the stack, something that effectively ceases to exist in GC'd languages.

Re: Why I Don't Want to Learn Go

#99
post #94
post #67

Earlier quoted context omitted.

Ok, not better than C++ and I haven't used D. I should've said "other mid-to-high-level langauge". But using C++ doesn't solve my complaints about the clunkiness of the non-critical path stuff. Still have wacky string handling and I'd rather write my own bintree or hashmap than have to use STL.

And throw away years of experience in optimization from the compiler developers? You surely have lots of free time available.

In fact I don't, which was why I said "critical path in C, rest in Go". Usually I do Java but if I need to use C, I'd like to just write the part that needs to be fast, then drive it using something else. Python is also acceptable when it comes to parsing command line options and the like, and it's as slow as dogshit.

"Lots of free time" would be dicking around with cryptic STL error messages.

Re: Why I Don't Want to Learn Go

#100
post #25

Earlier quoted context omitted.

Objective C message passing is much, much faster than function dispatch in a typical scripting language but still too slow for inner loops. C++ virtual functions and, of course, inlined C/C++ functions are much faster.

Obligatory link benchmarking various Objective-C operations: http://www.mikeash.com/pyblog/performance-comparisons-of-com...

I'm a bit concerned about at least one measurement:

Read 16-byte file 100000 iterations 2.1s for 100k reads 21219.3ns per read

This appears to be testing... the filesystem cache? It's certainly not seeking on a rotational disk, "SSD" isn't on the page, so... not sure where he's getting 21 microsecond reads from.

Post reply on HN