3 ms·
So another way of saying this is consider the space of languages where * control over memory use and layout (in contrast java is a pig over memory usage) * so
by kevinfat 5y ago
So another way of saying this is consider the space of languages where
* control over memory use and layout (in contrast java is a pig over memory usage)
* some kind of easy way to use multicore (goroutines with channels or something else)
* speed, good cpu utilization
* garbage collected for ease of use
How many mainstream languages actually fit these criteria when Go came out? None? And how many fit these criteria now?
- sblom 5y agoGo was definitely ahead of the curve on a few things. I'd argue C# was there (or very very close). C# has had value types (and fine-grained memory layout) since the beginning, reified generics since .NET 2.0, and also (lesser-known fact) raw pointer support (inside `unsafe {}` blocks much like Rust's approach). This was all motivated by interoperability with native code (mostly Win32 or other C-like ABIs & COM). In 2009, the concurrency paradigm in .NET was more like promises and not quite as slick as goroutines. async/await wasn't born until 2012. It wasn't on your list, but I'll toss in another point that works in favor of your original claim. ;) The main C# project also wasn't TRULY multi-platform until 2014.
- invalidname 5y agoTo be fair Java has made some strides in memory usage. GraalVM reduces it a lot and with Valhalla (and to some degree Loom) it should be more competitive on that front (and others) with other languages.
- bberrry 5y agoI'd like to add the recent addition of ZGC as a massive benefit the JVM. Pause times always measured in microseconds regardless of heap size. No other GC:ed language has that capability as far as I know.