If I program in many high and low-level languages, but don’t write systems code, I am a quiche programmer or a code monkey. And if my code runs without errors, and I know the complexity of all algorithms; and if my servers have hundreds of cores and gigabytes of RAM, but don’t write systems code, I am nothing. And if I run the hippest kernel, and install the neatest apps, but don’t write systems code, it profiteth me nothing.
Systems code runs efficiently, and is always correct; systems code does not waste memory, nor CPU time. Has no artificial limits, does not leak memory or file descriptors, plays well with other code, holds no surprises. Never does it busy-loop, but always selects or polls. Systems code checks for all errors; expects all signals; retries when needed; recovers gracefully.
Systems code never fails: user programs come and go; applications crash and burn; kernels suffer buggy modules. For our knowledge is imperfect, and so are applications and kernel modules. But when neat systems code is at hand, all upper and lower-level code shall be done away. When I was a rookie programmer, I designed like a rookie, I coded like a rookie, I tested like a rookie: when I became a systems programmer, I put from me my rookie ways. For when we program applications, we see the machine through a monster framework and are puzzled; but when we write systems code we see the kernel face to face. In frameworks and high-level languages performance drains get hidden; in systems code these stare at us even as we stare at them. And so there remain kernel, application, systems code — these three; and of these the greatest is systems code.
Comments Toot! TweetLast modified: Thursday, February 21, 2013 4:04 pm
Unless otherwise expressly stated, all original material on this page created by Diomidis Spinellis is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.