Live data from Hacker News

What Is Systems Programming, Really?

willcrichton.net

61–70 of 93 posts

Re: What Is Systems Programming, Really?

#61
post #52

Earlier quoted context omitted.

Different goals. Chapel is a strongly typed language designed from the ground up to replace C++ and Fortran for HPC programming in cluster environments, while removing the typical unsafe features from C and C++. Initially designed by Cray, Intel has also given an helping hand. My experience is only from language geek point of view, reading the papers. Chapel Implementers and Users Workshop 2018 papers https://chapel-…

> strongly typed language designed from the ground up to replace C++ and Fortran for HPC programming ... sounds like Julia to me ... > ... in cluster environments this is where it may be differentiating itself, AFAIK Julia has not been very focused on clustering from start, but I'm assuming it's now getting better.

Hasn't Julia focus been MATLAB folks mostly?

In any case, the more the merrier. :)

Re: What Is Systems Programming, Really?

#62
post #54
post #20

Earlier quoted context omitted.

So then C is cheating by your definition, because it is impossible to implement ANSI C standard library without using Assembly or compiler extensions.

that's what -ffreestanding and others (-nostdlib) are for. C is not cheating, the compiler assumes you work on user level stuff. Want to write bare metal (kernel) then you need to tell the compiler.

Right, as mentioned on my comment, compiler extensions.

Strictly speaking that isn't proper C as defined by ISO/IEC 9899:2018.

Re: What Is Systems Programming, Really?

#63
post #52

Earlier quoted context omitted.

Different goals. Chapel is a strongly typed language designed from the ground up to replace C++ and Fortran for HPC programming in cluster environments, while removing the typical unsafe features from C and C++. Initially designed by Cray, Intel has also given an helping hand. My experience is only from language geek point of view, reading the papers. Chapel Implementers and Users Workshop 2018 papers https://chapel-…

> strongly typed language designed from the ground up to replace C++ and Fortran for HPC programming ... sounds like Julia to me ... > ... in cluster environments this is where it may be differentiating itself, AFAIK Julia has not been very focused on clustering from start, but I'm assuming it's now getting better.

[deleted]

Re: What Is Systems Programming, Really?

#64
post #42

Irrespective of language and framework, if the code needs to be aware of underlying hardware then it is systems programming. ex. kernel code, user-space drivers, databases, portions of cloud or server code which need to be hardware aware, etc. What golang targets, I think, should be more of middleware or service-level programming, whether its containers or servers.

Alan Perlis has a thoughtful way of expressing this: “a programming language is low level when its programs require attention to the irrelevant.” At first I thought it was poking fun; now I see it as a comment about what is relevant at a given level of abstraction.

[deleted]

Re: What Is Systems Programming, Really?

#65
post #61

Earlier quoted context omitted.

> strongly typed language designed from the ground up to replace C++ and Fortran for HPC programming ... sounds like Julia to me ... > ... in cluster environments this is where it may be differentiating itself, AFAIK Julia has not been very focused on clustering from start, but I'm assuming it's now getting better.

Hasn't Julia focus been MATLAB folks mostly? In any case, the more the merrier. :)

I think the idea is for it to be both machine friendly and MATLAB/python users friendly, by bringing the best of Fortran into the modern world and with a good type system. The types are very machine oriented but with nice abstractions to easily allow polymorphism.

Re: What Is Systems Programming, Really?

#66
post #46

Earlier quoted context omitted.

Lots of languages (like C#) allow pointers, but only inside blocks explicitly declared to be unsafe. void DoSomeUnsafeStuffHere() { // regular code here. pointers verboten. unsafe { // pointery stuff here } } I think that is equally clear, if not even more. And again: I don't think this is any more polluting than weird out of place PEEK/POKE statements.

That is true, my point was that for C and C++ that is not clear at all. You cannot simply search for & and * regarding point operations because those are also valid numeric operators, thus with context dependent meaning. Being able to search for PEEK/POKE, SYSTEM.PUT/SYSTEM.GET, or just unsafe blocks makes all the difference tracking down unsafe code. Also note that unsafe code blocks is older than C almost for 10 ye…

> You cannot simply search

Which is one of the reasons why in the modern world (of fast CPUs and large RAM) code should be edited using editors that "understand" the language's syntax.

Re: What Is Systems Programming, Really?

#67
post #28
post #6

My idea of system programming is that, other than the "near to the bare metal" element, which may not be always true, has this quality of creating infrastructures for other layers to use. A game 3D engine and a DNS server may be both written in C++ and may use the same low level programming techniques to achieve speed, but the fundamental difference is that one is just part of an application program of some type, and…

I think systems programming should be split in two, honestly. You have the kernel-level systems programming where you need to be near the bare metal, where you write kernels or program microcontrollers with less RAM than a x86 CPU has L1 cache, where taking a microsecond longer can mean the overall system crashing (or even costing a human life). And you have system-level systems programming where you write services a…

It seems a bit telling that you described one as "kernel" systems programming and the other as "system" systems programming.

Re: What Is Systems Programming, Really?

#68
post #6

My idea of system programming is that, other than the "near to the bare metal" element, which may not be always true, has this quality of creating infrastructures for other layers to use. A game 3D engine and a DNS server may be both written in C++ and may use the same low level programming techniques to achieve speed, but the fundamental difference is that one is just part of an application program of some type, and…

Computer systems are only useful because they can run application programs. "Systems programming," therefore, is one that aims to improve the utility of the computer, as opposed to "application programming" which solves concrete problems posed by users.

Re: What Is Systems Programming, Really?

#69
post #67
post #28

Earlier quoted context omitted.

I think systems programming should be split in two, honestly. You have the kernel-level systems programming where you need to be near the bare metal, where you write kernels or program microcontrollers with less RAM than a x86 CPU has L1 cache, where taking a microsecond longer can mean the overall system crashing (or even costing a human life). And you have system-level systems programming where you write services a…

It seems a bit telling that you described one as "kernel" systems programming and the other as "system" systems programming.

Well, I think the distinction is fair, kernel systems programming is largely concerned with things a kernel would normally do (ie, a kernel or µC code), very close to the metal or such. Maybe bare metal systems programming would have been more accurate but I feel it doesn't convey the same meaning.

System systems programming is what it says on the tin; it's about constructing systems, multiple objects interacting with rules on the interaction, etc. An alternative name might be "user space systems programming" though again I think that doesn't convey the meaning as well.

Re: What Is Systems Programming, Really?

#70
I'm curious where Erlang fits into this story. It was built to be a "systems" language but algorithms are tersely implemented (I forget exactly, but I remember reading about a study that an Erlang program is much shorter than the comparable C program), and has gradual typing of a sort. It also is garbage collected (I don't think you could "write your own memory allocator in it", as Andrei Alexandrescu described).
Post reply on HN