Hacker News new | ask | show | jobs
by p_l 2535 days ago
Go is direct successor of a long line of alternative C evolution (Bell Labs didn't stop evolving the language or experimenting with new ones, and Go pretty much initially was a syhtax sugar for Plan9 C and its runtime and style)
3 comments

Then it's a case of convergent evolution then, because coroutines were even a part of Modula-2, and the type of class / interface approach that Go sports looks very much like Oberon's.

I won't wonder if the ideas were circulating between Oberon and Plan 9 communities back in the day.

Griesemer, one of the three original Golang developers, did his dissertation on extending Oberon to, I think, massively parallel computers. Golang has a bunch of constructs that weren't in Plan 9 C; some of the syntactic sugar comes arguably from Oberon, but most of the semantics come from Newsqueak and Alef.
IIRC after Alef went "bust" due to disagreements about GC, its thread semantics got ported to C as libthread, as well as used in Limbo. Then Go kinda resurrected it but with GC?
The end of the line from Plan 9, which tends to be ignored, was Inferno, with a GC userspace implemented in Limbo.

Go at its base is a fusion of Limbo and Oberon-2.

Yeah, I should have mentioned Limbo. But it's been so long since I looked at it that I don't remember what its semantics are like.
The big difference versus Go, is that Limbo is like Java, in the sense that it favours dynamic linking.

Go nowadays supports dynamic linking, but it isn't the default, the plugin package is quite basic and only supported on Linux and OS X..

Go uses Oberon-2 syntax for methods and unsafe is a kind of subset from SYSTEM.