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 Criteria

The following assesses Smalltalk with respect to the language criteria presented in the Criteria for a Good Language section in the main document:

  1. Its definition should be independent of any particular hardware or operating system. Smalltalk is completely independent of any particular hardware or operating system.

  2. Its definition should be standardized, and compiler implementations should comply with this standard. A standardization effort is presently underway, but current implementations of Smalltalk tend to represent individual vendor versions of the language.

  3. It should support software engineering technology, discouraging or prohibiting poor practices, and promoting or supporting maintenance activities. Because of its strictly object-oriented nature, Smalltalk provides excellent support for object-oriented technology, which embodies many software engineering principles. Smalltalk prohibits any style of programming other than object-oriented, and this facilitates maintenance.

  4. It should effectively support the application domain(s) of interest. Smalltalk is currently being used in many different domains, and different vendor products are targeted to different domains. It is proving to be a very versatile language, supporting any domain in which it has been tried.

  5. It should support the required level of system reliability and safety. The strict object-oriented nature of Smalltalk enhances its reliability, largely because of the rigor of the interfaces in the system. Although there are some Smalltalk implementations which support such activities as exception handling, no additional features common to all versions of the language further support reliability. Safety-critical systems, those on which human life may depend, are not effectively supported by Smalltalk.

  6. Its compiler implementations should be commensurate with the current state of technology. With much current interest in Smalltalk, language products continue to be updated and created with the current state of technology.

  7. Appropriate software engineering-based supporting tools and environments should be available. Only a few Smalltalk systems include support for software engineering-based environments. Most only provide programming tools.

Language Characteristics

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.

Smalltalk’s 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