Reality → Tech → Computers → Software
Development of computer algorithms preceded the electronic computer and played a crucial role in the explosive growth of the personal computer industry. Babbage was the first theoretician to recognize the need for machine-based memory and coded inputs, way ahead of the technical means of his time (nearly a century later, Hollerith introduced punched cards for automated tabulation, leading to the foundation of IBM in 1911). In the 1930s, Turing described a theoretical machine that implements any logical operation by a sequence of simple read, write, and move steps, laying the foundation of computer science and the post-WW2 rise of mainframe computers. To facilitate learning to program such machines, Darthmore College developed BASIC in the 1960s. When the first personal microcomputer (Altair) hit the market in 1974, it owed its legendary success to the BASIC interpreter (a software to adapt BASIC to Altair's 8-bit processor) developed by Paul Allen and Bill Gates who, on that occasion, founded Microsoft. Sales of home computers and software took off. A second dramatic boost occurred in the early-1980s, when IBM entered the PC market and Microsoft issued MS-DOS.
Today, programmers use high-level programming languages (sets of rules for highly abstract instructional code) to write programs (applications) that are translated by subordinate programs (assemblers, compilers, and interpreters [1] ) into executable machine code with the intervention of yet another highly complex and sophisticated utility program, the operating system. Syntax, semantics, and control flow are essential features of all languages. Hundreds of programming languages serving different purposes on different machines have been developed, but only few gained widespread use and influenced unceasing further development [2] . Modern languages are structured and object-oriented [3] . The heavily interlinked, intriguingly complex yet exceedingly exact code that constitutes software can be grouped into two major categories:
For running a complex program or even a simple command, all input has to be brought to the fundamental level of the binary machine code (0s and 1s) determined by the microprocessor's design. The process involves countless individual steps and the resolution of many compatibility issues posed by different software packages and processor designs. Assemblers are machine-specific programs expressed in machine-readable assembly language, a machine code in human-readable form. Compilers are programs that translate higher-level code into assembly code or also directly into machine code. Interpreters are programs that analyze and execute immediately high-level language as it is being read, while code created by compilers is first stored in memory before being executed.
IBM's Fortran, an early high-level programming language developed in the 1950s, originally targeted scientific computations on mainframes and subsequently inspired many general-purpose languages. COBOL, a business-oriented language, appeared in 1959. Bell Labs's C of the early-1970s was followed 10 years later by C++ and in 2000 by C#. Together, they are among today's most widely used general-purpose languages (not least because of Microsoft's use). Oracle's Java, released in 1995, is a modern cross-platform language that runs on Windows, OS X, and Linux. PHP, also released in 1995, is a popular language for web development, today probably surpassed by JavaScript (W3Schools' choice language to program websites created with HTML and CSS).
Structured programming uses extensively subroutines, blocks, and loops, but tries to avoid simple jumps ('goto'). Object-oriented programming aims to maximize the use of reusable modules in the form of objects that combine data and procedures.
Microsoft Windows is by far the most common operating system for workstations, desktops, laptops and notebooks. Most servers, however, are run by UNIX-like operating systems, including the popular free and open source Linux system. Apple's OS X, a UNIX-derived system, is the most polished and user-friendly system, but has a market share of only about 10 %. Google's open source and Linux-based Android dominates the huge smartphone/tablet market (at about 70 %, while the share of Apple's iOS is about 25 %).
Initially developed by Xerox, the user-friendly, intuitive graphical user interface became popular with the introduction of Apple's Macintosh in 1984, when IBM PC compatibles were running under the command-line Disk Operating System (DOS). Microsoft grew with DOS in the burgeoning PC market and achieved a major breakthrough in 1995 with the release of its GUI-based Windows 95 which, for backward compatibility, was still partially based on DOS.
The operating system (OS) mediates the access of compatible software and controls all hardware components. The kernel, the system's core software component, manages processes, memory, and networks at the most fundamental level. Application programs access these services through interrupts and system calls. The OS also hosts drivers for devices connected to the computer. Booting is assigned to the Unified Extensible Firmware Interface (UEFI), which replaced BIOS.
A modern desktop operating system has tens of millions of lines of code and occupies several GB of storage space. For a list of built-in applications and utilities, see Apple's latest OS.
In the 1970s, word processing machines, outfitted with 8" floppy disks and monochrome CRT monitors, replaced electric typewriters in corporate offices, only to be quickly replaced again by PCs running initially WordStar, then WordPerfect, and finally Microsoft Word.
In 1979, the first spreadsheet program, VisiCalc, turned the Apple II computer into a remarkable success followed by the 'microcomputer revolution' marked by IBM's entry and the 'killer' application Lotus 1-2-3, which after a decade was overtaken by Microsoft Excel.
Concurrently with the Lotus spreadsheet application and the WordPerfect word processor, dBASE became the third dominant application in the burgeoning business software market of the early-1980s. Real-time processing of business transactions increased rapidly with the advent of web-based e-commerce in the late-1990s (the technology can be traced back to IBM's Sabre airline reservation system of the 1960s). Today, enterprise resource planning (ERP) and other business services are provided mostly by SAP, Oracle, and Amazon Web Services.
To create new applications, programmers use applications for software development, ranging from relatively simple programming tools to EDIs and APIs.