Live data from Hacker News

I’m joining the Go team at Google

spf13.com

171–180 of 211 posts

Re: I’m joining the Go team at Google

#171

Earlier quoted context omitted.

> And providing a better C. I keep seeing this come up and I wonder if people have actually used C in the domains where it matters. Go is not a C replacement/better C. You don't have control over what goes on the stack/heap which means you can't control memory layout. If you can't do that you're throwing away one of the key reasons you'd use C. Memory layout is critical to getting that 10-50x performance that you can…

> Go is not a C replacement/better C. Its not a replacement for C in most of the places where C is far and away the best existing choice for a whole project, it is a replacement for C in the zone where C's performance and static typing are attractive and would decided the choice in its favor, but Python's expressiveness, batteries-included stdlib, etc. also make it attractive and make it a little bit painful that the…

>it is a replacement for C in the zone where C's performance and static typing are attractive

Was C's "static" typing ever attractive as a static type system?

Re: I’m joining the Go team at Google

#172
post #95

Earlier quoted context omitted.

> abstraction/polymorphism, concurrency and dependency management which are all simpler and clearer in Go than in Java Really? A lot of copy/pasted code, generics replaced with casts on empty interfaces, poor support for collections, only very primitive concurrency tools, and so on... I can understand that simplicity is good for small CLI/network tools, but it is hardly an alternative for really big applications wher…

Your big application shouldn't be that big first?

That depends on business needs, not what some programming language designer thinks.

Re: I’m joining the Go team at Google

#174
post #95

Earlier quoted context omitted.

Your big application shouldn't be that big first?

So you're saying we shouldn't have operating systems, browsers, video games and all that good stuff? Most actual engineering is very far from writing a dumb server for yet another CRUD app :)

What I'm saying is Golang is a recent programming language so it works best when used for multi tier/services, not to create a giant monolithic Java app that has a huge number of loc.

Re: I’m joining the Go team at Google

#175
post #66

Earlier quoted context omitted.

Go's big success, in my opinion, was to fuse the lightweight, spawn a million threads we don't care, style of programming to conventional imperative, conventional static-type programming. I know of several other runtimes that had that lightweight threading capability, I've been using them since years before Go was even a thing, but they all required programmers to learn a new paradigm. At times, a radically new parad…

> I know of several other runtimes that had that lightweight threading capability, I've been using them since years before Go was even a thing, but they all required programmers to learn a new paradigm. One of those runtimes is Ruby (Ruby uses lightweight threads, not OS threads), and Ruby is not a new paradigm.

Was it stable enough to really use, though? Python also had gevent and stackless, but as far as I can tell, it never really got to the point where you could just count on it in production at high loads. It was never as stable as Erlang. They were more on the toy side that production-reliable side.

For further proof of my point, I submit the fact that you are basically correct, yet those technologies never took off, even in their own communities. The dominant way all the scripting languages are written are as single threaded code, and the second most popular way is as event-based code. It's not easy to bolt that stuff on ten years after the fact, which is what most of those technologies did.

Lua would probably be the better thing to cite as the possible counterexample, in that it does seem like a lot of the people using it are at least using coroutines, though I believe it is not possible/feasible to get them threading in any nontrivial way.

(I'm not taking the out of claiming dynamic typing counts as a "new paradigm"... probably the single largest true programming change in the last 20 years is the mainstreaming of dynamically-typed programming languages. Which I think was still a good thing for static languages because it raised the competitive bar for them; I've personally swung back over to static typing, but the easy of the dynamic world has pushed the static world to greatly improve its cost/benefit proposition, in both categories. If my only choice was dynamic typing or what we had in the 1990s, I'd still be in the dynamic world.)

As a final postscript, may I observe that while I think that Go was a modestly revolutionary combination of concepts, I consider it an indictment of the programming community that it did not happen sooner. I don't see Go as if it somehow won a big race by being the best... I see it as a situation where it's the first thing that bothered to show up, years late, somewhat desultorily.

Re: I’m joining the Go team at Google

#176

Earlier quoted context omitted.

The difference is having a bio on a website about yourself versus a bio on a website about a lot of people. No one thinks that your johndoe.com site was made by your official fan club.

You really named your user account after WHAM!? That's fucking awesome. Tell me you're either George Michael or Andrew Ridgey in deep disguise... please please.

Just another jitterbug, but you gotta have faith that I'm once bitten and twice shy.

Re: I’m joining the Go team at Google

#177
post #165
post #157

Earlier quoted context omitted.

Then you are a very lucky person. For the rest of us, it is very good to have a manageable language at hand.

We can easily manage Java, C#, C++, Swift, Objective-C, JavaScript across our consulting projects....

Of course you can. None of those languages would be in use, if projects could not be managed at all. The question is: are you benefiting from their "features" or are you able to succeed despite of the challenges brought up to you because of those features and their complexity?

Re: I’m joining the Go team at Google

#178
post #174

Earlier quoted context omitted.

So you're saying we shouldn't have operating systems, browsers, video games and all that good stuff? Most actual engineering is very far from writing a dumb server for yet another CRUD app :)

What I'm saying is Golang is a recent programming language so it works best when used for multi tier/services, not to create a giant monolithic Java app that has a huge number of loc.

What does Java have to do with big monolithic apps? I think you're confusing complex application domains with bloat.

Go is supposed to be a systems programming language. That means a very, very wide range of possible domains, where for many of them even network latency is unacceptable. For example, Photoshop would have a terrible user experience if it wasn't the monolith it is. A game engine wouldn't go above ~20FPS (even 60FPS games have a network loop that is capped around 20FPS).

If I can't do systems-level programming in Go, what's its advantage over real systems languages or higher-level languages then? Especially when you consider what Go offers (CSP) comes in opt-in libraries in many other languages.

I feel like Go should be put in the same category as C# and Java. They're just above systems languages but just below scripting languages; giving you the worst of both worlds. Not bare-metal, but also not that productive.

Re: I’m joining the Go team at Google

#179
post #177
post #165

Earlier quoted context omitted.

We can easily manage Java, C#, C++, Swift, Objective-C, JavaScript across our consulting projects....

Of course you can. None of those languages would be in use, if projects could not be managed at all. The question is: are you benefiting from their "features" or are you able to succeed despite of the challenges brought up to you because of those features and their complexity?

It was the simplicity of Java 1.0 that lead to some of the famous patterns we see in some frameworks, that were initially created to workaround language limitations.

The same path that is being followed by those that rely on libraries to reduce error handling boilerplate and go generate, just as two examples.

Re: I’m joining the Go team at Google

#180
post #79

Earlier quoted context omitted.

Ignoring on purpose is fine. The problem is when the only return value is an error which can be ignored simply by not assigning the result to a variable. Forcing the user to do: _ = f.Close() ... in order to explicitly ignore the error would be nicer, but then, there are many functions which are known to never be checked for their errors, like fmt.Println. That's why the typical advice is to use errcheck, which has f…

> functions which are known to never be checked for their errors, like fmt.Println In Java println is checked for errors, as it should be. Every Java program that does println either aborts or deals with the error in some way. It matters. Take any program that writes to stdout and run it with ">&-" to close stdout. Because of unix, the next file it opens will be file descriptor 1 and the program will start writing th…

I tried your example, and observed an error: write /dev/stdout: bad file descriptor

What "next file it opens" are you talking about exactly? How does what you're describing work?

Post reply on HN