The Fruits of Civilization (11-1-5) Software continued


The inflexibility and inconsistent quality in software products indicates an industry struggling with technical faculty. As software is entirely a construct of the mind, the implication is obvious.

A programming language has direct effect on programmer productivity and software quality. The robustness of code and the ease of its reuse is an indicator of language quality.

By their nature, object-oriented languages offer the promise of an unparalleled potential for code reuse. That is precisely why OOP overlays were ubiquitously made on older languages.

But OOP does not necessarily facilitate code reuse. C++ is exemplary. Experienced C++ programmers consider code reuse mostly hype. Yet, because of its implementation of polymorphism, OOPC made code reuse trivial if not downright automatic.

Language libraries, which are ultimately dependent upon the chosen language’s capabilities, also hold great potential for rapid development of sturdy software: that is, being able to quickly program without creating bugs. The quirkiness of many software products shows that this remains a problem within the industry.

 Software Swell

640 k ought to be enough for anybody. ~ Bill Gates in 1981

Early microcomputers had a paucity of memory. Bitmapped GUIs became feasible as RAM grew less expensive. The original 1984 Macintosh had 128 kilobytes.

The Macintosh II, introduced in March 1987, was the first personal computer to support color. Color requires greater display memory capacity. The standard memory complement for the Mac II was 1 MB, expandable to 8 MB.

Since then, RAM capacities have soared as the cost of memory manufacture has plummeted. Low-end personal computers now have at least 4 GB.

The memory use of applications has also ballooned. The simplest program now takes many MB, and everyday office applications can require over 100 MB to run.

Thanks to the plethora of scripts attached to web pages nowadays, web browsers chew through hundreds of megabytes with just a few pages showing.

Further, despite thousand-fold increases in CPU processing power since the late 1980s, personal computer program execution speed is only modestly faster. The hardware giveth and the software taketh away. The reasons are 2-fold, with an ultimate singular cause.

1st is the fact that the OS does not share all that it has, and the application programming interface to do so can be bothersome. As code reuse is limited, applications must duplicate code that is within an operating system. Every application that does significant word processing has its own text engine, as does the OS; likewise for graphics processing.

2nd is the sloppiness with which modern compilers translate programmer-written source code to machine-executable instructions. C produces tight executable code, as did OOPC. C++ does not.

C++ and other languages do nothing to engender code sharing between an OS and applications. In contrast, the Silon technology developed by Electron Mining using OOPC makes an operating system a full-fledged platform for application programs: a programmer need only add the incremental functionality that makes an application unique.

Software owes its bloat to the language used to write it.


Software is a great combination between artistry and engineering. ~ Bill Gates, who thought Basic was a great language before he had Microsoft adopt C++

Microsoft Windows and Office products, programmed in C++, show a visible accretion of features via inconsistencies in the user interface. Many old bugs remain unfixed. These problems owe considerably to the language employed, which makes code maintenance difficult. As Microsoft proves in spades, object orientation is no panacea if done poorly.