from: COMMUNICATIONS OF THE ACM, April 1997, Vol. 40, No.4, pp.115-116

 

Dave West

Hermeneutic Computer Science

The field of study and practice we call computer science and software engineering is seriously flawed A deep, but too often ignored, division in philosophy and perspective divides the community. On occasion this division is made manifest and we engage in a brief flurry of "religious warfare" followed by the recognition that neither side intends to change its mind. A truce is called as all patties agree, "to use the tight tool for the job." Recent examples include the debates in artificial intelligence, and, more recently, object-oriented development. We can characterize the opposing sides in these debates as "formalists" and "hermeneuticists." This author's presentation during a panel discussion at the 1996 OOPSLA conference illustrates the issue.

Formalists constitute the majority culture. The formalist paradigm in both philosophy and computer science is characterized by a belief in the value of centralization, control, hierarchy, predictability, and provability. An ideal model consists of a set of formal tokens with unambiguous meaning and a set of combination and transformation rules (with accompanying derivation proofs) for manipulating the formal tokens. The semantics of the real world are, in principle, reducible to the formally defined syntax of the model

Hermeneutics is the study of interpretation, originally and usually, the interpretation of texts. The term is commonly encountered in religious studies where the meaning of sacred texts, written in archaic languages and linguistic forms, must be interpreted to a contemporary audience.

When applied to systems and computer science, the minority hermeneuticist paradigm centers on concepts of autonomy, multiple perspective, negotiated and ephemeral meaning, interpretation, emergence, self-organization, change, and evolution. Holders of this position would argue that any formal syntax, no matter how comprehensive or sophisticated it may be, will fail to capture the semantics of the natural world.

Formalist world views are grounded in the philosophy of Descartes, Hobbes, Leibniz (all of whom attempted to design or build "thinking machines," with emphasis on machines), Russell, and Whitehead. Icons of computer science including Babbage, Turing, and von Neumann exemplified formalist philosophy within the new domain. Exemplars of the tradition include Newell, Simon and Minsky with their advocacy of Al.

A mark of how far the formalist paradigm shapes computer science, and indeed most of western industrial culture, is the likelihood that almost all readers will immediately recognize the names in the preceding paragraph.

Hermeneuticist philosophy includes the works of Husserl, Heidegger, Gadamer, Vygotsky, and Foucalt. Contemporary exemplars of this paradigm include: Maturana and Varela, Prigogine, and Gell-Mann. In computer science, hermeneutic thought and ideas are found in the work of Floyd and her colleagues, Coyne, the Dreyfus brothers, and the post-AI works of Winograd. (To judge the influence of hermeneutics on both popular culture and computer science, contrast how many of the names in this paragraph are familiar.)

Logic, discrete math, structured development, Al, and information modeling as expressed in relational database theory are reflections of formalist thinking, as are the metaphors computer "science," and "software engineering." In contrast, more recent advances in neural networks, cellular automata, genetic algorithms, and complexity theory reflect hermeneutic ideas (too often without, however, an accompanying understanding of the philosophical foundations of those ideas).

When objects, and in particular the Smalltalk programming language, first gained widespread attention (circa 1987), object evangelists asserted, "objects are radically different, you need to forget almost everything you know about traditional development before you can truly understand and master objects." (As might be expected, heated discussion ensued.) It is my contention that when this kind of statement was made, it should be seen as an assertion of the hermenuetic paradigm.

Object-oriented artifacts (languages, methods, tools) reflect the same split. Consider object-oriented languages: Simula is considered to be the progenitor OO programming language. My friend, Jim Coplein, points out, "C++ is the direct inheritor from Simula." He is correct, but only in the sense that C++ inherited the clever programming tricks (e.g., abstract data types) that were first conceived in Simula. Smalltalk is the language that inherited the purpose and rationale (the paradigm) that motivated the creation of Simula (i.e., the use of simulation to explore in a direct and "naive" manner the real world).

Similarly, contrast the formalist methods and tools advanced by Mellor, Schlaer, Embly and his colleagues, Rumbaugh, Jacobson, and Booch with the "informal" (to borrow Nancy Wilkerson's term) methods of Kay, Goldberg, Rubin, Beck, Cunningham, and Wirfs-Brock.

While it is true that the divide separating formalists and hermeneuticists is very real and very fundamental, it is not the case that the two sides are inevitable antagonists. One side need not, and should not, "win" at the expense of the other. The two approaches should be and can be complementary but only if the strengths and weaknesses of each are recognized and a concerted effort is made towards integration.

 

Image17.gif (19685 bytes)

Figure 1. Hermeneutic and formalist realms

 

Consider the simple graph in Figure 1. The horizontal axis represents the spectrum of activities involved in systems modeling and application development. It ranges from analysis (with the accompanying tasks of comprehending the real world, making useful abstractions, and decomposition) to implementation (compiling, testing and executing). The vertical axis contrasts the deterministic world (the domain of hardware, discrete modules, algorithms, and small-scale formal systems) to the natural world (businesses and organizations, societies, composite systems, and cultures). A diagonal bisects the graph to demarcate two realms.

To the lower right, where emphasis is on the defining and building of hardware and using a finite set of representations (binary and operation codes) and manipulation rules (the grammar of a compiler) to implement a software design, is the realm of mainstream computer science. Formalism is appropriate, and indeed necessary, here.

When we enter the realm to the upper left of the diagram, formalism no longer serves us. In fact it impedes our progress by directing our efforts into unproductive channels. The Natural World is chaotic, its patterns stochastic rather than algebraic. Our efforts as human beings to understand and operate in this world are social and embedded in the context of the place and the moment. If we are to build computer-based systems that create global networks, whose complexity rivals that of the natural world, which respect and complement the dignity of human beings, and which can adapt to support a world in constant flux, we need a computer science that embraces the entire domain described in the figure. We need a computer science that can recognize why objects are different, why hermeneutics are important, and why formalism is limited in its application.

We need a hermeneutic computer science.

 

Dave West (dwest@stthomas.edu) is an Associate Professor in the Graduate Program in software at the University of St. Thomas, MN.

Go to top of this page

Return to Gerry Stahl's Home Page

Send email to Gerry.Stahl@drexel.edu

This page last modified on January 05, 2004