Next: Quasi-intelligent Software Up: Software Previous: Software

Market Forces: Software

Software consists of the operating systems, which control the operations of computers, and programs which run in the operating system on a computer. Let us consider the economic forces operating on the evolution of software. From an economic perspective, most software buyers compare the costs with the services the software will perform, whether computer games at home or work tasks in their home or office.

Consequently, in order to compete, software companies constantly innovate to reduce the cost of creating software. Originally, programs for a computer had to be written in machine code, that is binary numbers for each operation. Because humans do not think in terms of strings of binary numbers, this meant the development of software was a slow, tedious affair. The first innovation in programming was assembly language which substituted a three letter code for the corresponding binary string, such as ADD for the binary string add. In the 50s computer scientists invented FORTRAN, which allowed engineers and scientists to write programs as equations, and COBOL, which allowed business programmers to write programs in business operations.

Since that time computer scientists have developed thousands of languages. The applications programmer generates statements in the language most suited for the application and a translator (an assembler, interpreter, or a compiler) transforms the statements of the language into machine language for execution. One trend in languages is specialization, such as Lisp and Prolog for artificial intelligence. A second trend is to incorporate new concepts, such as structured programming in Pascal. Another trend is incorporate more powerful statements in new languages. For example, being able to perform matrix operations in a single statement rather than write a routine to process each matrix element. Finally, constatnt effort is made to constantly improve the efficiency of the machine code created by translators.

Because it is much easier to automate the production of hardware than software, software development has become the bottleneck in the expansion of computation. One method of making programmers more efficient is to create libraries of subroutines. This means that rather than start from scratch with each program the programmer can write code to emply the appropriate subroutines. Because there is a very large investment in FORTRAN and Cobol libraries and programs, these languages have not been totally replaced by newer languages. Rather new features are constantly being added to these older languages. More advanced is the development is the creation of toolkits for programmers which write standard software for routine operations.

The current rage is the move towards Object Oriented Programming, OOP. OOP can be considered an innovation on the idea of writing code using libraries of subroutines. The new rinkle is to expand the concept of a subroutine to include not only code but also data. The data-code modules in OOP have three basic properties, encasulation, inheritance and polymorphism. Encapsulation means that each module is a self-contained entity. Inheritance means that if you create a module A from module B which contains a subset of the data in A, module A inheritances all the code which runs on module B. Polymorphism means that general code can be applied to different objects, such as draw command to draw both a square and a circle simply from their definitions. A current example of an OOP language is C++. Currently OOP is primarily a concept which will not bear fruit until standards are created.

From the perspective of economics, the concept of OOP is an example of the specialization of labor. OOP improves efficiency because highly skilled, creative programmers will create libraries of OOP modules. Users with some programming skills will then use these modules to easily create their application programs.

Another very important software cost is the cost of learning how to use an application program. For example, how long do you have to send a secretary to school to use a new wordprocessor effectively. As computer memories grow and computers become faster, part of these increased memory and speed are used to develop operating systems and application programs which are much easier for the final user to learn how to use. While in large computer systems the trend has been to develop interactive operating systems so that many users can interact with the computer at the same time, the trend in personal computers has been to develop visual icon, mouse driven operating systems. The great advantage of an icon based operating system is that it is intuitive to man, a visual animal. Moreover, Apple has insisted all software developers use the same desktop format in presenting programs. While such a strategy meant that a considerable portion of Macintosh resources were devoted to running the mouse, icon interface, Apple was successful with the Macintosh because the user does not have to spend hours over manuals to accomplish a simple task. With Windows the PC clone world is imitating Apple. As I understand in the next version of Windows should be as easy to use as a Mac.

In a similar vein, software developers constantly try to reduce the users labor costs in using application software. One example is the trend towards integrated software. At first, it was very time consuming and labor intensive to transfer information from one type of software program to another. The user had to print out the information from one program and input it to another. Today in packages called office suites word processors are integrated with such programs as spreadsheets, drawing programs, and file programs to automatically transfer of information from one type of program to another. The frontier in integration is creating software which facilitates group interaction in networks of computers. An example here is Lotus notes. Integration simultaneously makes software more powerful and easier to use.

Software developers have powerful incentives in use the ever increasing power of computers to constantly create new software to perform services for users. One aspect of creating ever more powerful software is to continually add new features to software packages such as word processors. Another is to specialize software into niche markets such as specialized CAD programs for each industry. In addition, software programs are created for new human tasks. Initially computers were number crunchers for science and accounting. Next software was created for text processing. Then as computers became more powerful increasing amounts of software was created for graphics. Because man is a visual animal, the trend will be towards ever more powerful multimedia software.

Personal computers are just now acquiring sufficient power to process dynamic visual images. One example here is the creation of virtual reality. Virtual reality might be described as a 3-D animated world created on a computer screen. The viewer wears a special glove and helmet with googles which enables him or her to interact with the 3-D world. Virtual reality is great for computer games and has numerous business applications. For example, engineers can determine if parts fit together in virtual space. As the number of electronic components on an integrated circuit continues to increase software will be created to edit videos on personal computers.

Computers will never be common home items until they are much easier to use. The long term vision is to have computers which are controlled by English language operating systems and programs. This will require major advances in voice pattern recognition and in creating English type computer languages. This, in turn, may require the integration of neural network computers for pattern recognition with the current type digital computers.



Next: Quasi-intelligent Software Up: Software Previous: Software


norman@eco.utexas.edu
Thu Jun 8 16:37:44 CDT 1995