6 ms·
Languages 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
by cft 9y ago
Languages 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...
- pjmlp 9y ago> I thought Windows was to move to .Net even and MS backed out in the end. If you bother to read Joe Duffy's postmortems, and talks he has made about Midori, you will get it had nothing to do with technical issues, rather internal political wars at Microsoft. Also Microsoft did not fully backed out, the outcome of Singularity became the MDIL compiler for .NET on Windows 8.x. Midori influenced async/await, TPL, .NET Native used in UWP and the new low level language features on C# 7.x. > 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. I don't have Go in much high regard, but it certainly can be used for systems programming, and is being used as such today, regardless of what the anti-GC systems language crowd thinks. "G.E.R.T : Golang Embedded Run-Time" https://github.com/ycoroneos/G.E.R.T https://github.com/ycoroneos/G.E.R.T "Fuchsia TCP/IP stack", all network requests go through it. https://groups.google.com/d/msg/golang-dev/2xuYHcP0Fdc/tKb1PgTXAwAJ https://groups.google.com/d/msg/golang-dev/2xuYHcP0Fdc/tKb1P... https://fuchsia.googlesource.com/netstack/ https://fuchsia.googlesource.com/netstack/ "Fuchsia disk management utilities for file systems" https://fuchsia.googlesource.com/thinfs/ https://fuchsia.googlesource.com/thinfs/