4 ms·
> Go is a Wirth lineage language too. Is this commonly accepted? I thought it came off the better-C camp, plus GC.
by tannhaeuser 5y ago
> Go is a Wirth lineage language too.
Is this commonly accepted? I thought it came off the better-C camp, plus GC.
- pengaru 5y agohttps://en.wikipedia.org/wiki/Limbo_(programming_language) https://en.wikipedia.org/wiki/Limbo_(programming_language)
- mseepgood 5y agoSee Robert Griesemer's talk on "The Evolution Of Go" https://www.youtube.com/watch?v=0ReKdcpNyQg https://www.youtube.com/watch?v=0ReKdcpNyQg https://go.dev/talks/2015/gophercon-goevolution.slide https://go.dev/talks/2015/gophercon-goevolution.slide > In 1960, language experts from America and Europe teamed up to create Algol 60. > In 1970, the Algol tree split into the C and the Pascal branch. > ~40 years later, the two branches join again in Go. https://go.dev/talks/2015/gophercon-goevolution.slide#29 https://go.dev/talks/2015/gophercon-goevolution.slide#29
- pjmlp 5y agoYes, not only did Robert Griesemer work under Niklaus Wirth assistence doing a PhD on an Oberon variant, the Go method syntax is based on Oberon-2, and unsafe meta-package is pretty much UNSAFE package from Oberon/Modula variants. Then you merge that with Limbo's syntax and channels, and you more or less get Go.
- p_l 5y agoArguably it's more a comeback from Alef, this time with GC faction winning. (C begat a bunch of research languages, those begat Alef, a conflict about whether to add GC led to Alef dying and its features reimplemented as Plan9 libraries with side effect of Limbo, years later Go is built on top of Plan9 C compiler & runtime with syntax sugar for Alef-derived libraries).
- pjmlp 5y agoSure, still neither of them have Oberon-2 method syntax nor UNSAFE meta package. Plan 9 compiler was used as means to quickly get a prototype running, and naturally Rob Pike knows the toolchain quite well. I also agree with the Alef remark.
- p_l 5y agoThe legacy of Plan9 compiler stack still remains despite being rewritten purely in Go - I'd say that Pike liked his previous design :)
- monocasa 5y agoLol, I actually realized that the other day, hacking on the golang compiler. The amd64 cpu instruction definitions are in a file called asm6.go and I was all "wait a minute, I recognize this from plan 9", where the amd64 compiler, linker, and assembler are 6c, 6l, and 6a respectively.
- p_l 5y agoBefore Go 1.5, it would literally keep around an alternative port of Plan9 C compiler plus all core system libraries, and I think it still does for C ffi
- e12e 5y agoThere's a lot of Pascal in go's approach to compiling/modules etc. I'm not sure I can agree there's a lot of Pascal in go syntax. If you removed the c pre-processor and translated (the syntax of) a Pascal program to C, I imagine it might look a bit like go if you squint? I'd say go is to Pascal and C as Javascript is to Scheme/Self and Java.