PART 3: Silicon Wars: The Attack of the CodesPART 3: Silicon Wars: The Attack of the Codes
While the hardware technology was growing like a wild fire, so was the software growing to keep pace with it. In many cases, the software exceeded the capabilities of the hardware. This latter kept customers going back for more. They wanted the latest and the greatest. Software compilers and interpreters had grown extremely sophisticated as the high-level languages added new keywords to interact with hardware such as mice, audio, disk drives and color graphics.
The ANSI standardized C language added several “standard libraries” to leverage the features of the new IBM PC. It grew so much that it was renamed C+. Two languages had grown out of one. After even more exponential growth of the standard C library, it became the language we see today known as C++. Many of these newer libraries were developed specifically for the MS Windows multi-tasking environment. At last it seemed that the computer market was settling down to a single Operating System.
But a single OS was not in the cards. While all of this growth and evolution took place with the IBM PC, its’ chief rival from Apple Computer was the Macintosh. The “Mac” always seemed to be at least one step ahead of the “PC” in terms of technological features. After all, Apple had introduced the personal computer to the world in late 1976 with the Apple I, and the following year with the legendary Apple II. The IBM PC was not introduced until 1981.
These two computer giants began a marketing war that has lasted 40 years, with no end in sight. Apple Computer began with a slight technological lead, and still seems to have one. Features that initially appeared on a Mac, eventually found their way onto the PC. The most significant of these features was the GUI driven Operating System, or graphical user interface. After much litigation, the PC had its own GUI driven OS. Because of the numerous PC clones, IBM lost market share and eventually sold its’ PC division. But, the battle continued.
Each of these personal computers initially used different microprocessors, with distinctly different designs. Each CPU design reflected an emphasis on tasks the CPU could be asked to perform. The PC initially used an Intel design that relied on software interrupts, while the Mac initially used a Motorola design that relied on hardware interrupts. Each had arguable advantages and disadvantages over the other. The Motorola design was faster with most programs with intensive Input/Output, I/O. The Intel design was better suited for crunching larger amounts of data that met certain characteristics.
As the respective hardware improved in speed and performance, these distinctions tended to blur and fade away for the user. Today, the differences are all but moot. The end product of the decades of competing technologies was that this resulted in various high-level languages being written and evolving on each platform. There were even personal computers introduced that used the other CPU. The languages and hardware for each design had become so complex that specialists were needed to write commercial programs for the personal computers. These specialists of the past have grown in today’s software developers.
Still, the same old beast could raise its’ ugly head. The problem of cross-platform development still existed. Commercial software vendors had to hire teams of specialists for each platform. Writing software was tied to the platform for which it was targeted. Vendors had to select a language to use. Most found themselves with libraries of identical programs written in different languages. This was undeniably inefficient. There had to be a better way.
As the two hardware platforms grew out of the pack to become industry leaders, a similar revolution was occurring with the application software. One giant that emerged was Microsoft, which had intimate ties to both Apple and IBM with the introduction of each manufacturer’s initial personal computer. The Apple II was introduced with its’ own unique DOS and a version of BASIC known as AppleSoft, which was written by Microsoft. The IBM PC was introduced with an OS known as PC-DOS and a version of BASIC known as PC BASIC, which were both written by Microsoft.
With the introduction of the PC hastened the end of the relationship between Microsoft and Apple. Apple introduced a more sophisticated personal computer, to compete with the now superior IBM PC, known as the Macintosh. The Mac had its’ own software and OS written exclusively by Apple. The “open architecture” Apple II experience caused Apple to keep the Mac as an “open architecture” design, which served to only feed the war between the industry leading designs.
Software specialists, as they were then known, soon found themselves moving from one commercial software vendor to another. Software written for one platform using a given language had to be completely re-written from scratch to work with another language. Automated translation from one language to another was still a long way in the future. Vendors needed special specialists.
Microsoft was making record profits from the PC platform and decided to make a move that would help secure the future of software development on the PC by relieving the strain and cost of the development process. Microsoft began selling software development packages in various high-level languages.
Initially, the development packages were not exactly compatible with one another. In time, it became possible to call assemblies written in one language from an assembly written in another. As software became more sophisticated, so did the bugs, and so did newer, bigger problems. Mechanisms had been put in place in the OS to allow software vendors to update their software assemblies by replacing them. These mechanisms left most software vulnerable to hostile software with the growth of the Internet. The code was attacking the hosts
But, as computer security became an ever-larger problem, it grew increasingly apparent that the Operating Systems needed to undergo a major overhaul in how they operated. This meant that the computer languages used to develop commercial applications would initially need to undergo a similar change. Not until the commercial applications changed how they operated, could the Operating System change how it operated in order to make itself more secure. This is when Microsoft introduced the .NET Framework.