Earlier quoted context omitted.
There are less options in golang so its easier to get started or to jump into the middle of a project. For certain classes of problems the golang standard library is dramatically better than the java ones so you don't have to spend as much energy researching alternatives. It tends to perform well by default for web service and/or cli applications. Compared to java it is more terse (though not compared to some jvm alt…
abysmal tooling? ... extremely primitive concurrency support?? Are you talking about Go?
Go 1.6 is Released
231–240 of 367 posts
Re: Go 1.6 is Released
#232Earlier quoted context omitted.
What's your use cases where you've found startup time to be a significant issue?
Long running processes without a lot of events can also deal with "startup issues", in that they won't trigger JIT.
Re: Go 1.6 is Released
#233Earlier quoted context omitted.
What's your use cases where you've found startup time to be a significant issue?
Short-lived processes are an issue, because while startup time can be ok, code won't perform well until it's hot enough to be JITed.
The alternative is a commercial JDK, almost all of them do support AOT compilation.
Re: Go 1.6 is Released
#234Earlier quoted context omitted.
Java SE and a fat jar... checks all the boxes and has generics and superior tooling. I still don't get the Go love.
Go starts very fast compared to jvm. Go compiles into a binary that does not require a jvm to be installed... Go does not require an IDE to develop in... Go is also less verbose
Java also does not need a JVM to installed.
1 - Use a fat jar
2 - Use the upcoming Java 9 linker which bundles everything together
3 - Spend some money and get a commercial JDK with AOT compilation to native code. All the major ones support it.
4 - Eventually Java 10 Oracle JDK will support AOT compilation to native code, but it remains to be seen if will remain commercial only
Re: Go 1.6 is Released
#235Earlier quoted context omitted.
Why GUI though? Go shines for servers, but I would never want to write a desktop application with it though. Especially if I could do it in C#.
Because a C# GUI on Linux or Mac is not very native looking. Also for the same reason some like Go over Java, static binaries instead of requiring JVM or CLR be installed. On another note, because writing programs in Go is much faster than say C++ or C for most use cases.
Re: Go 1.6 is Released
#236Go CSP is minimal and ortongonal, I just wish it did three things: 0. could lto optimize or link against a shared library to reduce the titanic size of compiled programs and cut down on duplication of instruction. Therue is no practical sense in wasting memory and storage on systems with dynamic linkers: edge cases of including the world for rare situations but YAGNI in real production systems. 1. could output flat b…
0. It does dynamic linking on most stdlibs (libc, etc) 1. What do you mean self-hosted runtime? Anyways, golang will likely never be a good candidate for kernel development, but in theory you could do it (go supports assembly) 2. Generics would be nice. Who knows, maybe they'll be in 2.0? Go wasn't developed in llvm, because they wanted to build something very fast, and they were planning on writing the compiler in g…
Oberon, AOS, EthOS, Singularity and Midori projects prove otherwise.
Go just needs an OS research PhD student proposing "Goberon" to their tutor.
Re: Go 1.6 is Released
#237Earlier quoted context omitted.
Yes, I'd say modern Java is a good candidate too. However, the verbosity is a deal-killer for me. Go's error handling can be verbose, but while scanning the code, if I want/need to, I can easily skip through the error handling parts mentally. Java, though, is verbose everywhere. EDIT: Actually mtrn said it better: Java feels over-engineered.
Okay, ditch Java if it's too verbose and adopt one of Kotlin, Groovy (w/ @CompileStatic) or Scala.
Here in Germany you almost don't hear about Groovy anymore in any JUG event.
If it wasn't for Gradle and Android adopting Gradle, I bet we would hear even less about it.
Re: Go 1.6 is Released
#238Earlier quoted context omitted.
> 2. Generics would be nice. Who knows, maybe they'll be in 2.0? There will be no 2.0 and there will be no generics, at all.In fact there will never be any changes to the type system, cause it's impossible at this point.
Not that I even care that much, but that's total crap. Compile-time generics, which is what most people seem to be referring to when they say they want generics in Go, are eminently doable. It would not be hard to implement. Runtime generics are probably possible as well. What are you even basing your assertion on? Edit: What do you mean, "there will never be a 2.0"? Do you have a crystal ball?
Re: Go 1.6 is Released
#239Go checks a lot of boxes for my ideal language for developing web services: Static type, C derived, has garbage collection, generates a single binary, supports concurrency very well, is opinionated, is small/simple, its community prefers to just use standard lib for most work, etc. Yes, Generics is an issue and so is debugging. But, overall, I can't think of many other options that check so many boxes. EDIT: I must h…
For me the big minus of Go is that it is memory unsafe language when it runs with GOMAXPROCS>1 (default since 1.5). It is not that bad like in C as opportunities for bugs are not common, still this is an issue as consequences of such bugs is arbitrary code execution.
Another problem is lack of union types leading to poor code practice when those are emulated through (foo, err) or similar return types.
Re: Go 1.6 is Released
#240Earlier quoted context omitted.
The list of languages that permit that in a principled way is short, and the list of languages where it's a good idea is even shorter. I've come to the conclusion that it's generally not a good idea. (And it's not Go making me say that, it's more Haskell.) Keeping dependencies flowing in one direction seems to be a good plan.
I totally disagree. It's not only a good idea, it's essential for certain core functionality to work at all. Take serialization, for example: without this feature it's impossible to write a good serializer as a library without code generation (messy and brittle) or reflection (very slow). To give another example, try writing a linear algebra library that's generic over the data type without this feature (and such lib…
I disagree. My best, fastest to compile code has always focused on just one type. You mention graphics programming: for 99.999% of the cases you want to pick a type. Usually, this will be float, and thus for SIMD a 4 or 8-vector of these, like https://github.com/aktau/threedee-simd/blob/master/include/t.... Despite the support of recent graphics cards for doubles, the fact is that they are usually quite a bit slower. Even when precision bound, there are usually tricks that will let one keep using floats (esp. wrt to Z-buffers).