Appendix Q |
Guidelines for Choosing a Computer Language: Support for the Visionary Organization |
Appendix Q: Smalltalk
Smalltalk is a strictly object-oriented 3GL which has become one of the fastest-growing languages in recent years. It is derived from research conducted at the Xerox Palo Alto Research Center in the 1970s. It is described as a graphical, interactive programming environment, based on a small number of concepts. Those concepts have become the basis for object-oriented programming. [Brown 94] [Goldberg 89] Language CriteriaThe following assesses Smalltalk with respect to the language criteria presented in the Criteria for a Good Language section in the main document:
In this section, Smalltalk is rated with respect to the language characteristics used in Table 2 in the main document [Brown 94] [Goldberg 89]. The ratings range from 0 to 10, where 0 means the language provides no support for the characteristic, and 10 means it provides extensive support. The ratings given below are those provided in Table 2. The reader must bear in mind that the support for a good characteristic in a language does not necessarily mean that it is always used, or used appropriately. Unskilled programmers can write bad code in any language, but a good language facilitates the production of good code by skilled programmers. Clarity of source code the extent to which inherent language features support source code that is readable and understandable and that clearly reflects the underlying logical structure of the program. Clarity is enhanced because Smalltalk enforces a particular object-oriented style of writing code, and this also reflects the program structure. Rating: 9 Complexity management (architecture support) the extent to which inherent language features support the management of system complexity, in terms of addressing issues of data, algorithm, interface, and architectural complexity. The object-oriented nature of Smalltalk reflects the encapsulation of classes and objects, and this supports complexity management. However, it provides no mechanism for managing very large software components, such as subsystems. Rating: 6 Concurrency support the extent to which inherent language features support the construction of code with multiple threads of control (also known as parallel processing). It is not uncommon for a Smalltalk implementation to provide some support for concurrency. Rating: 2 Distributed system support the extent to which inherent language features support the construction of code to be distributed across multiple platforms on a network. Smalltalk provides no specific support for distributed systems. Rating: 0 Maintainability the extent to which inherent language features support the construction of code that can be readily modified to satisfy new requirements or to correct deficiencies. The object-oriented nature of Smalltalk greatly facilitates code maintainability because of class and object encapsulation. It makes the structure easy to understand and facilitates making changes. Inheritance and polymorphism can have both good and bad effects on maintainability. Rating: 7 Mixed language support the extent to which inherent language features support interfacing to other languages. Smalltalk provides no language features to support other languages. Some Smalltalk products provide language interfacing capabilities, but this is a feature that varies greatly with specific products. Rating: 3 Object-oriented programming support the extent to which inherent language features support the construction of object-oriented code. Smalltalk provides complete support for object-oriented programming, and it provides no support for any other style of programming. Rating: 10 Portability the extent to which inherent language features support the transfer of a program from one hardware and/or software platform to another. Because it is not standardized and vendors have created several different de facto standards, Smalltalk has poor portability characteristics, in general. However, its ability to encapsulate dependencies makes it as easy to port as many other standardized languages. Rating: 3 Real-time support the extent to which inherent language features support the construction of real-time systems. Smalltalk provides no inherent language support for real-time systems. Rating: 0 Reliability the extent to which inherent language features support the construction of components that can be expected to perform their intended functions in a satisfactory manner throughout the expected lifetime of the product. Smalltalks only real support for reliability is in its rigid enforcement of programming style. Rating: 3 Reusability the extent to which inherent language features support the adaptation of code for use in another application. Support for reusability requires support for code clarity, encapsulation, maintainability, and portability. Smalltalk provides excellent support in all of these areas except portability. Rating: 8 Safety the extent to which inherent language features support the construction of safety-critical systems, yielding systems that are fault-tolerant, fail-safe, or robust in the face of systemic failures. Smalltalk provides no features to support safety-critical systems. Rating: 0 Standardization the extent to which the language definition has been formally standardized (by recognized bodies such as ANSI and ISO) and the extent to which it can be reasonably expected that this standard will be followed in a language translator. Smalltalk is currently in the standardization process, and vendors have created many different versions of the language. It is unlikely that standardization at this point will prevent different versions, but it may at least ensure that a standard subset will be in all language products. Rating: 3 Support for modern engineering methods the extent to which inherent language features support the expression of source code that enforces good software engineering principles. Smalltalk supports object-oriented programming, which provides support for encapsulation and data abstraction, and it requires the programmer to adhere to a strict programming style. This makes its support for software engineering rather one-dimensional but substantial. Rating: 7 |
< Previous Page | Search | Contents | Tables | Next Page > |
Sections
1 | 2 | 3 | 4 | 5 | 6 | 7 |
Appendices
A | B | C | D | E | F | G | H | J |
K | L | M | N | P | Q | R | S |