Saturday, February 11, 2006

Why Linux? (Part One)

I am often asked, "Why do you use Linux?" My usual, flippant answer is, "Why not?" But in this post, I will explore my own reasonings for making the switch to Linux.

Many ages ago, There was no such thing as a Home, or Personal, Computer. A computer meant a Mainframe, or, if you were able to function with a smaller system, a Mini. These computers filled whole rooms of the commercial buildings they were housed in, and were tended to by an elite priesthood that could speak the language of that computer, and make it do their bidding. Gradually, the secrets of the priesthood began to leak, and spread, as the power of these systems became more available to more businesses.

One of the first secrets to leak was the language used by the computers. Originally, this "machine language" was unique to each computer, but as more and more were built, it became obvious that it was more cost-effective for each manufacturer to use the same (or at least, similar) machine language for each system they built. Now, they no longer had to remember esoteric codes made of ones and zeros, but could create human-readable instructions that any of their computers could translate, and run. Thus, IBM had their Basic Assembly Language (BAL), Honeywell had the General Macro Assembler Program (GMAP), etc. Now, and IBM programmer, for instance, could write a BAL program, assemble it, and run it on any IBM mainframe.

But Assembly languages were just direct correlations between machine code and human readable instruction sets. A significant improvement, yes, but how do you express business rules in machine language? How can you write scientific algorithms when it can take pages of Assembly code to do one small part? "Higher level" languages were needed. But to be most useful, a program written for, say, IBM, should be able to be recompiled and run on a Honeywell, or a Burroughs, without needing major re-writing. So the major computer makers, and their customers, got together in different groups over time, and hammered out some language specifications they thought would serve their needs. And in a spirit of cooperation, they made these specifications "standards", so that the engineers knew that if they followed the standards, their program would run on any machine that also followed the standards, whatever the underlying machine code looked like.

The first computer language I learned, back in the mid 1970s, was one of these: FORTRAN IV. My programs were written to run on an IMB 360, but years later, I compiled and ran one of them on a Honeywell 68000, just for grins. It worked perfectly. Shortly after learning FORTRAN, I learned a new language making the rounds, The Beginner's All-purpose Symbolic Instruction Code (BASIC). This was another standardized language, with every vendor holding to the standard implementation. Sure, many vendors provided "extensions" to the language, to make it run even better on their hardware, but a programmer always knew that if he stuck to the standard instruction set, his code would run on any computer that supported the language.

Eventually, I graduated from College and received a commission in the USAF. About the same time, a new idea was starting to spread around the country: Home Computers. Largely the result of the miniaturization efforts of the space program, simple computers could be made that no longer needed racks of vacuum tubes, and rooms of specially cooled and conditioned air. For about the price of a new car, you could actually buy one that would fit on your desk!

Prices quickly started to come down, and in 1980, I bought an Atari 400, with 32K of RAM. This machine had a flat panel for a keyboard, and used your television set as a monitor. I soon purchased a second-hand Atari 800, with 48K of RAM, and a regular, full-sized keyboard. With these, I happily banged away, writing Basic programs (mostly simple games), and learning about the ways computers worked, even writing my own 6803C Assembler In all of this, I was assisted by a community of other programmers, freely giving their advice, and dispensing their knowledge, via books, magazines, and Bulleting Boards accessed by a 300 Baud modem.

In addition to Atari, Commodore was selling home computers (most notably the C-64), Radio Shack had the TRS-80, Texas Instruments had one, and many other companies joined in, as well. We all played happily together, learning about these marvels, and sharing our knowledge. Even Apple played along, with its Apple ][ systems. Then, one day, IBM and Microsoft introduced the IBM Personal Computer.

My initial, gut reaction was, "There goes the neighborhood."

2 comments:

  1. Hi Jen! I almost missed this post. ;-)

    Yeah, the Apple][e *did* compete for a while, but it was more expensive, and it *wasn't IBM, so not enough people bought it.

    It was a nice system, though....

    ReplyDelete