|
|
|
|
|
by kevinfat
1571 days 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? |
|
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.