Live data from Hacker News

I’m joining the Go team at Google

spf13.com

191–200 of 211 posts

Re: I’m joining the Go team at Google

#191
post #98

Earlier quoted context omitted.

>Sorry, but in what way is Go "revolutionizing"? By offering simplicity. Taking a step back to before C++. And providing a better C. C + strings + GC + map + slice(array) + json/xml parsing + http transport layer (server & client). What else do you need ? Ideal for minimalists. That's its beauty. Programs are very stable. Takes less memory than Java (some amount more than C/C++). Faster compilation time compared to C…

> 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…

Just to make myself clear, on the point of 'providing a better C'. I just made that comment from language evolution point of view. And did not at all mean that Go is better than C, in all respects. I dare not say that.

What I meant was taking a step back to a point before C++ was created. And looking ahead, and choosing what works and is essential (strings, GC,... and some modern Internet usage things...concurrency...etc), and getting rid of all the bloat, which actually comes in the way, especially the opinionated bloat on how software should be done e.g. OO. And making a language based on that.

For some reason, this discussion reminds me of Linus Torvald's angry defense of using C, for git[1] :-)

[1] http://harmful.cat-v.org/software/c++/linus

Re: I’m joining the Go team at Google

#192

Earlier quoted context omitted.

Yep, mostly Lombok (especially @Data for immutable typed objects with automatic constructors without boilerplate), streams, and lambdas.

are there any opensource github projects that illustrate the use of this infrastructure (java 8 + lombok + streams + lambda) in a very clojure-ish way ? its hard to find good examples of this style of coding. For example, it is hard to figure out which app server (Spring Boot, undertow, dropwizard, wildfly). I'm sure you can use any... but it would be nice to learn from your experiences.

Could you provide an example project that you'd like to see implemented and I'll give it a go? I'm not the person who's doing this but I think I'd like to mess around with functional programming and I love Java.

Re: I’m joining the Go team at Google

#193

Earlier quoted context omitted.

are there any opensource github projects that illustrate the use of this infrastructure (java 8 + lombok + streams + lambda) in a very clojure-ish way ? its hard to find good examples of this style of coding. For example, it is hard to figure out which app server (Spring Boot, undertow, dropwizard, wildfly). I'm sure you can use any... but it would be nice to learn from your experiences.

Could you provide an example project that you'd like to see implemented and I'll give it a go? I'm not the person who's doing this but I think I'd like to mess around with functional programming and I love Java.

Nice! Drip campaigns - https://www.sendwithus.com/resources/guide#ch2-drip

