4 ms·
Go isn't systems programming language. As soon as you enforce gc built-in to language, it seizes to be systems programming language.
by sytelus 9y ago
Go isn't systems programming language. As soon as you enforce gc built-in to language, it seizes to be systems programming language.
- pjmlp 9y agoTell that to Niklaus Wirth, Alan Kay, Joe Duffy, Luca Cardelli and quite a few other industry luminaries.
- sytelus 9y agoGo being paddled by industry hot shots doesn't change the facts. A language designed for systems programming must have precise control on everything that goes on. When you are dealing with thousand threads on 100s of cores, every microsecond counts. When you are designing control software for aerial vehicles on embedded devices doing stuff in ISRs, every thing needs to be predictable. No one in their right mind will rely on gc in that kind of systems programming world.
- abiox 9y agothis is a narrow and arbitrary definition of "systems programming". you seem to be describing something closer to hard realtime computing, which is not the same thing.
- dboreham 9y agoSeriously? He's using the term in exactly the way everyone uses it, even Wikipedia : https://en.wikipedia.org/wiki/System_programming https://en.wikipedia.org/wiki/System_programming
- abiox 9y agoif you read your link, even the wikipedia article authors do not restrict the notion to hard realtime computing. it's not really how "everyone" uses it. it's a narrowing that a subset of vocal people have been trying to push, i can only presume for ideological purposes.
- vvanders 9y agoThat's one aspect, the other is targets with small(<10mb) footprints where GC falls over spectacularly when you don't have 2x your working set of free memory. These aren't uncommon targets, the PSP traditionally had 8mb of system memory. Lots of embedded routers and "IoT" things, etc. Part of this is confused by everyone having a different definition of "System Programming". In my view if there's a target where hardware constrains prevent suitable performance from a language then that language isn't fit to be considered a "System Programming" language.
- pjmlp 9y agoA systems programming language is any language usable to write a full OS with it. http://www.projectoberon.com http://www.projectoberon.com The only thing that Go lacks in regards to Oberon are a few intrisics in the unsafe package, easily doable in Assembly, just like ANSI C requires on its libc for bare metal programming.
- lodi 9y agoBy that definition Haskell is a systems programming language: https://en.wikipedia.org/wiki/House_(operating_system) https://en.wikipedia.org/wiki/House_(operating_system)
- pjmlp 9y agoOf course. C gets put into a pedestal, yet it is impossible to write an OS in pure ANSI C, without making use of language extensions or Assembly.
- katastic 9y agoPeople who are suggesting a GC language for systems programming have literally never tried it. They're just repeating slogans they heard someone else say. Anyone who had wouldn't dare suggest it's easy or a perfect candidate for the job. I've done it and it's a pain in the ass. Why? Because the GC is _non-deterministic_. On many languages it can fire up at any time, freeze your threads at any time, and take however long it wants to. "But it usually doesn't take that long!" And? AND? The problem is, you've immediately added a blackbox thread attached to all your data. Enjoy having your program segfault in areas that are completely unrelated because the GC didn't run the finalizer till later. Enjoy having to fix a bug that doesn't have a repeatable effect. You're automatically writing multi-threaded code (and all the complexity that entails) even when you have a single-thread. A GC adds an entire dimension to bug fixing and potential failure points. Every bug, multiplied by every possible interaction with the GC. This is something that systems programming usually cannot afford. You need to be able to prove your code won't crash. And that's one more thing. Tons of systems code pre-allocates everything for that crash reason. So what problem is GC actually going to solve when everything is already carefully pre-allocated? It really sounds like people who aren't used to unmanaged languages are simply projecting their fear of the unknown. I use both types on a daily basis, and to me they're just "the right tool for the right job." I would never try to shoehorn the wrong tool into an ill-fitted application just because I like that tool.
- vvanders 9y agoYup, don't forget the fact that you'll end up doing pooling, free lists and the exact same performance tricks you'd need to do if you managed memory explicitly. You're adding a ton of incidental complexity for a benefit that you can't take advantage of(programmer productivity) because you don't have the necessary resources to make it happen(large swaths of memory and > 50ms response times).
- katastic 9y agoI love that nobody actually countered my arguments but I'm still negative karma. Seems to be a trend on HK if you dare mention a "hot topic."
- 9y ago
- nice_byte 9y agooh sorry i didn't know oberon ever amounted to anything
- oblio 9y agoBut was that due to inherent flaws or due to the hype driven industry we are part of? "Look, Rails is so cool and magic and powerful and DHH is so hot", basically.
- dboreham 9y agoLuminaries are not typically burdened with the task of making stuff that works.
- pjmlp 9y agoExcept that they did, just to have their work killed by politics.
- davidcuddeback 9y agoInstead of appealing to authority, maybe you could link to some actual arguments by these luminaries. If you're interested in Rob Pike's take on Go, he expressed regret over initially calling Go a systems programming language, because it gave people the impression that it was appropriate for writing operating systems. He prefers to call it a "server writing language" or a "cloud infrastructure language." @6:45 in this panel discussion: https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/Panel-Systems-Programming-Languages-in-2014-and-Beyond https://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/Pa...
- pjmlp 9y agoYet Google just wrote Fuchsia's network stack and filesystem drivers in Go. As for the links they are easy to find on my comments history. I don't have to repeat them all the time the anti-GC crowd comes to town.
- AnimalMuppet 9y agoDepends. Do you want to educate, or just to rant? Note that the set of people who read your post today probably includes people who did not read your previous posts on the topic.
- dboreham 9y agoWonderful pun : "seizes".