3 ms·
>The rise of a new generation of low-level programming languages like Rust, Go and Zig has caused C and its primitive type system to fall into some disrepute.
by ginko 6y ago
>The rise of a new generation of low-level programming languages like Rust, Go and Zig has caused C and its primitive type system to fall into some disrepute.
One of these things is not like the others. I never understood why Go, being a garbage collected language, is grouped with systems programming languages like C or Rust. If anything its direct competitors performance/productivity-wise are probably C# or Java.
- frou_dh 6y agoC is/was used for tons of Unix userspace programs that have no issue being written in something like Go. IMO this "systems" term has become a red herring and should be retired in favour of just naming concrete domains in a given discussion.
- fulafel 6y agoI guess because it calls itself a systems language and GC works fine for most systems programming.
- stkdump 6y agoWhat is the defining characteristic of a 'systems language', and what is an example for a language that doesn't fulfill it?
- tom_mellior 6y ago> What is the defining characteristic of a 'systems language' The precise technical definition is "whatever the speaker means by it". In other words, it's not a useful term. People will come up with definitions like "whatever you can write an OS kernel/a compiler/a database management system in". So languages like Haskell, OCaml, and Java are certainly included. I don't see why Go shouldn't be.
- fulafel 6y agoWell, systems programming and apps programming are the domains in question, SP is about implementing the platform and infrastructure. There is no single defining characteristic since languages are used cross purposes, it's a term meant to characterise existing engineering practice. But if you really wanted an example of the least likely SP language, I'd say MATLAB or Prolog could be nominated. Lisp and Java have been used in SP roles even though people often think of them as apps languages. Probably most useful is to observe what usage languages see. Eg Go is used for many databases, K8s, gVisor, Docker etc.
- mhh__ 6y agoThe vast majority of programs written in those languages are still relatively simple A->B things like grep or ls was when C was new. Go is a much simpler language than C# and Java - the GC isn't really the point. Everyone likes to think, I can't use a GC for my work - I don't like garbage collection much either, but this is basically religion: it's just a tool, and it's a tool that makes programming easy.