Sunday, June 15, 2008

Peeling the Onion

Breakdown of a computer: Practically speaking, a computer is a collection of useful software applications. Software is just arranged 1s and 0s inside of complex hardware. Complex hardware is made of smaller simple pieces of electronics and machinery working together in a predictable manner. A predictable physical item can be simulated in a computer program.

Rewind.

It's possible to make a computer program emulate the basic pieces of hardware. You could use such a program to arrange basic elements into complex hardware. You could even make this program able to run software like a computer does.

So what have we made? Well, mainly the world's slowest and most inefficient computer. But also a learning tool where you can see any part of a computer. You could see and manipulate any piece and understand how these magical machines work.

softHARDsoft is an experiment to create such a program.

Notes:
  • This is not the same as making an emulator. An emulator is a black box that acts identically to the object it's imitating. Behind the scenes, it can use any means. Recreating the innards of a computer, as is the goal here, is much more specific and detailed. [For example: the clock display on Windows is a clock emulator. It does something behind the scenes and displays the time. Windows doesn't have a program to shift each spring and gear that would be found inside a clock.] In fact, I may create an emulator first at some point to solidify my interface or make a proof of concept before recreating the insides. The very base hardware pieces will be emulators because I'm not reconstructing physics itself to make them work.
  • sHs will be open source. License yet to be determined.
    [UPDATE: See the Licensing post]
Disclaimer: I do not have a computer-related degree and am in no way an expert on any of this. Although I've been a professional software engineer for years, I'm still merely a self-taught programmer. The ambitious goals of softHARDsoft will go far into the realms of computer science and potentially into electrical engineering. Everything here is for my personal hobby which I hope will attract other enthusiasts. At any point, if it seems like I'm totally out of my league -- I am. I'm sure there will be times I'll be completely wrong on some things. At these times I hope others will help me out. But I don't want my inadequate starting qualifications to stop me from enjoying the experience or from learning as much as I can.

I highly recommend that anyone unfamiliar in matters of low-level hardware start somewhere other than here. I recommend Charles Petzold's Code: The Hidden Language of Computer Hardware and Software but a brief trip through Wikipedia or HowThingsWork [1] [2] would also be a good first step.

* Regarding the image at the top of this post: it's a combination of an ouroboros (a snake eating its tail) and the circuitry diagramming symbol for a transistor. The recursive idea of a snake eating its own tail seemed appropriate for this "software inside hardware inside software" theme.

0 comments: