“On Programming: Notes From a Philosopher”
As a philosopher, I am not interested in programming per se. Nor do I have the capacity to discuss this very technical subject. On the other hand, I think that a philosopher's views on the function(s) of computer programming for scientific research may be in order, provided that they do not go beyond an elucidation of the semantical status of computer programs.
There may be some differences between various programming languages, particularly between so-called "ordinary programs," written in languages such as PASCAL, APL, etc., for any instantiation of a universal Turing machine, and AI (Artificial Intelligence) programs, which may (or may not) exhibit the same semantical features as "ordinary programs," but I assume that these differences are irrelevant for the present purpose.
The first question to be raised is the following: How is a program, P, related to what is programmed, R (loosely, "the real thing")? Verbs such as 'describe,' 'designate,' 'denote,' etc., are inadequate at least insofar as they have already been used for a number of well defined semantical functions. Verbs such as 'symbolize,' 'stand for,' and the like are much too vague and are likely to obscure rather than clarify our issue.
Expressions widely used are 'to model' and/or the predicate 'is a model of.' It has often been claimed that P models, or is a model of, R. Both ways of characterizing what a computer program of the type stated above is, or can do, are as common as they are misleading.
To begin with, the expressions 'to model' or 'is a model of' can be given different meanings, or can be used in quite different contexts. I will single out three of them:
Underlying each one of these meanings is a particular philosophical, and specifically, a particular epistemological view.
Those who choose (A) try to "save [explain] appearances (or "phenomena") by means of a metaphysical assumption closely associated with a transcendental and/or idealistic epistemology. According to the latter, the relation model-thing is the foundation of all other relations, including the cause-effect relation.
Those who favor (B) tend to call "model" any (real or mental) construct which serves to represent some thing or some state of affairs at various scales and degrees of approximation.
Followers of (C) are mainly interested in developing a highly precise model theory, even if the vocabulary used is completely at odds with the more "common sense" view exemplified by (B).
Now, the relation "(computer) program""reality" does not fit any of the three aforementioned views.
A computer program is far removed from a model in the Platonic sense. For a traditional Platonist (not necessarily for mathematicians who call themselves "Platonists") such a program would be merely a copy of a copy of a copymetaphysically "inferior" even to a painting or to a diagram.
Nor is a computer program a model in the "Suppes-Mosterin" sense. For such a program to be a model it should become a system that would need modeling by means of one of various additional programs (a state of affairs that would make little sense within the programming practice).
It may be claimed that a computer program is still a model in at least one of the various possible meanings of this term in B. Such is the case when some kind of (rather vague) isomorphism can be detected between a number of features of the state of affairs that is the subject of the program and a number of expressions used in the program. Nevertheless, this (alleged) isomorphism is quite different from any isomorphic relation holding between a reality and any artifact, maquette, map or drawing used as a model. Since it is highly questionable that a computer program can be, or function as, a mathematical model of any reality or state of affairs, it is preferable to abstain altogether from using the term 'model' in order to characterize such a program.
If a computer program does not describe, designate, denote, symbolize, or model any states of affairs, we may wonder what it actually does, or can do.
It may, of course, be said that a computer program "represents" some state of affairs. This claim is likely to be welcomed by programmers insofar as it echoes some of their basic intuitions, and, therefore, is compatible with their "practice." In any case, programmers aim at "presenting," or rather "presenting again" in some wayby means of a number of rules (commands), constants, variables, connectives, etc.some states of affairs. Programs logically organize states of affairs in order to pick up information derived from some assumptions cum fundamento in re. Unfortunately, the meaning (or rather meanings) of such expressions as 'represent,' 'representing,' 'representation,' and so forth, are so many and so varied, that we are at a loss to know with any reasonable degree of precision what we mean when we claim that programs serve to "represent."
One way of evading this difficulty is to figure out what kind of representation programmers have in mind. Their answer to this question is well known: they expect to "simulate" some features of "the real world" or possible states of affairs in the real world.
This seems to me apt but only as a point of departure. I may as well honestly declare that I have no ready answer to the question raised. I can only invite philosophers, and in particular specialists in philosophical semantics, to devote some time to the exploration of the meanings and functions of "simulation." It will not be an easy task After so much effort spent pondering the meanings and uses of terms such as 'designate,' 'denote,' etc., we are still not completely clear about the functions these expressions may fulfill. It is probable that the task of elucidating the meanings and/or uses of 'simulate' and 'simulation' will prove somewhat less arduous, but in philosophical semantics it is well-nigh impossible to be able to foresee what kind of conceptual hurdles will crop up.
As a conclusion, I will confine myself to making a few scattered remarks on two views concerning the power and scope of computer simulations.
I will call these views "inflationary" and "deflationary." Now, for the type of programs I have in mindprograms such as the simulation of ecological situations, the deflationary view seems to me preferable to the inflationary one.
Those who embrace an inflationary view tend to emphasize the almost complete congruence between a program and what it simulates, or aims at simulating, between P and R. Inflationists claim that P is so much like R that it suffices to scrutinize the structure of P in order to gather a fairly adequate knowledge of the structure of R. P and R are the same, except that, of course, P does something which R does not, or indeed cannot do, namely, simulate. If R could simulate itself, the result would be P.
The best known, and even the most popular, example of the inflationary view holds the idea that if R performs certain mental operations such as thinking, P simulates, or can simulate, R in such a way and to such an extent that it can be said to perform the same operations, namely, to think. No one claims that, strictly speaking, P thinks, as it were, "by itself." At most it is deemed that it is "the entire system" (including, of course, the hardware), of which P is a part, that thinks. But this would not be possible unless we admitted that, as a minimum, P contains the necessary and sufficient rules permitting "the entire system" to perform such mental operations.
To discard the inflationary view is not to deny that P can perform, within the context of "the complete system," the same functions which a set of norms can perform in R. Furthermore, since we do not know as yet all the possibilities of the so-called "Artificial Intelligence," no definitive and final answer to this problem can be given.
Now, even inflationists must acknowledge that neither P nor the system of which P is a part can be exactly superimposed upon R. A program for meteorological forecasting does not induce the system of which P is a part to produce storms or sunny daysin much the same way, and probably for the same semantical reasons, that an expression such as "It rains" is not wet.
Deflationary views are more modest. They consider P as embodying a set of rules (and, within the entire system, commands) allowing a great variety of calculi and/or graphic representations. Insofar as these calculi and graphic representations include a number of significant variables of R, they can cast light on the structure and behavior of R. To simulate R through P means to assume a state of affairs with any number of variables, and determine via rules (to be translated into commands), what kinds of changes can take place according to (mostly quantitative) specifications of the variables.
A deflationary view fits "ordinary" (non AI) programs both simple and complex. A program is called "simple" when it is structured according to at least one of the following three senses:
Thus, a program for the study of ecological situations (say, a program for the study and forecasting of population growth) is simple in all three senses if it concerns a limited number of animal species, if it is confined to some basic types of growth, if the carrying capacity of the environment is precisely circumscribed, etc. It is still simple even if (1) and (3) become complex. Similarly, programs for the guide of spatial missiles are simple in sense (2) although they are usually very complex in senses (1) and (3).
The difference between simple and complex programs is not dissimilar to the linguistic difference proposed by Gilbert Ryle, as well as the anthropological difference suggested by Clifford Geertz, between thin descriptions and thick (in point of fact, "fine") descriptions. To the "thick (fine) descriptions" condition, however, another should be added for a program to be truly complex, namely, when the variables used do not have the same, or approximately the same, level of significance. This is similar to saying that complexity is tied up to the different degrees of relevance in variables. Now, although levels of significance, or relevance (in the strictly logical sense of these terms) in variables may make some programs extremely complex, they may still remain within the deflationary view. In any case, "ordinary programs" used in the course of scientific research are still sufficiently rich, and valuable, to be worth using.
Ferrater Mora, José. “On Programming: Notes From a Philosopher.” Cuadernos de ALDEEU 73 (1991): 97-102.
back to The Essayist