7 ms·
Go, a language with garbage collection and a compiler that does only an average job at optimizing machine code, is now considered low level?
by jb1991 2y ago
Go, a language with garbage collection and a compiler that does only an average job at optimizing machine code, is now considered low level?
- deleted 2y ago[deleted]
- pjmlp 2y agoIt is as high level as C, unless you consider all non ISO extensions part of the language, in which case, any language can have similar extensions. There are more compilers by the way.
- jb1991 2y agoLast I checked, C was not garbage collected.
- pjmlp 2y agoSo what? Here is a kernel writen in a GC enabled system programming language. https://people.inf.ethz.ch/wirth/ProjectOberon/Sources/Kernel.Mod.txt https://people.inf.ethz.ch/wirth/ProjectOberon/Sources/Kerne... Or do you rather have one in Go? https://www.phoronix.com/news/TamaGo-Bare-Metal-Go-ARM https://www.phoronix.com/news/TamaGo-Bare-Metal-Go-ARM
- jb1991 2y agoOK, so it sounds like you are confirming an answer to my question, that Go, a language with garbage collection and a compiler (at least its most popular one) that does only an average job at optimizing machine code, is now considered low level.
- pjmlp 2y agoyeah, it has always been as low level as something like Cedar in Xerox PARC, and just as high level. Or just as low level and high level as Interlisp-D at Xerox Parc. As plenty of other languages. If you want actual low level code, that is Assembly, and even that depends if the underlying CPU is a pure hardware implementation, or makes use of microcode and is for all practical purposes a mini-interpreter/JIT in hardware.
- jb1991 2y agoThat’s a fine analysis, but most people have a more generally accepted definition of what low-level means in a context of modern systems programming languages. I suppose you have provided an alternate definition, but it’s not really in the context of what most are thinking about in this arena. It’s a bit like a podcast I listened to recently where someone suggested any language with a proper algebraic sum type can be considered a dynamic typed language in some ways. I mean, if you get philosophical about definitions and lean heavily mainly on historical context, it’s possible to say just about anything.
- pjmlp 2y agoAnd some people call themselves engineers after a bootcamp, instead of actually earning a Software Engineering accreditation. "C Is Not a Low-level Language Your computer is not a fast PDP-11" https://queue.acm.org/detail.cfm?id=3212479 https://queue.acm.org/detail.cfm?id=3212479 Naturally those people will also vouch that an article on the ACM, written by a one of the GCC Objective-C and GNUStep early contributors, and nowadays key researcher on CHERI project isn't something to take into consideration.
- probablybetter 2y ago... but, garbage collection, no direct memory management = impossible to write any firmware etc that needed to directly set bitflags and such. how could you call Go "low-level systems programming"? Relative to Ruby, an interpreted dynamic language, sure, I will grant you that Go is lower-level, in the sense that you can compile a binary executable from it. Go also happens to have web server primitives in their standard library and you COULD build a web app with only net/http...