4 ms·
Maybe because Go is not a VM?
by nine_k 2y ago
Maybe because Go is not a VM?
- pjmlp 2y agoJava compiles to native code for two decades now, it has always been a matter of how much one was willing to pay for a commercial JDK. “The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.” -- Rob Pike
- nine_k 2y ago> our programmers are Googlers ... They’re not capable of understanding a brilliant language Sounds pretty damning, I'd say. This of course illustrates why Go is called "systems PHP". > how much one was willing to pay for a commercial JDK. I strongly prefer open-source tools at the base of my stack. Not as much because of the money but more because of the level of trust. Things should be inspectable.
- neonsunset 2y agoThat's what .NET is for (both C# and F#) - it has no private implementations (Unity does not count :P). Much more competent compiler too and smaller native binaries. Something you could confidently use in production.
- skinkestek 2y agoThen you have to deal with: - .Net devs (they are almost as annoying as us Java/Kotlin devs) - a language and ecosystem that consistently sacrifice backwards compatibility (contrary to us who have features sacrificed for backwards compatibility at every single step) - you have to live without the JVM ecosystem (on this I have no self deprecating comment, C# is a better language, but the ecosystem, from libraries to build system to IDEs is something I always miss when I work in .Net.)
- neonsunset 2y ago“Contrary to us”? I can’t agree with this attitude. .NET maintains excellent backwards compatibility, C# and F# even more so. The changes either affect frameworks and libraries, which you can often update independently or are easily addressed. Most projects since .NET 5 only ever had to bump the target version and rebuild to move forward (notable exception: in .NET 6 ASP.NET Core introduced simplified API for application setup which required changes). Neither JVM nor Go have the degree of low-level capabilities .NET provides first-class support for. And F# integrates in an easier way into existing C# solutions than Kotlin does into Java ones. It is the GC-based Rust alternative many are looking for but are overlooking due to bias from the past.
- skinkestek 2y agoYes, I'm talking about the platform, not the syntax. It is my feeling that .Net developers with some years of experience get wide eyed when I tell them how I can use any old library that I need together with the newest JVM and my platform upgrades have mostly consisted of bumping numbers.
- neonsunset 2y agoI don't know which developers you talked to. Honestly I should just flag this reply probably. It's nothing surprising in .NET land. If you target netstandard2.0 the library will work on any version from .NET Framework 4.6.1 and upwards. For many newer features there are compat and polyfill pacakges too - that's one of the strengths to be able to use them even on the older targets. All newer targets are forward compatible anyway. Wherever the notion of otherwise comes from it is likely a misunderstanding or trolling. You can't make a serious argument when comparing baseline experience where .NET confidently places next to Cargo and Golang's user experience with the level of productivity it provides for setting up and managing projects and dependencies, building them and distributing them. JVM ecosystem still does not offer capability to properly and easily package the applications into a single binary except using very restrictive GraalVMs Native Image which does not have as wide ecosystem support as NativeAOT enjoys, and where it does not work .NET still gives you the ability to bundle managed assemblies into an executable together with runtime, apply trimming and get relatively compact result.
- pjmlp 2y ago.NET still doesn't have any real time GC, zero pauses GC, bare metal implementations, cloud JIT, a compiler development framework, has lost the mobile OS wars. So I would slow down on the whole Java versus .NET flamewars, regarding who's more competent. I use both ecosystems, because both have plus and minus, and complement themselves.
- desumeku 2y ago"We hire working-class college graduates from the normal population, and not ivy league graduates who have the time to waste on unproductive academic research languages that see no industrial use." Is this what is so damning about Go? The constant reposting of this quote as some sort of attack on Go's validity and reputation reeks of nothing but classism.
- erik_seaberg 2y agoGoogle is famous for tough interviews and accepting a small fraction of applicants. I was impressed with everyone I met, and Pike's "incapable" statement was baseless and insulting.
- onefiveone 2y ago> Pike's "incapable" statement was baseless and insulting. "incapable" != "never capable", especially when talking about fresh college graduates.
- nine_k 2y ago"Unwilling", "have no time", "can't be bothered" are all better than "incapable".
- codr7 2y agoThe complaint is that it was designed for lesser brains and lacks many features professionals expect, and that's pretty much an objective truth.
- desumeku 2y agoThis is a horrifically obtuse and offensive comment just because Go isn't Lisp-y or Haskell-y enough for you. Golang powers large swathes of distributed services and systems all over the world whether you like it or not, because it was designed with a very specific purpose in mind by people far more professional and accomplished than you ever will be.