3 ms·
> Heck, go is billed as a systems language and it's GC'ed! That would be crazy 20 years ago. Modula-3 was a systems language with GC that was released in the l
by groovy2shoes 10y ago
> Heck, go is billed as a systems language and it's GC'ed! That would be crazy 20 years ago.
Modula-3 was a systems language with GC that was released in the late 80s. It could be disabled for applications that couldn't benefit from it, but in the long run it helped Modula-3 be a much safer language for systems programming than anything with manual memory management. After all, most "systems programs" aren't OS kernels anyway.
Even if I were to write an OS in Modula-3, the first thing I'd do is write a real-time GC as an `unsafe` module (possibly mixed with some assembly), then write the rest of the OS such that it can make use of that. Hell, modern machines have so many cores that it might not be crazy to dedicate a core to a concurrent GC. There are also GCs that allow programmers to set a cap on latency, and the GC always ensures that it returns control before the cap is reached [1].
Given the considerable amount of research that has gone into writing operating systems in managed languages (Lisp, Oberon, Haskell, C#, ...), it doesn't seem particularly crazy to me today. Besides, there are plenty of other reasons to dis Go :p
[1]: http://www.cesura17.net/~will/Professional/Research/Papers/boundedLatencyGC.pdf http://www.cesura17.net/~will/Professional/Research/Papers/b...