Something I can't help but notice in studying all the software running on my laptop: Basically all of it is there to communicate with us, computing answers to our questions typically takes only about a dozen lines of code depending on the language. If that, usually we're just storing & sending data!

Communicating with humans is by far the hardest task most computers tackle, requiring complex I/O stacks even to render a terminal window!

What is an OS if not a complete I/O stack teaching computers how to communicate effectively with hardware external to the CPU/RAM & the human(s) on the other side? And to ask the question "what may I do for you?"

So maybe I'm biased because I'm studying an OS. But still, I see the same thing in any app I study. Reams & reams of dead obvious UI code backed by very little logic. And when I go job hunting "backend" code is mostly datamodelling, not computation.

@alcinnz it hit home for me how much we take this for granted when I started programming for the GBA. blitting out hundreds of sprites all over the screen using hardware acceleration is actually quite easy; what's tremendously difficult is a "hello world" program that actually puts text on the screen.

@technomancy @alcinnz the GBA hardware is even descended from video terminals and it’s still hard

@alcinnz If your really want to bend your brain on the difference between "application" and "OS" look at embedded versions of Forth.

The compiler literally becomes the OS. Modern (but retro) example: DurexForth.

Sign in to participate in the conversation

For people who care about, support, or build Free, Libre, and Open Source Software (FLOSS).