This is an example of a project that is not UI centric, has quite a bit of database integrations (postgres), mailer integrations (mailgun), scheduler (https://dzone.com/articles/distributed-tasks-execution-and-s...). It has also has a bit of math to compute stuff.

Even without a UI - it is something that could be very useful!

Re: I’m joining the Go team at Google

#194

Earlier quoted context omitted.

Could you provide an example project that you'd like to see implemented and I'll give it a go? I'm not the person who's doing this but I think I'd like to mess around with functional programming and I love Java.

Nice! Drip campaigns - https://www.sendwithus.com/resources/guide#ch2-drip This is an example of a project that is not UI centric, has quite a bit of database integrations (postgres), mailer integrations (mailgun), scheduler ( https://dzone.com/articles/distributed-tasks-execution-and-s... ). It has also has a bit of math to compute stuff. Even without a UI - it is something that could be very useful!

Sounds pretty good. I've sent you an email for more details. I'm interested in doing this. It's a cool project idea.

Re: I’m joining the Go team at Google

#195
post #156

Earlier quoted context omitted.

Can I say X is a value-type(or better annotate it in declaration)? If not then I don't have that control. Your compiler doesn't know your data access patterns, dataset size or a myriad of other factors that you need to tune if you really want to get full utilization from your hardware. To be clear I'm talking about ~5% of software out there, but when you need it you really need it.

Yes, the distinction between value and pointer types is explicit in the language, so you have all the control. This is, why you also have more control about the memory layout than in Java, which makes a huge difference in performance.

For the time being, until Java 10 gets released.

But how things are going regarding Java releases, Go could even get generics before Java 10 gets released.

Re: I’m joining the Go team at Google

#196
post #98

Earlier quoted context omitted.

>Sorry, but in what way is Go "revolutionizing"? By offering simplicity. Taking a step back to before C++. And providing a better C. C + strings + GC + map + slice(array) + json/xml parsing + http transport layer (server & client). What else do you need ? Ideal for minimalists. That's its beauty. Programs are very stable. Takes less memory than Java (some amount more than C/C++). Faster compilation time compared to C…

> By offering simplicity. Taking a step back to before C++. And providing a better C. C + strings + GC + map + slice(array) + json/xml parsing + http transport layer (server & client). What else do you need? Language consistency (no magical functions like "make" or magical items like slices), DRYness (generics), better type-safety than C (interface{} is the void * of the 21st century), would be a good start. Due to t…

> Due to the mandatory GC, it's also not a C replacement where C is good at. Hence the backtrack on "systems", etc.

I tend to complain on Go's design decisions and don't have any actual use for it, but given my experience with Oberon, I do believe there are use cases where it would be possible to use Go as systems language.

For sure not in when targeting 8 or 16 bit CPUs with a few KBs, or timing constraints that cannot deal with possible GC pauses.

But for more beefy micro-computers like the original PI, it can certainly be an option.

This would a good starting point for anyone trying to attempt it

http://wiki.osdev.org/Go_Bare_Bones

Also I consider the ability to write compilers to be systems programming use cases and Go is already bootstrapped.

Having said this, yes there are better options to do systems programming with less need of Assembly help.

Re: I’m joining the Go team at Google

#197
post #174

Earlier quoted context omitted.

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…

Java does run bare metal and there are commercial JDKs with real-time GCs.

PTC is one such those vendors,

http://www.ptc.com/developer-tools/perc

Go might eventually be used in such scenarios, but the toolchain is not yet there.

Re: I’m joining the Go team at Google

#198
post #188

Earlier quoted context omitted.

Swift probably, but Java and C# still suffer in a lot of situations from the lack of good AOT compilation options. There are implementations for both, but they're incredibly primitive compared to the JIT reference implementations.

Not .NET Native, which uses the same backend as Visual C++.

Unfortunately .NET Native is still for UWP only, so for most places you'd use Go it's pretty useless. Microsoft appears to have no plans to even bring it to ASP.NET: https://github.com/aspnet/Home/issues/285

Re: I’m joining the Go team at Google

#199
post #3

> What is missing from the Go ecosystem? Personally, golang "IDE" experience is not as good as Java or even C++. For example, ycmd only supports subset of functions for golang. I miss ycmd-goto-references the most.

Please do try atom with the go-plus package. It has goto def, can show "doc strings", and has decent integration with delve.

I have the same features form ycmd. ycmd actually works with atom as well and also supports go.

Pushing all "IDE" features into editor-agnostic daemon is a good path for the future. ycmd is taking this spot.

Re: I’m joining the Go team at Google

#200
post #188

Earlier quoted context omitted.

Not .NET Native, which uses the same backend as Visual C++.

Unfortunately .NET Native is still for UWP only, so for most places you'd use Go it's pretty useless. Microsoft appears to have no plans to even bring it to ASP.NET: https://github.com/aspnet/Home/issues/285

Probably not, but they have CoreRT instead.

https://github.com/dotnet/corert

Many of us are actually mostly working on Windows, so NGEN, RyuJIT and .NET Native are all very good nice toolchain features.

And if I compare Go with the whole .NET stack and tooling, there are lots of things I see missing, in spite of better AOT support across the board.

Post reply on HN