5 ms·
"systems programming language" doesn't start and stop with bit twiddling one step removed from assembler. There's a huge fuzzy region between that extreme and
by sidlls 9y ago
"systems programming language" doesn't start and stop with bit twiddling one step removed from assembler.
There's a huge fuzzy region between that extreme and "application programming as a semi-skilled trade", and go seems to fill certain "systems programming" needs adequately as far as that goes.
- cft 9y agoLanguages like C and Rust are true system programming languages, and they are not one step removed from assembler. Rust has a very complex compiler. Go is a low level applications programming language.
- sagichmal 9y agoThis pedantic terminology fight about what constitutes a “systems” language hasn’t been worth having since 2009, when all of these arguments were already aired and resolved. Please find another hill to die on.
- BuckRogers 9y agoHe is correct though, at least from the perspective of Go's own designers? Wasn't "systems language" removed from the description at some point. I've listened to interviews with Rob Pike who even outright said they got the messaging wrong there. I think it's pretty well accepted that no systems language has GC. Go is on the same abstraction layer as Java/C#. Everything in text can be taken as a slight, and to ensure that doesn't read that way, I am a believer in targeting that level of abstraction most of the time. I think it's the sweet spot. I'm not a fan of the dual language approach targeting high (Python) and low (C). Java or C# makes more sense to me, for most software. That's my opinion. If I needed more than what those heavy hitters provide, I'd just go all the way and reach for Rust myself. So I don't necessary see the parent comment from ctf as combative. I think he's just seeking accuracy.
- sidlls 9y agoJava has been used as the implementation language for games, high performance servers, message queuing systems, operating systems, and operating embedded devices for goodness sake. It doesn't get much more "systems-y" than that. Go is surely at least as suitable for these uses. I think the other commenter is correct: it seems like a semantics argument, and a rather pointless one at that.
- cft 9y agoYou cannot really write an operating system without manual memory management. That's why Go is not a systems programming language. It does not diminish Go advantages: I would personally prefer it as an application programming language to Java.
- pjmlp 9y agoCompletely false, there are several research OSes with kernel level GC. I suggest reading Project Oberon source code, it’s freely available.
- BuckRogers 9y agoI can't speak for the parent but he did say "cannot really". I would assume due to that he's aware you can write a research project in it. At one point, I thought Windows was to move to .Net even and MS backed out in the end. Back to Go, for anyone else reading this thread and wondering what Rob Pike thinks it is, evidence of them removing "systems programming" off their website is here. He explicitly states that he regrets it and that Go is not an OS writing language[0]. Andrei Alexandrescu offers a litmus test shortly after with a property of a systems programming language that Go also fails. If the creator of a language says it's not a systems programming language, I'm not sure how it can be argued by outsiders that it is. If there's more damning evidence that Go is not a systems programming language, I couldn't imagine what that would be. A shortlist of systems programming languages that would pass any litmus test would include C, C++, D and Rust. [0]https://www.youtube.com/watch?v=BBbv1ej0fFo&feature=youtu.be&t=6m44s https://www.youtube.com/watch?v=BBbv1ej0fFo&feature=youtu.be...
- deleted 9y ago[deleted]