OOP and the Shift in the Approach to Computers
The almost immediate popularity of object-oriented programming was due to the perceived need in the programming community for a new type of software-creation tool. This need was due, in part, to the development of advanced graphics that required more sophisticated techniques to be integrated into programs. Furthermore, the increase in the complexity of applications implied the need for non-linear programming techniques, while the improvement in hardware, such as memory, meant that some compromise bet ween efficiency and convenience of programming languages became possible. The expansion of computer projects, with more and more people working on a single program, meant that greater modularization was necessary to allow the programmers to work in paral lel and improve their efficiency. Finally, entirely new technologies, such as the Internet, required new machinery for solving problems, which was provided by object-oriented programming. [See: History of Programming Languages]
However, there was another force that propelled object-oriented programming into the spotlight. This force consisted of a new vision of computers that materialized in the middle of the 1970's. At this time, computers, which were previously viewed lar gely as huge, expensive, and enormously complicated machines, began to be accepted as covenant tools for small business and even personal use (History of Computers, chapters 9 and 10). Moreover, computers became a part of the popular culture. The general attitu de towards computers changed from the cautious admiration of a Behemoth when large audiences first saw the UNIVAC during the 1952 elections to a culture of programmers/hackers, in which prestige was based on familiarity with computers and the ability to s uccessfully manipulate their innermost, arcane features. Essentially, as computers gained popularity and acceptance, the issue of control [Beniger's Control Revolution] appeared again, but in a different form. Whereas in the early stages of computer dev elopment, the primary issue was the use of the computer as a tool for gathering and processing information and controlling other equipment, such as missiles, the control dilemma of the seventies and eighties was that of control over the computer itself. P>
Thus, as the complexity and power of computers increased and their acceptance in society grew simultaneously, computers took on a persona of their own. Rather than simple tools, computers became both useful assistants and worthy opponents of their use rs. While the Artificial Intelligence Community of the 1950's looked forward to the development of chess programs, in the nineties such programs have engendered heated controversy: the scandal in the chess world over Kasparov's loss to Deeper Blue and su bsequent allegations of cheating were hardly less dramatic than any of the human championship matches.
As computers spread in society, two groups of computer programmers emerged. The first group consisted of professional computer programmers, who needed to be able to efficiently harness the power of their machines. The second group included private us ers, i.e. computer enthusiasts. For these enthusiasts, control over the computer was a question of prestige. The professionals, who were already adept at using computers, needed more advanced software techniques to fully utilize the improving hardware c apabilities. The hobbyists required an approach that would be familiar and easy to learn, yet sufficiently powerful to give them the control they desired.
The development of object-oriented programming was a response to these tendencies. Object-oriented programming built on the new vision of a personal computer as an individual entity. The OOP approach, which delegated responsibilities to objects withi n the program, treated the computer in accordance with its new status. The relative ease of OOP and its similarity to the outside world served a two-fold purpose: they made it possible for enthusiasts to master the computer and for professionals to progr am it efficiently; and they brought the battle for control between the human and the computer closer to the level of the conflict in human interactions.
While object-oriented programming developed as a response to increasing computer complexity and growing needs for computer control, it, in turn, has had an impact on the modern perception of computers. Professional programmers were the first to be aff ected by the development of OOP. Programming in an object-oriented language forced programmers to think of elements of their programs as individual objects that correctly behave on their own once informed how to do so via a set of methods. For an estab lished programmer, this change in the approach to software creation may be quite difficult.
Programmers, however, were not the only ones to be affected by OOP. Ordinary computer users benefited from the OOP-related developments, such as the Internet. Even more importantly, OOP has contributed to a change in our perception of computers. OOP has helped to transform computers from intimidating machines to everyday companions. Because of the impact of the OOP paradigm on computing in general, this simplification does not apply only to computer enthusiasts. For example, it is hardly accidenta l that Smalltalk developer Alan Kay was also one of the contributors to the design of the Macintosh desktop. The seemingly obvious idea that files and folders can be manipulated as individual entities by dragging and dropping them onto each other has its roots in the OOP paradigm. (Alan Kay, Early History of Smalltalk).
However, the increased familiarity with computers and their cultural acceptance often served to exacerbate the programs associated with human-computer interaction and control. The simplicity of object-oriented programming could be beguiling. The use of complex libraries, for example, allowed programmers to write more efficient code at a price. While increasing their efficiency, it also removed them further from the system, once again obscuring the workings of the computer that OOP was supposed to ma ke transparent. By increasing the potential of the computer and bridging the distance between it and its human operator, OOP also increased the perceived competition between the two, and the antagonism that both users and programmers feel toward the powerful machine.