Philosophy of Computer Science
Philosophy of Computer Science
Philosophy of Computer Science
William J. Rapaport
DRAFT
c 20042015 by William J. Rapaport
3
4
Contents
2 What Is Philosophy? 31
2.1 Recommended Readings: . . . . . . . . . . . . . . . . . . . . . . . . 32
2.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.3 A Definition of Philosophy . . . . . . . . . . . . . . . . . . . . . . 33
2.4 What Is Truth? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4.1 The Correspondence Theory of Truth . . . . . . . . . . . . . 35
2.4.2 The Coherence Theory of Truth . . . . . . . . . . . . . . . . 35
2.5 On Searching for the Truth vs. Finding It? . . . . . . . . . . . . . . . 36
2.6 What Is Rational? . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.6.1 Logical Rationality . . . . . . . . . . . . . . . . . . . . . . . 39
2.6.1.1 Deductive Logic . . . . . . . . . . . . . . . . . . . 39
2.6.1.2 Inductive Logic . . . . . . . . . . . . . . . . . . . 40
2.6.1.3 Abductive Logic . . . . . . . . . . . . . . . . . . . 40
2.6.1.4 Non-Monotonic Logic . . . . . . . . . . . . . . . . 41
2.6.2 Scientific Rationality . . . . . . . . . . . . . . . . . . . . . . 41
2.6.3 Is Science Philosophy? . . . . . . . . . . . . . . . . . . . . . 41
2.6.4 Could (Should?) Philosophy Be Scientific? . . . . . . . . . . 42
2.6.5 Is It Always Rational to Be Rational? . . . . . . . . . . . . . 43
2.7 What Is the Import of Personal Search? . . . . . . . . . . . . . . . 43
2.8 What Is the Import of In Any Field? . . . . . . . . . . . . . . . . . 43
2.9 NOTES FOR NEXT DRAFT . . . . . . . . . . . . . . . . . . . . . . 48
2.10 Further Sources of Information . . . . . . . . . . . . . . . . . . . . . 58
5
6 CONTENTS
6 What Is a Computer?
A Historical Perspective 197
6.1 Recommended Readings: . . . . . . . . . . . . . . . . . . . . . . . . 198
6.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
6.3 Two Histories of Computers . . . . . . . . . . . . . . . . . . . . . . 202
6.4 The Engineering History . . . . . . . . . . . . . . . . . . . . . . . . 202
6.4.1 Ancient Greece . . . . . . . . . . . . . . . . . . . . . . . . . 202
6.4.2 17th Century Adding Machines . . . . . . . . . . . . . . . . 203
6.4.3 Babbage Machines . . . . . . . . . . . . . . . . . . . . . . . 203
6.4.4 Electronic Computers . . . . . . . . . . . . . . . . . . . . . . 204
6.5 The Logical and Mathematical History . . . . . . . . . . . . . . . . . 205
6.6 The Histories Converge . . . . . . . . . . . . . . . . . . . . . . . . . 208
6.7 NOTES FOR NEXT DRAFT . . . . . . . . . . . . . . . . . . . . . . 208
6.8 Further Sources of Information . . . . . . . . . . . . . . . . . . . . . 213
9 What Is a Computer?
A Philosophical Perspective 359
9.1 Recommended Readings: . . . . . . . . . . . . . . . . . . . . . . . . 360
9.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
9.3 John Searle: Anything Is a Computer . . . . . . . . . . . . . . . . . . 366
9.3.1 Computers Are Described in Terms of 0s and 1s . . . . . . . 367
9.3.2 Being a Computer Is a Syntactic Property . . . . . . . . . . . 368
9.3.3 Being a Computer Is Not an Intrinsic Property
of Physical Objects . . . . . . . . . . . . . . . . . . . . . . . 369
9.3.4 We Can Ascribe the Property of Being a Computer
to Any Object . . . . . . . . . . . . . . . . . . . . . . . . . . 373
9.3.5 Everything Is a Computer . . . . . . . . . . . . . . . . . . . 373
9.3.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
9.4 Patrick Hayes: Computers as Magic Paper . . . . . . . . . . . . . . . 375
9.5 Gualtiero Piccinini:
Computers as Digital String Manipulators . . . . . . . . . . . . . . . 378
9.5.1 Definition P1 . . . . . . . . . . . . . . . . . . . . . . . . . . 379
9.5.2 Definition P2 . . . . . . . . . . . . . . . . . . . . . . . . . . 380
9.6 The Story So Far . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
9.7 What Else Might Be a Computer? . . . . . . . . . . . . . . . . . . . 381
9.7.1 Is a Brain a Computer? . . . . . . . . . . . . . . . . . . . . . 382
9.7.2 Is the Universe a Computer? . . . . . . . . . . . . . . . . . . 383
9.8 Exercises for the Reader . . . . . . . . . . . . . . . . . . . . . . . . 385
9.9 NOTES FOR NEXT DRAFT . . . . . . . . . . . . . . . . . . . . . . 386
9.10 Further Sources of Information . . . . . . . . . . . . . . . . . . . . . 406
19 Philosophy of
Artificial Intelligence 643
19.1 Recommended Readings: . . . . . . . . . . . . . . . . . . . . . . . . 644
19.2 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
19.3 What Is AI? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
19.4 The Turing Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
19.4.1 How Computers Can Think . . . . . . . . . . . . . . . . . . 647
19.4.2 The Imitation Game . . . . . . . . . . . . . . . . . . . . . . 647
19.4.3 Thinking vs. Thinking . . . . . . . . . . . . . . . . . . . . 649
19.5 The Chinese Room Argument . . . . . . . . . . . . . . . . . . . . . 651
19.5.1 Two Chinese Room Arguments . . . . . . . . . . . . . . . . 652
19.5.2 The Argument from Biology . . . . . . . . . . . . . . . . . . 652
19.5.2.1 Causal Powers . . . . . . . . . . . . . . . . . . . . 652
19.5.2.2 The Implementation Counterargument . . . . . . . 654
19.5.3 The Argument from Semantics . . . . . . . . . . . . . . . . . 655
19.5.3.1 Which Premise Is at Fault? . . . . . . . . . . . . . 655
19.5.3.2 Semiotics . . . . . . . . . . . . . . . . . . . . . . 657
19.5.3.3 Points of View . . . . . . . . . . . . . . . . . . . . 661
19.5.3.4 A Recursive Theory of Understanding . . . . . . . 664
12 CONTENTS
21 Summary 689
21.1 Recommended Readings: . . . . . . . . . . . . . . . . . . . . . . . . 690
21.2 What Is Philosophy? . . . . . . . . . . . . . . . . . . . . . . . . . . 691
21.3 What Is Computer Science? . . . . . . . . . . . . . . . . . . . . . . . 691
21.4 Is Computer Science a Kind of Science or of Engineering? . . . . . . 692
21.4.1 What Is Science? . . . . . . . . . . . . . . . . . . . . . . . . 692
21.4.2 What Is Engineering? . . . . . . . . . . . . . . . . . . . . . . 692
21.5 What Does Computer Science Study? . . . . . . . . . . . . . . . . . 693
21.5.1 What Is a Computer? Historical Answer . . . . . . . . . . . . 693
21.5.2 What Is an Algorithm? Mathematical Answer . . . . . . . . . 693
21.5.3 What Is a Computer? Philosophical Answer . . . . . . . . . . 693
21.5.4 What Is an Algorithm? Philosophical Answer . . . . . . . . . 694
21.5.4.1 What Is a Procedure? . . . . . . . . . . . . . . . . 694
21.5.4.2 What Is Hypercomputation? . . . . . . . . . . . . . 694
21.5.4.3 What Is a Computer Program? . . . . . . . . . . . 694
21.5.4.3.1 What Is Implementation? . . . . . . . . . 694
21.5.4.3.2 What Is Software? . . . . . . . . . . . . . 695
21.5.4.3.3 Can (Should) Software Be Patented, or
Copyrighted? . . . . . . . . . . . . . . . 695
21.5.4.3.4 Are Programs Scientific Theories? . . . . 695
21.5.4.3.5 What Is the Relation of Programs to the
World? . . . . . . . . . . . . . . . . . . . 695
21.6 Computer Ethics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696
21.6.1 Are There Decisions Computers Should Never Make? . . . . 696
21.6.2 Should We Build an Artificial Intelligence? . . . . . . . . . . 696
21.6.3 Philosophy of AI . . . . . . . . . . . . . . . . . . . . . . . . 696
21.7 What Is the Philosophy of Computer Science? . . . . . . . . . . . . . 697
21.7.1 The Major Question . . . . . . . . . . . . . . . . . . . . . . 697
21.7.2 9 Theses about Computation . . . . . . . . . . . . . . . . . . 697
CONTENTS 13
2 Clicking on the first link in the main text of a Wikipedia article, and then repeating the process for
subsequent articles, usually eventually gets you to the Philosophy article. As of May 26, 2011, 94.52% of
all articles in Wikipedia lead eventually to the article Philosophy. Wikipedia:Getting to Philosophy
http://en.wikipedia.org/wiki/Wikipedia:Getting to Philosophy
If you begin with Computer Science, you will end with Philosophy (in 12 links).
15
16 CONTENTS
Preface
Welcome!
The syllabus, readings, assignments, and website for the last version of the course
are online at:
http://www.cse.buffalo.edu/rapaport/584/
The current draft of the book is just that: a draft of a work in progress. Early
chapters contain Notes for the Next Draft at the end of each chapter. These represent
material that I have not yet fully incorporated into the body of the text. There are also
one or two unfinished or unwritten chapters.
Please send any comments, suggestions for improvement, etc., to me via email at:
rapaport@buffalo.edu
3 http://leiterreports.typepad.com/blog/2013/10/a-philosophy-of-computer-science-textbook.html
17
18 CONTENTS
Acknowledgments
Thanks to Russ Abbott, S.V. Anbazhagan, Peter Denning, Eric Dietrich, William
Duncan, Robin K. Hill, Nurbay Irmak, Patrick McComb, Cristina Murta, Nelson Pole,
Seth David Schoen, Stuart C. Shapiro, Mark Staples, Matti Tedre, and Sen Zhang for
comments on, and suggestions for, this early draft.
To Do
4. clarify which chapter is a discussion of Church-Turing Thesis, and put that in the
title
5. merge chap on progs as theories with chap on relation of progs to real world?
6. add exercises
11. add an other topics chapter, for things like the philosophy of the web, social
interaction, etc.
12. check Further Readings for soundness & completeness w.r.t. online bibs at
http://www.cse.buffalo.edu/rapaport/584/S10/directory.html
19
20 CONTENTS
What Is Philosophy of
Computer Science?
21
22 CHAPTER 1. WHAT IS PHILOSOPHY OF COMPUTER SCIENCE?
3. Next, we will turn to some of the issues in the philosophy of artificial intelligence
(AI):
4. Finally, we will consider two questions that fall under the heading of computer
ethics:
Along the way, we will look at how philosophers reason and evaluate logical
arguments, and there will be some suggested writing assignments designed to help
focus your thinking about these issues.
this be a good or a bad thing?). Other topics include the role of the Internet and
social media (for instance, Tim Berners-Lee, who created the World Wide Web, has
argued that Web science should be its own discipline [Berners-Lee et al., 2006],
[Lohr, 2006]). And so on.
Other issues more properly fall under the heading of the philosophy of artificial
intelligence (AI). Confusingly, they are often called philosophy of computer
science. As noted, we will look at some of these in this book, but there are many
others that we wont cover, even though the philosophy of AI is a proper subset of the
philosophy of computer science.
And there are several books and essays on the philosophy of information. As well
see, computer science is sometimes defined as the study of how to process information,
so the philosophy of information is clearly a close cousin of the philosophy of computer
science. But I dont think that either is included in the other; they merely have a non-
empty intersection. The Further Sources of Information section below includes some
of these books and essays if this is a topic you wish to explore.
Finally, there are a number of philosophers and computer scientists who have
discussed topics related to what I am calling the philosophy of computer science whom
we will not deal with at all (such as the philosopher Martin Heidegger and the computer
scientist Terry Winograd).1 An Internet search (for example: Heidegger "computer
science") will help you track down information on these thinkers and others not
mentioned in this book.
But I think that our questions above will keep us busy for a while, as well as prepare
you for examining some of these other issues. Think of this book as an extended
infomercial to bring you up to speed on the computer-sciencerelated aspects of a
philosophical conversation that has been going on for over 2500 years, to enable you
to join in the conversation.2
So, lets begin . . .
. . . but, before we do, on the next page you will find some . . .
1 One philosopher of computer science calls them the Dark Side philosophers, because they tend not to
be sympathetic to computational views of the world.
2 In 2006, responding to a talk that I gave on the philosophy of computer science, Selmer Bringsjord (a
philosopher and cognitive scientist who has written extensively on the philosophy of computer science) said,
Philosophy of Computer Science. . . is in its infancy [Bringsjord, 2006]. This may be true as a discipline
so called, but there have been philosophical investigations of computer science and computing since at least
[Turing, 1936], and James H. Moors work goes back to the 1970s (e.g., [Moor, 1978]).
26 CHAPTER 1. WHAT IS PHILOSOPHY OF COMPUTER SCIENCE?
DeJohn, Jerry; & Dietrich, Eric (2003), Subvert the Dominant Paradigm! A
review of Computationalism: New Directions, edited by Matthias Scheutz,
Journal of Experimental & Theoretical Artificial Intelligence 15(4) (October-
December): 375382, esp. 3.1, pp. 378379.
Tedre, Matti (2007), Know Your Discipline: Teaching the Philosophy of Computer
Science, Journal of Information Technology Education 6: 105122.
Turner, Raymond; & Eden, Amnon H. (eds.) (2007), Philosophy of Computer
Science special issue of Minds and Machines 17(2) (Summer): 129247.
Turner, Raymond; & Eden, Amnon H. (2008), The Philosophy of Computer
Science, special issue of Journal of Applied Logic 6(4) (December): 459552.
2. Websites:4
Aaronson, Scott (2011), Philosophy and Theoretical Computer Science,
http://stellar.mit.edu/S/course/6/fa11/6.893/
(accessed 23 December 2013).
Brey, Philip; & Sraker, Johnny Hartz (2008), Philosophy of Computing and
Information Technology,
http://www.idt.mdh.se/kurser/comphil/2011/PHILO-INFORM-TECHNO-20081023.pdf
(accessed 4 January 2013)
Brown, Curtis (2000, Fall), Seminar: Philosophy and Computers
http://www.trinity.edu/cbrown/philandcomp/ (accessed 2 November 2012)
Commission for the History and Philosophy of Computing, http://www.hapoc.org/
Dai, Yi; Lamberov, Lev; & Ostermann, Klaus (organizers) (2014), Discussion
Seminar: Philosophy of Programming Languages, Department of Mathematics
and Computer Science, University of Marburg (Germany)
https://github.com/plmday/DS-PhPL
(accessed 13 June 2014)
Hill, Robin K. (2014), Teaching the Philosophy of Computer Science (blog),
http://teachingphilofcs.blogspot.com/
Philosophy of Computer Science (ECAP06)
http://pcs.essex.ac.uk/ecap06/cfp.html (accessed 5 February 2013)
Philosophy of Computer Science: Online and Offline Resources
http://pcs.essex.ac.uk/ (accessed 2 November 2012)
Philosophy of Computer Science Course (CD5650, 2004)
http://www.idt.mdh.se/gdc/PI 04/PI-network-course.htm
(accessed 2 November 2012)
Philosophy of Computing and Informatics Network
http://www.idt.mdh.se/gdc/pi-network.htm (accessed 2 November 2012)
Price, Colin B. (2007), Concepts and Philosophy of Computing, University of
Worcester (UK)
Accessed 21 March 2014 from:
http://staffweb.worc.ac.uk/DrC/Courses%202006-7/Comp
4 If any of these websites should disappear between the time of my writing and the time of your reading,
you may be able to find them either via a search engine such as Google or via the Wayback Machine Internet
archive at: http://archive.org/web/web.php
1.5. NOTES FOR NEXT DRAFT 29
What Is Philosophy?
To the person with the right turn of mind,. . . all thought becomes
philosophy [Schwitzgebel, 2012].
31
32 CHAPTER 2. WHAT IS PHILOSOPHY?
2.2 Introduction
What is philosophy? is a question that is not a proper part of the philosophy of
computer science. But, because many readers may not be familiar with philosophy, I
want to begin our exploration with a brief introduction to how I think of philosophy and
how I would like non-philosophical readers who are primarily interested in computer
science to think of it.
In this chapter, I will give you my definition of philosophy. We will also briefly
look at some of the history of philosophy that is relevant to the philosophy of computer
science, and we will examine the principal methodology of philosophy: the evaluation
of logical arguments. DO I DO THAT HERE, OR IN THE APPENDIX?
before the year 1, which is known as the year 1 C.E. (for common era).
34 CHAPTER 2. WHAT IS PHILOSOPHY?
but only to seek wisdom: truth in any field. In fact, the word philosophy comes from
Greek roots meaning love of [philo] wisdom [sophia]. The reason that Socrates only
sought wisdom rather than claiming that he had it (like the Sophists did) was that he
believed that he didnt have it: He claimed that he knew that he didnt know anything
(and that, therefore, he was actually wiser than those who claimed that they did know
things but who really didnt). As Plato (430347 B.C.E., Socratess student) put it in his
dialogue Apology, Socrates played the role of a gadfly, constantly questioning (and
annoying!) people about the justifications for, and consistency among, their beliefs, in
an effort find out the truth for himself from those who considered themselves to be wise
(but who really werent).
Plato defined philosopher (and, by extension, philosophy) in Book V of his
Republic (line 475c):
The one who feels no distaste in sampling every study, and who attacks
the task of learning gladly and cannot get enough of it, we shall justly
pronounce the lover of wisdom, the philosopher. [Plato, 1961b, p. 714,
my emphasis].
2. What is truth?
3. Why is philosophy only the search for truth? Cant we succeed in our search?
4. What does any field mean? Is philosophy really the study of anything and
everything?
grammatical structure only, not in terms of what it means): by trying to prove it from
axioms via rules of inference. (Ill say more about what axioms and rules of inference
are in Chs. 14 and 22. For now, just think of proving theorems in geometry or logic.)
It is important to keep in mind that, when you prove a statement this way, you are not
proving that it is true! You are simply proving that it follows logically from certain
other statements, that is, that it coheres in a certain way with those statements. Now,
if the starting statementsthe axiomsare true (note that I said if they are true; I
havent told you how to determine their truth value yet), and if the rules of inference
preserve truth, then the statement that you prove by means of themthe theorem
will also be true. (Briefly, rules of inferencewhich tell you how to infer a statement
from other statementsare truth-preserving if the inferred statement cannot be false as
long as the statements from which it is inferred are true.)
Another way we can determine whether a statement is true is semantically (that is,
in terms of what it means). This, by the way, is the only way to determine whether
an axiom is true, since, by definition, an axiom cannot be inferred from any other
statements. (If it could be so inferred, then it would be those other statements that
would be the real axioms.)
But to determine the truth of a statement semantically is also to use syntax:
We semantically determine the truth value of a complex proposition by syntactic
manipulation (truth tables) of its atomic constituents. (We can use truth tables to
determine that axioms are true.) NEED TO EXPLAIN WHAT SYN AND SEM ARE,
AND HOW THEY ARE RELATED. How do we determine the truth value of an atomic
proposition? By seeing if it corresponds to reality. But how do we do that? By
comparing the proposition with reality, that is, by seeing if the proposition coheres
with reality.
How does one go about searching for the truth, for answering questions? As well see
below, there are basically two, complementary methods: thinking hard and empirical
investigation. I have read in many places that philosophy is just thinking really hard
about things.4 Such hard thinking requires rethinking explicitly what we already
believe implicitly [Baars, 1997, 187]. In other words, its more than just expressing
ones opinion unthinkingly.
Can we find the truth? Not necessarily; that is, we may not be able to find it.
But I also believe that finding it is not necessary; that is, we may not have to find it:
4 Several people have offered this characterization of philosophy. See the quotes at [Popova, 2012]
from Marilyn Adams (originally in [Edmonds and Warburton, 2010, xiii]) and, especially, David Papineau:
Philosophy is thinking hard about the most difficult problems that there are. And you might think scientists
do that too, but theres a certain kind of question whose difficulty cant be resolved by getting more empirical
evidence. It requires an untangling of presuppositions: figuring out that our thinking is being driven by ideas
we didnt even realize that we had. And thats what philosophy is [Edmonds and Warburton, 2010, xx].
2.5. ON SEARCHING FOR THE TRUTH VS. FINDING IT? 37
Philosophy is the search for truth.5 Albert Einstein (quoting G.E. Lessing)6 said that
the search for truth is more precious than its possession [Einstein, 1940, 492]. In a
similar vein, the mathematician Carl Friedrich Gauss said, It is not knowledge, but
the act of learning, not possession but the act of getting there, which grants the greatest
enjoyment.7
One reason that this search will never end (which is different from saying that it
will not succeed) is that you can always ask Why?; that is, you can always continue
inquiring. This is
the way philosophyand philosophersare[:] Questions beget questions,
and those questions beget another whole generation of questions. Its
questions all the way down. [Cathcart and Klein, 2007, 4]
(You can even ask why Why? is the most important question [Everett, 2012, 38]!) In
fact, as the physicist John Wheeler has pointed out, the more questions you answer, the
more questions you can ask: We live on an island of knowledge surrounded by a sea
of ignorance. As our island of knowledge grows, so does the shore of our ignorance.8
And the US economist and social philosopher Thorstein Veblen said, The outcome
of any serious research can only be to make two questions grow where only one grew
before[Veblen, 1908, 396].
If the philosophical search for truth is a never-ending process, can we ever make
any progress in philosophy? Mathematics and science, for example, are disciplines that
not only search for the truth, but seem to find it; they seem to make progress in the sense
that we know more mathematics and more science now than we did in the past. We
have well-confirmed scientific theories, and we have well-established mathematical
proofs of theorems. (The extent to which this may or may not be exactly the right
way to look at things will be considered in Ch. 4.) But philosophy doesnt seem to
be able to empirically confirm its theories or prove any theorems. So, is there any
sense of progress in philosophy? Or are the problems that philosophers investigate
unsolvable?
I think there can be, and is, progress. Solutions to problems are never as neat as
they seem to be in mathematics; in fact, theyre not even that neat in mathematics!
Solutions to problems are always conditional; they are based on certain assumptions.
In mathematics, those assumptions include axioms, but axioms can be challenged and
modified (consider the history of non-Euclidean geometry, which began by challenging
and modifying the Euclidean axiom known as the parallel postulate).9 So, solutions
5 For more on the importance of search over success, see my website on William Perrys theory of
by his sincere exertion to get to the Truth. It is not possession of the Truth, but rather the pursuit of Truth by
which he extends his powers. . . [Lessing, 1778].
7 From Letter to Bolyai, 1808; see
is only one line L0 that P is on and that is parallel to L. For some of the history of non-Euclidean
geometries, see http://mathworld.wolfram.com/ParallelPostulate.html (accessed 13 February 2013) or
http://en.wikipedia.org/wiki/Parallel postulate (accessed 13 February 2013).
38 CHAPTER 2. WHAT IS PHILOSOPHY?
are really parts of larger theories, which include the assumptions that the solution
depends on, as well as other principles that follow from the solution. Progress can be
made in philosophy (as in other disciplines), not only by following out the implications
of your beliefs (a kind of forward-looking progress), but also by becoming aware of
the assumptions that underlie your beliefs (a kind of backward-looking progress).
Asking Why? is partperhaps the principal partof philosophys general
role of critically evaluating beliefs [Colburn, 2000, 6] and refusing to accept
any platitudes or accepted wisdom without examining it (Donna Dickenson, in
[Popova, 2012]. Critical thinking in general, and philosophy in particular, look. . .
for crack[s] in the wall of doctrinaire [beliefs]some area of surprise, uncertainty, that
might then lead to thought [Acocella, 2009, 71]. Whenever you have a question, either
because you do not understand something or because you are surprised by it or unsure
of it, you should begin to think carefully about it. And one of the best ways to do this
is to ask Why?: Why did the author say that? Why does the author believe it? Why
should I believe it? And a related question is this: What are the implications of that?
(What else must be true if that were true? And should I believe those implications?)
Philosophy is a watchdog [Colburn, 2000, 6]. This zoological metaphor is related
to Socratess view of the philosopher as gadfly, investigating the foundations or reasons
for beliefs and for the way things are, always asking What is X? and Why?.
Of course, this got him in trouble: His claims to be ignorant were thought (probably
correctly) to be somewhat disingenuous. As a result, he was tried, condemned to death,
and executed. (For the details, read Platos Apology.)
One moral is that philosophy can be dangerous. As Eric Dietrich puts it:
Thinking about the Big Questions is serious, difficult business. I tell my
philosophy students: If you like sweets and easy living and fun times and
happiness, drop this course now. Philosophers are the hazmat handlers
of the intellectual world. It is we who stare into the abyss, frequently
going down into it to great depths. This isnt a job for people who scare
easily or even have a tendency to get nervous. (Personal communication,
5 October 2006.)
But there are advantages to always asking questions and being skeptical: A
skeptical approach to life leads to advances in all areas of the human condition; while
a willingness to accept that which does not fit into the laws of our world represents a
departure from the search for knowledge [Dunning, 2007]. Being skeptical doesnt
necessarily mean refraining from having any opinions or beliefs. But it does mean
being willing to question anything and everything that you read or hear (or think!).
(Another way f putting this is this: In philosophy, the jury is always out!cf.
[Polger, 2011, 11]. But, as we saw above, this does not mean that there can be no
progress in philosophy.) Why would you want to question anything and everything?
So that you can find reasons for (or against) believing what you read or hear (or think).
And why is it important to have these reasons? For one thing, it can make you feel
more confident about your beliefs and the beliefs of others. For another, it can help you
try to convince others about your beliefsnot necessarily to convince them that they
should believe what you believe, but to help them understand why you believe what
you do.
2.6. WHAT IS RATIONAL? 39
The main concern of philosophy is to question and understand very common ideas
that all of us use every day without thinking about them [Nagel, 1987, 5]. This is
why, perhaps, the questions that children often ask (especially, Why?) are often
deeply philosophical questions.
But mere statements (that is, opinions) by themselves are not rational. Rather,
argumentsreasoned or supported statementsare capable of being rational. That
is, being rational requires logic. But there are lots of different (kinds of) logics, so
there are lots of different kinds of rationality. And there is another kind of rationality,
which depends on logics of various kinds, but goes beyond them in at least one way:
empirical, or scientific, rationality.
P, P C `D C
means that the two premises P and P C (read this as: if P, then C) deductively
support (that is, they deductively imply) C.
For example, let P = Today is Wednesday. and let C = We are studying
philosophy. So the inference becomes: Today is Wednesday. If today is
Wednesday, then we are studying philosophy. Therefore (deductively), we are studying
philosophy.
Note that C can be false! It only has to be true relative to the premises (that is, true
relative to its context).
Also, any or all of the Pi can be false! A deductive argument is said to be valid iff
it is impossible for all of the premises to be true but the conclusion false. This can be
said in a slightly different way: A deductive argument is valid iff, whenever all of its
premises are true, its conclusion cannot be false (or: its conclusion must also be true).
40 CHAPTER 2. WHAT IS PHILOSOPHY?
A deductive argument is said to be sound iff it is valid and all of its premises are,
in fact, true. So, any or all of the premises of a deductively valid argument can be false,
as long asif they were true, then the conclusion would also have to be true.)
Also, the Pi can be irrelevant to C! But thats not a good idea, because it wouldnt be
a convincing argument. (Relevance logics are one way of dealing with this problem;
[Anderson and Belnap, 1975, Anderson et al., 1975].)
Inductive logic is one of the three main kinds of scientific rationality: The first is
deductive (as we just saw): Logical rationality is certainly part of science. The third is
abductive (discussed in the next section).
In inductive logic, P1 , . . . , Pn `I C iff C is probably true if all of the Pi are true. For
example, suppose that you have an urn containing over a million ping-pong balls, and
suppose that you take out one of them at random and observe that it is red. What do
you think the chances are that the next ball will also be red? They are probably not
very high. But suppose that the second ball that you examine is also red. And the third.
. . . And the 999,999th. Now how likely do you think it is that the next ball will also be
red? The chances are probably very high, so:
Unlike deductive inferences, however, inductive ones do not guarantee the truth
of their conclusion. Although it is not likely, it is quite possible that the millionth
ping-pong ball will be, say, the only blue one in the urn.
10 For the origin of the term in the writings of the American philosopher Charles Sanders Peirce (who
of philosophy but arent anymore, and then wonders, if other parts of philosophy became separate academic
disciplines, what would be left. His conclusion, possibly though not necessarily his view on what constitutes
the core of philosophy, is: ethics, epistemology, and metaphysics. (Or, as [Schwitzgebel, 2012] put it: The
issues at the foundation are always the same: What there really is [metaphysics], how we know about it
[epistemology], and what separates the god from the bad [ethics]. Cf. [Flanagan, 2012, B4] on the nature
of comprehensive philosohphies.
42 CHAPTER 2. WHAT IS PHILOSOPHY?
There might be conflicting world views (e.g., creationism vs. evolution, perhaps).
Therefore, the best theory is one that is consistent, that is as complete as possible (that
is, that explains as much as possible), and that is best-supported by good evidence.
You cant refute a theory. You can only point out problems with it and then offer a
better theory. Suppose that you infer a prediction P from a theory T and a hypothesis
H, and then suppose that the prediction doesnt come true (your experiment fails; that
is, the experimental evidence is that P is not the case). Then, logically, either H is not
the case or T is not the case (or both!). And, since T is probably a complex conjunction
of claims A1 , . . . , An , then, if T is not the case, then at least one of the Ai is not the case.
In other words, you need not give up a theory; you only need to revise it. (This is not
to say, however, that sometimes you should give up a theory. This is what happens in
the case of scientific revolutions, such as (most famously) when Copernicuss theory
that the Earth revolves around the Sun (and not vice versa) replaced the Ptolemaic
theory, small revisions to which were making it overly complex without significantly
improving it. Ill have a bit more to say about this in Ch. 4.)
12 For more information on this movement, see [Nahmias et al., 2006, Appiah, 2007, Appiah, 2008,
Knobe, 2009, Beebe, 2011, Nichols, 2011]; for an argument against experimental philosophy, see
[Deutsch, 2009].
2.7. WHAT IS THE IMPORT OF PERSONAL SEARCH? 43
Philosophy also studies things that are not studied by any single discipline; these
are sometimes called the Big Questions: What is truth? What is beauty? What is
good (or just, or moral, or right)? What is the meaning of life? What is the nature of
13 http://www.askphilosophers.org/question/2992.
14 For a somewhat different take on the value of first-person thinking, see [Kornblith, 2013].
44 CHAPTER 2. WHAT IS PHILOSOPHY?
mind?15 Or, as Jim Holt [Holt, 2009] put it: Broadly speaking, philosophy has three
concerns: how the world hangs together, how our beliefs can be justified, and how to
live. The first of these is metaphysics, the second is epistemology, and the third is
ethics.
The main branches of philosophy are:
1. Metaphysics (or ontology),16 which tries to answer the question What is
there?17 (and also the question Why is there anything at all?). Some of
the things that there might be include: physical objects, properties, relations,
individuals, time, God, actions, events, minds, bodies, etc.
There are major philosophical issues surrounding each of these. Here are just a
few examples:
Which physical objects really exist? Do rocks and people exist? Or
are they merely collections of molecules? But molecules are constituted
by atoms; and atoms by electrons, protons, and neutrons. And, according
to the standard model, the only really elementary particles are quarks,
leptons (which include electrons), and guage bosons; so maybe those are
the only really existing physical objects.18 Here is a computationally
relevant version of this kind of question: Do computer programs that deal
with, say, student records model students? Or are they just dealing with 0s
and 1s? And, on perhaps a more fanciful level, could a computer program
model students so well that the virtual students in the program believe
that they are real?19
Do socially constructed things like money, universities, governments,
etc., really exist (in the same way that people or rocks do)?
Do properties really exist? Or are they just collections of similar (physical)
objects; in other words, is there a propertyRednessover and above
the class of individual red things? Sometimes, this is expressed as
the problem of whether properties are intensional (like Redness) or
extensional (like the set of individual red things).20
Are there any important differences between accidental properties (such
as my property of being a professor of computer science rather than my
being a professor of philosophy) and essential properties (such as my
property of being a human rather than being a laurel tree)?
15 A Rhymes with Orange cartoon (31 August 2007), titled The Big Questions, shows two men on the
beach; one says, Does turning the air conditioning down mean you are turning it up? Does turning it
up mean you are turning it down?, and the other replies, And is there a true nature of up and down?.
The caption is: Philosophy professors, the summer months.
16 For more information on ontology, see
What is the mind, and how does it relate to the brain? (This is known
as the mind-body problem.) Are minds and bodies two different kinds
of substances? Or are they two different aspects of some one, underlying
substance? Or are there no minds at all, but only brains? Or are there no
independently existing physical objects, but only ideas in our minds?
Do non-existents (e.g., Santa Claus) exist? We can and do think and talk
about them. Therefore, whether or not they exist in any sense, they do
need to be dealt with.21
And so on.
3. Logic is the study of good reasoning: What is truth? What is rationality? Which
arguments are good ones? Can logic be computationally automated?
4. Ethics tries to answer What is good?, What ought we to do?. Well look at
some ethical issues arising from computer science in Chs. 18 and 20.
7. Philosophy is one of the few disciplines (history is another) in which the history
of itself is one of its branches: The history of philosophy looks at what famous
philosophers of the past believed and tries to reinterpret their views in the light
of contemporary thinking.
8. And of central interest for the philosophy of computer science, there are
numerous philosophies of:
21 See [Quine, 1948]. See also [Hirst, 1991], for a survey of the AI approach to this. And see
[Maida and Shapiro, 1982], [Rapaport, 1986a], [Wiebe and Rapaport, 1986], [Shapiro and Rapaport, 1987],
[Shapiro and Rapaport, 1991], [Rapaport et al., 1997] for some papers on a fully intensional AI approach to
these issues.
46 CHAPTER 2. WHAT IS PHILOSOPHY?
Philosophy, besides being interested in any specific topic, also has an overarching
or topic-spanning function: It asks questions that dont fall under the aegis of specific
topics and that span multiple topics: The aim of philosophy, abstractly formulated, is
to understand how things in the broadest possible sense of the term hang together in
the broadest possible sense of the term [Sellars, 1962, 35].22
22 Sellars goes on to say:
the reflective knowing ones way around in the scheme of things. . . is the aim of philosophy
What is characteristic of philosophy os not a special subject-matter, but the aim of knowing ones
way around with respect to the subject-matters of all the special disciplines
It is therefore the eye on the whole which distinguishes the philosophical enterprise.
2.8. WHAT IS THE IMPORT OF IN ANY FIELD? 47
So, for instance, while it is primarily (but not only) mathematicians who are
interested in mathematics per se and primarily (but not only) scientists who are
interested in science per se, it is primarily (but not only) philosophers who are
interested in how and why mathematics is so useful for science (cf. [Smith, 2010]).
Are there any topics that philosophy doesnt touch on? Im sure that there are some
topics that philosophy hasnt touched on. But Im equally sure that there are no topics
that philosophy couldnt touch on.23
So, lets now begin our philosophical investigation into computer science.
Argues that:
Philosophical questions are questions not answerable empirically or
mathematically, with observations or calculations. They are open
questions, that is, questions that remain in principle open to informed,
rational, and honest disagreement, even after all the relevant observations
and calculations have become available and the answers have been
formulated (pp. 200201, my emphasis).
Such questions dont have right/wrong answers; theyre Contextually
Relativistic. An example is whether one should accept Alices
invitation to her party (p. 209). A Multiplist would say that theres
no correct answer, so any answer is OK. A CR says that whether
you should accept or not depends on all sorts of supplementary
assumptions, and you have to try to make the best argument you can
for an answer.
And philosophical questions are also closed under further questioning
(p. 205).
2.9. NOTES FOR NEXT DRAFT 49
Closed in the sense that the natural numbers are closed under
addition (p. 204), that is, adding two natural numbers always and
only yields another natural number, never anything else. So, if
you question . . . [a philosophical question], you obtain one more
philosophical question (p. 204)
And philosophical questions are also ultimate questions (p. 207).
Given the network of questions that mutually pose or presuppose each
other, ultimate questions are those questions whose answers are most
influential in terms of a cascade of further questions and answers to
other related questions within that network. (p. 207)
And they require noetic resources to be answered (p. 211), where,
by noetic resources, Floridi means resources that include. . . [peoples]
beliefs, what . . . [they]read on the web, their cultural background, their
language, religion, and art, their social practices, their memories. . . , their
expectations. . . , their emotional intelligence, their past experiences, and
so forth. It is the world of mental contents, conceptual frameworks,
intellectual creations, intelligent insights, dialectical reasonings. (pp. 210
211).
Since CR questions depend on their background assumptions, this fits.
And they are not absolute questions (p. 215), where absolute questions
are questions that are formulated with no regard for the kind of LoA [Level
of Abstraction] at which their possible answers become sensible (p. 212
213)., where, in turn, an LoA is, roughly, the units of measurement or
currency (p. 213) in which an answer must be given. So, for example,
to say that a car costs 5,000 is an absolute answer that makes no
sense unless its LoA is made clear: $5,000 or 5,000 Euros. According
to Floridi, [Turing, 1950] doesnt ask whether machines can think (in
an absolute sense) but whether machines can think at the Level of
Abstraction represented by the imitation game (p. 214).
8. I said that philosophy is the search for truth in any field. Heres an interesting
variation on that theme:
Wittgenstein claims that there are no realms of phenomena whose
study is the special business of a philosopher. . . [Horwich, 2013, my
italics]24
There are two ways to interpret the italicized passage: One way is to read it as
consistent with my claim that all fields are open to philosophical investigation.
But the way that Horwich (and Wittgenstein) intended more negatively: There
is nothing unique that is the object of study for philosophy (and that is not
the object of study of any other discipline). Whether or not this is the case
(and, admittedly, it is hard to find counterexamplesmetaphysics, possible
worlds, epistemologythat are not studied by other disciplines: physics, logic,
24 For related discussions, see [Gutting, 2012], [Lynch, 2013].
50 CHAPTER 2. WHAT IS PHILOSOPHY?
psychology), surely the methods that philosophers use and their approaches to
various problems differ from those of other disciplines.
In other words, its not enough to merely think something; you must also
consider reasons for believing it, and you must also consider the consequences
of believing it.
12. One of the things about philosophy is that you dont have to give up
on any other field. Whatever field there is, theres a corresponding
field of philosophy. Philosophy of language, philosophy of politics,
philosophy of math. All the things I wanted to know about I coudl
still study within a philosophical framework. Rebecca Newberger
Goldstein, cited in [Reese, 2014b]
25 As cited in [Neuberger, 2012, 293].
2.9. NOTES FOR NEXT DRAFT 51
13. On abduction:
this is why there exists the potential for there to be the phi of
pretty much anythingwhenever we critically question fundamental
assumptions about our beliefs, our activities, and the world around us,
we are in the business of doing philosophy.
18. NPR reporter Scott Simon once told future-NPR-reporter Tamara Keith (when
she was in high school), Consider majoring in philosophy. I did. . . . it taught
me how to break apart arguments, how to ask the right questions [Keith, 2014]
The first option, that reality is a game, has been studied by [Bostrom, 2003]
and suggested in a story by Stanisaw Lem that well discuss in Ch. 20 (see
also [Lightman, 2012]s novel Mr g). The other two options may be a false
dichotomy: Another option is that there is a reality out there, but that what we
experience as that reality is actually a construction of our brain.
http://wings.buffalo.edu/epc/authors/perloff/witt intro.html
(accessed 12 November 2014).
23. Two years! said Dantes. Do you think I could learn all this in
two years?
In their application, no; but the principles, yes. Learning does
not make one learned: there are those who have knowledge and
those who have understanding. The first requires memory, the second
philosophy.
But cant one learn philosophy?
Philosophy cannot be taught. Philosophy is the union of all
acquired knowledge and the genius that applies it. . . [Dumas, 1844,
Ch. 17, pp. 168169]
24. On epistemology:
26. [McGinn, 2015b] argues that philosophy is a science, just like physics or
mathematics. More precisely, he says that it is the logical science of concepts
(pp. 8788). This paper might be considered as required (or whatever) reading
for this chapter.
29. A self-inconsistent theory can be refuted, or can it? After all, one can always
change ones logic! If your theory is inconsistent with an observation, you can
augment the theory with an account of how the observation is misleading. But
perhaps make this clearer in the text.
54 CHAPTER 2. WHAT IS PHILOSOPHY?
I do not pretend that I can refute these two views; but I can challenge
them. . . . [Popper, 1978, 4, p. 148]
This is the heart of philosophy: not (necessarily) coming up with answers, but
challenging assumptions and forcing you to think about alternatives.
My fathers favorite admonition was: Never make assumptions. That is, never
assume that something is the case or that someone is going to do something;
rather, try to find out if it is the case, or ask the person. In other words, challenge
all assumptions.
This is one way that progress can be made in philosophy: It may be backwards-
looking progress (because instead of looking forward to implications of
your assumptions, you look backwards to see where those assumptions might
have come from). (Besides these two directions of progress, there can be a
third, which is orthogonal to these two: Considering other issues that might
not underlie (backwards or follow from (forwards) the one that you are
considering, but that are inspired or suggested by it (sideways progress?).
The desire for answers to all questions has been called the Dualistic stance
towards knowledge ([Perry, 1970, Perry, 1981],
http://www.cse.buffalo.edu/rapaport/perry.positions.html).
But the Dualist soon realizes that not all questions have answers that everyone
agrees with, and some questions dont seem to have answers at all (at least,
not yet). Rather than stagnating (my term, not Perrys!) in a middle stance of
Multiplism (because not all questions have answers, all opinionsproposed
answersare equally good), a further stance is that of Contextual Relativism:
All proposed answers/opinions can (should!) be consideredand evaluated!
relative to and in the context of assumptions/reasons/evidence that can support
them.
Eventually, you Commit to one of these answers, and you become responsible
for defending your commitment to Challenges. But that is (just) more thinking
and analysismore philosophizing.
Moreover, the commitment that you make is a personal one (one that you are
responsible for). It is in this way that philosophy is done in the first person for
the first person, as Castaneda said.
And, finally:
And among the philosophers, there are too many Platos to enumerate.
All that I can do is try to give you mine. [Goldstein, 2014, 396]
2.9. NOTES FOR NEXT DRAFT 55
. . . my purpose is
to put my own intellectual home in order. . . . [Putnam, 2001, as cited
at http://putnamphil.blogspot.com/2015/02/rational-reconstuction-in-
1976-when.html]
And:
Goldstein goes on to say that Plato said as much in his myth of the cave, in that
the cave-dwellers presume/assume that the shadows are reality, but that, to get
closer to reality (if not actually to reach it), they must challenge that assumption.
The arguments are argued over, typically, by challenging their assumptions. (It
is rare that a philosophical argument will be found to be invalid, and, when that
happens, it is usually a source of disappointmentunless the invalidity is a very
subtle one or one that reveals a flaw in the very nature of logic itself, which is an
even rarer, but not unknown, occurrence.)
36. On the nature of philosophy, consistent with the view of philosophical progress
as consisting in the challenging of assumptions:
[Plato] is. . . a man keenly aware of the way that assumptions and
biases slip into our viewpoints and go unnoticed, and he devised a
field devoted to trying to expose these assumptions and biases and to
do away with any that conflict with commitments we must make in
order to render the world and our lives maximally coherent. . . . Above
all, my Plato is the philosopher who teaches us that we should never
rest assured that our view, no matter how well argued and reasoned,
amounts to the final word on any matter. [Goldstein, 2014, 396]
and
37. Thinking does not guarantee that you will not make mistakes. But not
thinking guarantees that you will. [Lamport, 2015, 41]
This is relevant to the idea of philosophy as thinking hard.
As Socrates noted, once you start asking questions and arguing out
the answers, you must follow the argument wherever it leads, and it
might lead to answers that disturb people or contradict their ideology.
[Parsons, 2015]
A propos of this, the whole point of Western philosophy since Socrates has been
to get people to think about their beliefs, to question and challenge them. It is
not (necessarily) to come up with answers to difficult questions.
39. On first-person philosophy:
. . . Im not trying to change anyones mind on this question. I gave
that up long ago. Im simply trying to say what I think is true.
[Strawson, 2012, 146]
40. On theories of truth:
recommended reading = [McGinn, 2015a, 8.1], where McGinn identifies three
classical theories of truth:
(a) Books:
Martinich, A.P. (2005), Philosophical Writing: An Introduction (Malden, MA:
Blackwell).
Woodhouse, Mark B. (2007), A Preface to Philosophy, 8th edition (Wadsworth
Publishing).
(b) Websites:
Fiala, Andrew (2004), Student Survival Guide
http://www.wadsworth.com/philosophy d/special features/popups/survival guide.html
(accessed 2 November 2012)
Miller, David Marshall (2011), Writing Philosophy Papers
http://people.duke.edu/dmmiller/Classes/Writing%20Philosophy%20Papers.docx
(accessed 2 November 2012)
Suber, Peter (2003), Courses, http://www.earlham.edu/ peters/courses.htm
(accessed 2 November 2012)
See especially the links at the bottom of the page under the heading
Files and links that pertain to more than one course.
Do a computer search for: "writing philosophy papers" (include the quotes in
the search box)
62 CHAPTER 2. WHAT IS PHILOSOPHY?
Theres the legend of the fish who swam around asking every sea creature hed
meet, Where is this great ocean I keep hearing about?. . .
We are very much like that fish.
For consider, its hard to look at a newborn baby without thinking: what an
incredible miracle. But when was the last time you looked at an adult and had the
same thought? But why not? Every adult was a little baby; if the latter is a miracle
then so is the former. But it never occurs to us to think this way for one simple reason:
were so used to seeing people that we stop reflecting on them.
Or you drop something, a spoon, and it falls to the floor. But why? Couldnt it, in
theory, have remained floating in air or moved upwards? And how exactly does it fall
to the floor, by gravity? There are no strings connecting the earth to the spoon. How
can the earth pull on something froma distance, that its not even attached to? Why
dont we pause every time something drops and say: what an incredible miracle!
The most ordinary things contain a whole lifetime of questions, if only we are
reminded to start asking them.
Children already know to ask these questions. Every answer you provide to one
of their Why? questions just generates the next question. Btu we were all children
once. What we need to do now is to let the child still within usthe philosopher
within usre-emerge. . . . We need to take a cold wet plungh into the great deep ocean
of thought.
Its time to start thinking.
Thanks to those of you who [gave their own] faculty introductions [to the
new graduate students]. For those who [werent able to attend], I described
your work and courses myself, and then explained via the Reductionist
Thesis how it all comes down to strings and Turing machines operating
on them.
Kenneth Regan, email to University at Buffalo Computer Science &
Engineering faculty (27 August 2004); italics added.
63
64 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
3.1 Readings:
1. Required:
(a) Newell, Allen; Perlis, Alan J.; & Simon, Herbert A. (1967), Computer Science,
Science 157(3795) (22 September): 13731374.
(b) Knuth, Donald (1974), Computer Science and Its Relation to Mathematics,
American Mathematical Monthly 81(4) (April): 323343.
required: 13
very strongly recommended: 4
strongly recommended: readers who are more mathematically inclined may
wish to read the whole essay.
(c) Newell, Allen; & Simon, Herbert A. (1976), Computer Science as Empirical
Inquiry: Symbols and Search, Communications of the ACM 19(3) (March): 113
126.
i. For the purposes of this chapter, concentrate especially on what Newell &
Simon have to say about what computer science is:
read the Introduction (pp. 113114)
read from I. Symbols and Physical Symbol Systems to the end of the
subsection Physical Symbol Systems (pp. 114117)
read the Conclusion (pp. 125126)
ii. For a detailed follow-up, see:
Newell, Allen (1980), Physical Symbol Systems, Cognitive Science 4: 135
183.
Accessed 15 March 2014 from1 http://tinyurl.com/Newell1980
(d) Hartmanis, Juris, & Lin, Herbert (1992), What Is Computer Science and
Engineering?, in Juris Hartmanis & Herbert Lin (eds.), Computing the Future:
A Broader Agenda for Computer Science and Engineering (Washington, DC:
National Academy Press), Ch. 6, pp. 163216.2
required: Computer Science & Engineering, pp. 163168.
required: Abstractions in Computer Systems, pp. 168174.
very strongly recommended: skim the rest.
(e) Brooks, Frederick P., Jr. (1996), The Computer Scientist as Toolsmith II,
Communications of the ACM 39(3) (March): 6168.
required: pp. 6164.
very strongly recommended: skim the rest.
(f) Shapiro, Stuart C. (2001), Computer Science: The Study of Procedures,
http://www.cse.buffalo.edu/shapiro/Papers/whatiscs.pdf
accessed 3 November 2012
1 http://onlinelibrary.wiley.com/store/10.1207/s15516709cog0402
2/asset/s15516709cog0402 2.pdf?v=1&t=hst07yxo
&s=e842daedf48a175f3ee71e69bd62f2f41d07b6ae
2 This book was the subject of a petition to withdraw it from publication because we consider it
(a) Arden, Bruce W. (1980), COSERS Overview, in Bruce W. Arden (ed.), What Can
Be Automated? The Computer Science and Engineering Research Study (COSERS)
(Cambridge, MA: MIT Press), Ch. 1, pp. 131.
(b) Krantz, Steven G. (1984), Letter to the Editor about the relation of computer science
to mathematics, American Mathematical Monthly 91(9) (November): 598600.
(c) Denning, Peter J. (1985), What Is Computer Science?, American Scientist 73
(January-February): 1619.
(d) Abrahams, Paul (1987), What Is Computer Science?, Communications of the
ACM 30(6) (June): 472473.
(e) Loui, Michael C. (1987), Computer Science Is an Engineering Discipline,
Engineering Education 78(3) (December): 175178.
(f) Bajcsy, Ruzena K.; Borodin, Allan B.; Liskov, Barbara H.; & Ullman, Jeffrey D.
(1992), Computer Science Statewide Review (unpublished report)
http://tinyurl.com/BajcsyEtAl19923
(personal copy accessed 15 February 2013; login required)
(g) Abelson, Harold, & Sussman, Gerald Jay, with Sussman, Julie (1996), Structure
and Interpretation of Computer Programs, Preface to the First Edition
http://tinyurl.com/AbelsonSussman1996Pref4
(accessed 15 February 2013)
(h) Gal-Ezer, Judith, & Harel, David (1998), What (Else) Should CS Educators
Know?, Communications of the ACM 41(9) (September): 7784.
contains a section titled What Is CS?
contains a Bibliography for What Is CS?
(i) Jacob, Christian (1999), What Is Computer Science?
http://tinyurl.com/Jacob19995
(accessed 15 February 2013)
(j) Shagrir, Oron (1999), What Is Computer Science About?, The Monist 82(1):
131149.
Despite its title, this paper is more about what computers are and what
computation is; Shagrir assumes that computer science is the science of
computers.
(k) Johnson, George (2001), All Science Is Computer Science, The New York Times
(25 March): WK1, WK5 http://tinyurl.com/GJohnson20016 (accessed 15 February
2013)
(l) Foley, Jim (2002), Computing > Computer Science, Computing Research News
14(4) (September): 6; http://archive.cra.org/reports/computing/index.html
(accessed 3 November 2012)
3 http://www.cse.buffalo.edu/rapaport/Papers/Papers.by.Others/bajcsyetal92.pdf
4 http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-7.html#% chap Temp 4
5 http://pages.cpsc.ucalgary.ca/jacob/Courses/Fall99/CPSC231/03-ComputerScience.pdf
6 http://www.nytimes.com/2001/03/25/weekinreview/the-world-in-silica-fertilization-all-science-is-
computer-science.html
66 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
See also:
Glass, Robert L. (2003), Response to Computing > Comptuer Science,
online at: http://archive.cra.org/reports/computing/glass.html
(accessed 18 June 2013)
(m) Boston University Department of Computer Science (2003), What Is Computer
Science?, http://cs-www.bu.edu/AboutCS/WhatIsCS.pdf
(accessed 3 November 2012)
(n) Parlante, Nick (2005), What Is Computer Science?, InroadsThe SIGCSE
Bulletin 37(2) (June): 2425.
(o) Naur, Peter (2007), Computing Versus Human Thinking, Communications of the
ACM 50(1) (January): 8594.
3.2. INTRODUCTION 67
3.2 Introduction
In a sense, the fundamental question of this book is: What is computer science? Almost
all of the other questions we will be considering flow from this one, so a final answer
(if there is one!) will have to await the end of the book.
In this chapter, we will look at several definitions of computer science that have
been given by both philosophers and computer scientists. Each definition raises issues
that we will examine in more detail later.
schools, colleges, orgenericallydivision, each typically headed by a dean and divided into still
smaller units, called departments.
68 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
There are examples of each, even within a single university system: My own
university (State University of New York at Buffalo) has a Department of Computer
Science and Engineering within a School of Engineering and Applied Sciences, but,
when I joined the university, there were both a Department of Computer Science in a
Faculty of Natural Sciences and Mathematics and a separate Department of Electrical
and Computer Engineering in a Faculty of Engineering and Applied Sciences. At
its sibling institution, State University of New York at Albany, the Department of
Computer Science is in the College of Computing and Information. And at my
former college, State University of New York College at Fredonia, the Department
of Computer and Information Sciences is in the College of Arts and Sciences.
In fact, given all of these possibilities, we can even ask the question, What should
this discipline be called?:
Computer science?
Computer engineering?
Computing science (or engineering)?
Informatics? (This name is more common in Europe.)
In this book, but only for convenience, I will call it computer science, but, by doing
so, I do not mean to exclude the other parts of the discipline, such as engineering or its
relationship to information.
(For those who are interested, [Ceruzzi, 1989, esp. pp. 265270] contains a history
of the phrase computer science. And, in a response to a letter that appeared in one of
the earliest issues of Communications of the ACM, the editor (possibly Alan J. Perlis)
listed several, admittedly facetious, names, including turingineering, turology,
applied meta-mathematics, and applied epistemology [DATA-LINK, 1958, 6]. In
1966, Turing-award-winner Peter Naur suggested datalogy [Naur, 2007, 86].)
And so on.
How should the discipline advertise itself so as to attract more women to the
field?
How should it advertise itself to the public at large, so that ordinary citizens
might have a better understanding of what it is?
Many of the definitions of computer science that you can find on various academic
websites are designed with one or more of these purposes in mind. Here is an exercise
for the reader: Try to find some of these, and see if you can figure out whether they
were designed with any of these purposes in mind.
Is it like any other academic discipline? (For instance, is it more like mathematics
or more like engineering?)
its own kind of animal. Actually, some biologists believe that dogs are actually a kind of wolf, but others
believe that dogs are sui generis.
70 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
Computer science has such intimate relations with so many other subjects
that it is hard to see it as a thing in itself. [Minsky, 1979]
On the other hand, Juris Hartmanis, a founder of the field of computational complexity
theory, said:
Computer science differs from the known sciences so deeply that it has to
be viewed as a new species among the sciences. [Hartmanis, 1993, 1] (cf.
[Hartmanis, 1995a, 10])9
It does not make much difference how you divide the Sciences, for they
are one continuous body, like the ocean. [Leibniz, 1685, 220]
Before we explore our main question further, there is a fundamental principle that
should be kept in mind whenever you ask what something is, or what kind of thing
something is: There are no sharp boundaries in nature; there are only continua. A
continuum (plural = continua) is like a line with no gaps in it, hence no natural
places to divide it up. The color spectrum is an example: Although we can identify
the colors red, orange, yellow, green, and so on, there are no sharp boundaries where
red ends and orange begins. An apparent counterexample might be biological species:
Dogs are clearly different from cats, and there are no intermediary animals that are not
clearly either dogs or else cats. But both dogs and cats evolved from earlier carnivores
(it is said that both evolved from a common ancestor some 42 million years ago).10 If
we traveled back in time, we would not be able to say whether one of those ancestors
was a cat or a dog; in fact, the question wouldnt even make sense.
Moreover, although logicians and mathematicians like to define categories in terms
of necessary and sufficient conditions for membership, this only works for abstract,
formal categories. For example, we can define a circle of radius r and center c as the
set of all and only those points that are r units distant from c.11 As philosophers,
9 [Hartmanis, 1995a] covers much of the same ground, and in many of the same words, as
[Hartmanis, 1993], but is more easily accessible, having been published in a major journal that is widely
available online, rather than in a harder-to-find conference proceedings.
10 See the GreenAnswers.com webpage at:
http://greenanswers.com/q/95599/animals-wildlife/pets/what-common-ancestor-cats-and-dogs
(which cites the Wikipedia articles Feliformia (http://en.wikipedia.org/wiki/Feliformia) and Carnivora
(http://en.wikipedia.org/wiki/Carnivora)) and the gather.com webpage Miacids at:
http://www.gather.com/viewArticle.action?articleId=281474977041872 (accessed 15 February 2013).
(According to a Ziggy cartoon (http://www.gocomics.com/ziggy/2013/02/19), however, a platypus could be
considered as an intermediary animal between birds and mammals!)
11 All such points is the sufficient condition; only such points is the necessary condition: C is a
circle of radius r at center c if and only if C = {p : p is a point that is r units distant from c}. That is, p is r
3.4. WHAT DOES IT MEAN TO ASK WHAT SOMETHING IS? 71
units from c only if p is a point on C (that is, if p is r units from c, then p is a point on C); so, being a point
that is r units from c is a sufficient condition for being on C. And if p is a point on C, then p is r units from
c; so, being a point that is r units from c is a necessary condition for being on C.
12 [Bringsjord, 2006, my emphasis] argued that any answer. . . that includes some such notion as
Whatever computer scientists actually do. is unacceptable. I would replace includes by is limited to;
surely, includes has to be included.
72 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
respected computer scientistspresumably put a lot of thought into them. They are
worth taking seriously, which we will do in the next few sections.
They then reply to several objections to this definition, such as this one: Sciences
study natural phenomena, but computers arent natural; they are artifacts. Their
reply to this is to deny the premise: Sciences are not limited to studying natural
phenomena. There are sciences of artifacts; for example, botanists study hybrid corn.14
In fact, Simon wrote a book (originally in 1969) called The Sciences of the Artificial
[Simon, 1996b], and [Knuth, 2001, 167] called it an unnatural science [because]
[c]omputer science deals with artificial things, not bound by the constraints of nature.
(For a commentary on this, see the Abstruse Goose cartoon in Figure 3.4 at the end of
the chapter.)
The objector might respond that the fact that Simon had to write an entire book to
argue that there could be sciences of artifacts shows that the premisethat science only
studies natural phenomenais not obviously false. Moreover, botanists study mostly
natural plants; hybrid corn is not only not studied by all botanists, it is certainly not the
only thing that botanists study (that is, botany is not defined as the science of hybrid
corn). Are there any natural phenomena that computer scientists study? (We will see a
positive answer to this question in 3.10.)
But lets not be unfair. There certainly are sciences that study artifacts in addition to
natural phenomena: Ornithologists study both birds (which are natural) and their nests
(which are artifacts); apiologists study both bees (natural) and their hives (artifacts). On
the other hand, one might argue (a) that beehives and birds nests are not human-made
phenomena, and that (b) artifact should be used to refer, not to any manufactured
thing (as opposed to things that are grown), but only to things that are manufactured
by humans, that is, to things that are not found in nature, so to speak. The obvious
objection to this claim is that it unreasonably singles out humans as being apart from
nature.15
Moreover, there once was a science that only studied a particular artifact
microscopes!
13 Newell was also a cognitive scientist, and Simon (in addition to being a cognitive scientist) was also an
In a similar fashion, surely computers are device[s] that [have] extended [our] senses
and widened [our] vistas, and the science of computer scientists is, well, computer
science. (One of the two principal professional associations is the Association for
Computing Machinery.) What holds computer scientists together. . . [is] the vehicle
which carrie[s them] on [their] voyages of observation.
But this is not necessarily a positive analogy. Arguably, microscopy no longer
exists as an independent science. Now, if you search for Department of Microscopy
on the World Wide Web, you will, indeed, find that there are some universities and
museums that have one. But, if you look closer, you will see that they are really
departments of microbiology. Non-biologists who use microscopes (such as some
geologists or physicists) are not found in departments of microscopy today. What
has happened, apparently, is that the use of this artifact by scientists studying widely
different phenomena was not sufficient to keep them in the same academic discipline.
The academic discipline of microscopy splintered into those who use microscopes to
study biology, those who use it to study geology, and so on, as well as those who
build new kinds of microscopes (who might be found in an engineering or an optics
department). A former dean who oversaw the Department of Computer Science at
my university once predicted that the same thing would happen to our department:
The computer-theory researchers would move (back) into the math department; the
AI researchers would find homes in psychology, linguistics, or philosophy; those who
built new kinds of computers would move (back) into electrical engineering; and so on.
This hasnt happened yet, and I dont forsee it happening in the near future, if at all.
But it is something to consider. ([McBride, 2007] suggests that it is already happening;
[Mander, 2007] disagrees.)
It is, in fact, close to another objection: Computer science is really just a branch
of (choose at least one): electrical engineering, mathematics, psychology, etc. Newell,
Perlis, and Simon reply that, although computer science does intersect each of these,
there is no other, single discipline that subsumes all computer-related phenomena.
This, however, begs the question of whether computer science is a single discipline.
I used to be in a philosophy department; although certain branches of philosophy
were not my specialty (ethics and history of philosophy, for instance), I was expected
to, and was able to, participate in philosophical discussions on these topics. But
16 I assume that this means that Malpighi did not study any single, natural phenomenon, but that he studied
my colleagues in computer science often do not, nor are expected to, understand
the details of those branches of computer science that are far removed from their
own. As a computer scientist specializing in AI, I have far more in common with
colleagues in the philosophy, psychology, and linguistics departments than I do with
my computer-science colleagues down the hall who specialize in, say, computer
networks or computer security. (And this is not just an autobiographical confession
on my part; my colleagues in computer networks and computer security would be the
first to agree that they have more in common with some of their former colleagues in
electrical engineering than they do with me.)
NOTE FOR NEXT DRAFT:
Similarly, the microscope has permitted significant advances in biology (and many
other disciplines) but microscopy is (no longer) a science devoted to the study of
that instrument. Presumably, contributions made by AI researchers to philosophy or
psychology should not be considered to be the results of AI research?
END NOTE
If computer science does study computers, but sciences properly so-called (the
natural sciences) do not study such artifacts, perhaps computer science isnt a
(natural) science? Perhaps it is really a branch of engineering. Newell, Perlis, and
Simon reply that it is both. But this is a major topic that we will look at in greater detail
later (especially in Ch. 5).
The most interestingand tellingobjection to their view is that computer science
is really the study, not (just) of computers, but of algorithms: very roughly, the
programs and rules that tell computers what to do. (Well devote a great deal of time
later looking at what algorithms and programs are, so, at this point, I will just assume
that you already have an idea of what they are and wont try to define them further.) For
example, [Bajcsy et al., 1992, 1] explicitly mention the (incorrect) assumption that. . .
[computer science] is based solely on the study of a device. . . .
What is interesting about this objection is how Newell, Perlis, and Simon reply:
They agree! They now say:
Readers would be forgiven if they objected that the authors have changed their
definition! But, instead of making that objection, lets turn to an interestingly different,
yet similar, definition due to another celebrated computer scientist.
3.6. COMPUTER SCIENCE STUDIES ALGORITHMS 75
Starker once said, When you have to explain what you are doing, you discover what you are really doing
[Fox, 2013].
19 Geometry might be different, because Euclid may have considered geometry to be the study of which
geometrical figures were constructible using only compass and straightedge [Toussaint, 1993] (see also
[Goodman, 1987, 4]). Well come back to this in Chapter 7.
20 https://en.wikiquote.org/wiki/Computer science#Disputed
76 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
study of algorithms (and related phenomena such as computers)!21 These are what are
called extensionally equivalent descriptions: They may approach the discipline from
different viewpoints (one from the viewpoint of a physical tool, one from the viewpoint
of an abstract procedure), but the bottom line is the sameonly the emphasis is
different.22
So, we now have two (only slightly different) definitions:
1. Computer science is the study of computers (and related phenomena such as the
algorithms that they execute).
2. Computer science is the study of algorithms (and related phenomena such as the
computers that execute them).
Both characterize computer science as a study, but I think that its pretty clear from
their discussions that they think of it as a science. Is it? To fully answer that, well
need to ask a preliminary question: What is science? Well do that in Ch. 4. Here, lets
look at a slight variant of the first of our two definitions.
In a classic paper from 1976 [Newell and Simon, 1976], Newell and Simon updated
their earlier characterization. Instead of saying that computer science is the science
of computers and algorithms, they now said that it is the empirical study of the
phenomena surrounding computers, not just the hardware, but the programmed,
living machine. (Cf. [Abrahams, 1987, 472]: Computer science focuses, not on the
properties of particular computers, but on the properties of computers in general. It
goes beyond the study of computers as objects to, at least, the study of computers as
active agents). This may not sound too different from what Newell and Simon said
when they were writing with Perlis nine years earlier, but there are some interesting
differences:
First, here they emphasize the empirical nature of the subject: Programs running
on computers are experiments, though not necessarily like experiments in other
experimental sciences. In fact, one difference between computer science and other
experimental sciences is that, in computer science, the chief objects of study (the
21 Similarly to Knuth, [Gal-Ezer and Harel, 1998, 80] say that the heart and basis of the field is
algorithmics even though this does not cover the full scope of CS.
22 Heres a more mundane example of a similar phenomenon: Large supermarkets these days not only
carry groceries, but also pharmaceuticals, greeting cards, hardware, etc. Large drugstores these days not
only carry pharmaceuticals, but also groceries, greeting cards, hardware, etc. (And large general stores
(like Walmart) also carry pretty much the same mix of products.) Although each kind of store approaches
merchandising from different viewpointswe tend to think of Walgreens as a drugstore and Wegmans as a
supermarkettheir bottom line is the same; only their emphasis is different. On extensional equivalence,
see [Rapaport, 2009].
3.7. IS COMPUTER SCIENCE A SCIENCE? 77
computers and the progams) are not black boxes, that is, things whose internal
workings we cannot see directly but must infer from experiments we perform on them.
Rather, because we (not nature) designed and built the computers and the programs, we
can understand them in a way that we cannot understand more natural things.
Second, science may be the wrong term (note that the title of their paper mentions
only empirical inquiry). Computer science may not be a science (in the classic sense)
because it doesnt always strictly follow the scientific (or experimental) method.
(Well talk more about what that method is, in 4.6.) For example, often one experiment
will suffice to answer a question in computer science, whereas in other sciences,
numerous experiments have to be run.
Third, by programmed, living machines, they mean computers that are actually
running programs, not the machines just sitting there waiting for someone to use them,
nor the programs just sitting there on a piece of paper waiting for someone to load
them into the computer, nor the algorithms just sitting there in someones mind waiting
for someone to express them in a programming language. Sometimes, a distinction
is made between a program and a process: A program might be a static piece of
text or the static way that a computer is hardwired; a process is a dynamic entitythe
program in the process of actually being executed by the computer. (Well look at
some of these distinctions in more detail later, in Chapter 12; on the program-process
distinction, see [Eden and Turner, 2007, 2.2].)
If computer science is an empirical discipline (whether its a science, a study,
or an inquiry), it should have some empirical results, or what Newell and
Simon call laws of qualitative structure. They give examples of these for
well-established empirical disciplines: the cell doctrine (biology), plate techtonics
(geology), the germ theory of disease (medicine), and the atomic theory (physics)
[Newell and Simon, 1976, 115]. What about computer science? They cite two laws
of qualitative structure, but it should be emphasized that the two that they cite are
due primarily to them and are highly controversial: the Physical Symbol System
Hypothesis (which explains the nature of symbols) and Heuristic Search (which is a
problem-solving method).
Here, well focus on the first of these,23 which they state as follows
[Newell and Simon, 1976, 116]:
A physical symbol system has the necessary and sufficient means for
general intelligent action.
x is a physical symbol system if and only if x has the means for general
intelligent action,
where24
the source of this kind of thought experiment). They might identify certain physical
features: a keyboard, a screen, internal wiring (and if they were from the 18th century,
they might describe these as buttons, glass, and strings), and so on. More likely, they
would describe the device as we do the brain, in terms of the locations of the parts:
an array of button-like objects on the lower half, a glass rectangle on the upper half,
and so on. But without knowledge of what the entire system and each of its parts was
supposed to dowhat their functions were-they would be stymied. Yet this seems
to be what neuroscientists study. Of course, modern neuroscience, especially modern
cognitive neuroscience, well understands that it cannot fully understand the brain
without understanding its processing (its algorithms, if indeed it executes algorithms).
But this is a topic for another branch of philosophy: the philosophy of cognitive science
(see [Fodor, 1968], [Gazzaniga, 2010], [Piccinini, 2010a]).
So, it seems that we cannot study computers without studying algorithms, but we
can study algorithms without studying computers. So, even though it is quite obvious
that computer science does, in fact, study both, it seems that a definition of computer
science that focuses on its essence, on what it really is, would be one that takes
algorithms to be central. So, let us provisionally summarize our investigation so far:
Knuth is not the only person to make this claim: [Denning et al., 1989, 16, my
emphasis] define computer science as the systematic study of algorithmic processes
their theory, analysis, design, efficiency, implementation, and applicationthat
describe and transform information. Note that they avoid the word science, perhaps
for political reasons (so as not to offend engineers). It is with implementation that
real, physical computers (as well as programming languages) enter their picture. But
it is also interesting to note that Denning et al. immediately go on to cite a version of
Forsythes definition: The fundamental question underlying all of computing is, What
can be (efficiently) automated.
The background to [Denning et al., 1989]s definition-by-committee (that is, a
klunky one designed to be acceptable to a variety of competing interests)26
is that, first, no fundamental difference exists between computer science and
computer engineering in the core material; second, there are three major
paradigms[:]. . . theory, [which] is rooted in mathematics. . . [,] abstraction (modeling),
[which] is rooted in the experimental scientific method. . . [; and] design, [which]
is rooted in engineering. . . . . . . [I]n computing[,] the three processes are so
intricately intertwined that it is irrational to say that any one is fundamental
[Denning et al., 1989, 10].
But there are still some questions to consider: First, there are the questions that we
have been putting off: Is it a science? What is a science? Second, there are questions
about whether there are any alternatives to it being a science (or other kind of study) of
algorithms (or computers). Lets continue to put off the questions about science, and
focus on what else computer science might be a science of.
26 The standard joke about such definitions is that a camel is a horse designed by a committee. See
The procedures are, or could be, carried out in the real world by physical (biological,
mechanical, electronic, etc.) agents. Procedures are not natural objects, but they are
measurable natural phenomena, in the same way that events are not natural objects
but are natural phenomena. Procedures include, but are not limited to, algorithms.
Whereas algorithms are typically considered to halt and to produce correct solutions,
the more general notion of procedure allows for an algorithm-like entity that may be
vague (e.g., a recipe), that need not halt (e.g., that goes into an infinite loop either
by accident or on purpose, as in an operating system or a program that computes the
infinite decimal expansion of ), or that does not necessarily produce a correct solution
(e.g., a chess procedure does not always play optimally). (We will return to these issues
in Chs. 7 and 11.) Does computer science really study things like recipes? According
to Shapiro (personal communication), the answer is yes: An education in computer
science should help you write a better cookbook (because it will help you understand
the nature of procedures better)! (For a nice discussion of the difficulties of writing
recipes, see [Sheraton, 1981].)
And computer science is a science, which, like any science, has both theoreticians
(who study the limitations on, and kinds of, possible procedures) as well as
experimentalists. And, as Newell and Simon suggested in their discussion of empirical
results, there are fundamental principles of computer science as a science. Shapiro
cites two: The Church-Turing Thesis to the effect that any algorithm can be expressed
as a Turing-machine program (which we will discuss in Chs. 7, 8, and 10) and
the Boehm-Jacopini Theorem that codifies structured programming (which we will
discuss in Ch. 7).
Where do computers come in? A computer is simply a general-purpose procedure-
following machine. But does a computer follow a procedure, or merely execute
it? (Well come back to this in Ch. 10.)
How about the role of information? According to [Shapiro, 2001], computer
science is not just concerned with abstract information, but also with procedures that
are linked to sensors and effectors that allow computers to operate in the real world.
(Well examine the relationship between computers and the world in Ch. 17.)
are, and how computers and algorithms are related to each other. All of this in due
time!
Another open question that we should look at is whether computer science is
a science. Dont forget, we are calling the subject computer science only for
convenience; it is not a tautology to say that computer science is a science nor is it a
self-contradiction to say that it computer science is not a science. Think of the subject
as being called by the 16-letter word computerscience that has as much to do with the
words computer and science as cattle has to do with cat.
[Brooks, 1996] says that it isnt an analytic science, presumably because, according
to him, it is not concerned with the discovery of facts and laws. Whether or not
Brookss notion of what science is is accurate will be our focus in Chapter 4. For
now, it will have to suffice to point out (a) that computer scientists who study the
mathematical theory of computation certainly seem to be studying scientific laws and
(b) that computer scientists like Newell, Simon, and Shapiro have pointed out that the
physical symbol system hypothesis or the Boehm-Jacopini theorem certainly seem to
be scientific theories, facts, or laws: Computer programming is an exact science in
that all the properties of a program and all the consequences of executing it in any
given environment can, in prinicple, be found out from the text of the program itself by
means of purely deductive reasoning [Hoare, 1969, 576, my italics].28 So, it certainly
seems that at least part of computer science is a science. But perhaps there are parts
that arent.
In particular, Brooks argues that computer science is an engineering discipline;
he views the computer scientist as a toolmaker. Computer scientists are concerned
with making things like physical computers and abstract tools like algorithms,
programs, and software systems for others to use. He uses J.R.R. Tolkiens phrase the
gift of subcreation to describe this concern. Computer science, he says, is concerned
with the usefulness and efficiency of the tools it makes; it is not, he says, concerned
with newness for its own sake (as scientists are). And the purpose of the tools is to
enable us to manage complexity. So, the discipline we call computer science is
really the synthetici.e., engineeringdiscipline that is concerned with computers.
Of course, before we can seriously consider whether computer science is really
an engineering discipline as opposed to a science, well need to look into what
engineering is, just as we will have to look into what science is. But here is an
argument for your consideration: Perhaps computer science is both a science and an
engineering discipline. First, it makes no sense to have a computer without a program:
The computer wouldnt be able to do anything. (It doesnt matter whether the program
is hardwired (in the way that a Turing machine is; see 8.12) or is a piece of software
(like a program inscribed on a universal Turing machines tape; see 8.13). But, second,
it also makes no (or at least very little) sense to have a program without a computer to
run it on. Yes, you can study the program mathematically (e.g., try to verify it (see
Ch. 16), study its computational complexity [Loui, 1996, Aaronson, 2013], etc.). But
what good (what fun) would it be to have, say, a program for passing the Turing test
that never had an opportunity to pass it? So, computers require programs in order for
them to do anything, and programs require computers in order for the program to be
28 Well look into this claim in more detail in Ch. 16.
3.12. SUMMARY 83
3.12 Summary
What is computer science? As we have seen, there are several different, but related,
answers to this question.
The answers differ on several dimensions:
Category (or genus):31
sophisticated introduction, see [Rohlf, 2010] and other articles on Kant in the online Stanford Encyclopedia
of Philosophy at: http://plato.stanford.edu/search/searcher.py?query=kant (accessed 15 November 2013).
30 Or is it the other way round?: Programs without computers are empty; computers without programs are
blind?
31 Here, I am using the word genus in the sense of Aristotles notion of a definition by genus and
differentia, where a term is defined by reference to its genus (what kind of thing it is) and its differentia
(how it differs from other things of that kind); see the Wikipedia article Genus-differentia definition,
http://en.wikipedia.org/wiki/Genus-differentia definition, accessed 30 September 2011.
84 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
(b) empirical
2. (a) natural
(b) artificial
(These cross-cut each other: That is, there are 4 possibilities.)
Subject matter:
1. computers (and related phenomena)
empirical, artificial?
2. (a) algorithms (and related phenomena)
(b) procedures (and related phenomena)
natural?, mathematical?, empirical/experimental?
3. information (and related phenomena)
natural?, mathematical?, empirical/experimental?
Finally, these may all turn out to be extensionally equivalentthat is, it may be the
case that computer science is an engineering discipline of computers if and only if it is
also science of algorithms, etc. The only differences may be the focus or point of
view that depend on what the related phenomena are in each case.
A more complete answer is going to depend on answers to many other questions,
including (but not limited to):
What is science?
What is engineering?
What is a computer?
What is an algorithm?
We will discuss some, but not all, of these topics later. For example, we wont
discuss mathematics vs. empirical sciences or natural vs. artificial sciences; if you are
interested in these questions, you should read books on the philosophy of science or
the philosophy of mathematics.
But well discuss science vs. engineering (Ch. 4 and Ch. 5), computers (Chs. 6 and
9), and algorithms and procedures (Ch. 7). And well begin by asking, If computer
science is a science, what is science?.
3.13. NOTES FOR NEXT DRAFT 85
Actually, theres a prior division: CS is nothing but something else (the John
Ho/CS is math/CS is EE arguments; bring in microscopy here) vs. CS is its own
discipline; in the latter case, it has a methodology and an object (see above).
Still, it might be the case that its methodology and/or its object are (also) those
of some other discipline. Finally, it may have a new, unique methodology and/or
object (sui generis).
E.g., Shannons 1950 paper on chess: The principal question is: Can we
mathematically analyze chess? In partic, can we computationally analyze
it (suggesting that computational analysis is a branch/kind of mathematical
analysis)i.e., can we analyze it procedurally? I.e., can we play chess
rationally?
How to is certainly important, and interestingly distinct from what is. But
consider Euclids Elements; it was originally written in how to form: To
construct an equilateral triangle, do such-and-such
(http://tinyurl.com/kta4aqh32 [Toussaint, 1993]). But today it is expressed in
what is form: The triangle that is constructed by doing such-and-such is
32 http://www.perseus.tufts.edu/hopper/text?doc=Perseus%3Atext%3A1999.01.0086%3Abook%3D1%3Atype%3DProp%3Anumber%3D1
90 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
equilateral. So, is there really a difference between how to and what is?
(See also [Goodman, 1987, 4].)
8. On Malpighi:
The debate over the appropriate place of computing in grade schools
and high schools echoes the debate in universities decades ago,
when computers and software were initially seen as mere plumbing.
And certainly not something worthy of study in its own right. A
department of computer science? Why not a department of slide
rules? From: Lohr, Steve (2008) Does Computing Add Up in the
Classroom?, New York Times (1 April).
See also Guzdial 2008, esp citation to Alan Perlis; Also on the nature of both
procedural thinking and computational thinking more generally, see: Carey
2010.
Were at the tail end of Moores Law....But this will be the best thing
that can happen to CS. Moores Law has been tremendously beneficial
to society. At the same time, its been so damn powerful that it has set
back the development of algorithms. But thats about to change. Any
student interested in science and technology needs to learn to think
algorithmically. Thats the next big thing.
From Anthes 2006
13. On difference between CS and science:
3.13. NOTES FOR NEXT DRAFT 91
14. On CS as math:
That computer science is somehow a mathematical activity was a
view held by many of the pioneers of the subject, especially those who
were concerned with its foundations. At face value it might mean that
the actual activity of programming is a mathematical one. Indeed, at
least in some form, this has been held. But here we explore a different
gloss on it. We explore the claim that programming languages are
(semantically) mathematical theories. This will force us to discuss the
normative nature of semantics, the nature of mathematical theories,
the role of theoretical computer science and the relationship between
semantic theory and language design. Turner 2010
15. On the nature of defs, discuss the def of planet. See, e.g., [Lemonick, 2015].
16. On magic:
The entities that populate the referent node [of the meaning triangle
consisting of words, concepts (abstract, or in the head), and referents
(concrete, and part of the external world)] are usually construed
as objects out there. . . because they are independent of what any
person thinks or says. The qualifier out there is to capture the
intution that words can be uttered, and thought can be generated,
but no amount of thinking or talking is going to bring a table or cat
or chair into being. (p. 507) Regoczei, Stephen; & Hirst, Graeme
(1990), The Meaning Triangle as a Tool for the Acquisition of
Abstract, Conceptual Knowledge, International Journal of Man-
Machine Studies 33: 505520.
Thats exactly what magic does: spells bring physical objects and events into
being. (syntax produces semantics!)
But
The programmer, like the poet, works only slightly removed from
pure thought-stuff. He [sic] builds castles in the air, creating by the
exertion of the imagination. . . . Yet the program construct, unlike
the poets words [or the magicians spells?], is real in the sense
that it moves and works, producing visible outputs separate from the
construct itself. . . . The magic of myth and legend has come true in our
3.13. NOTES FOR NEXT DRAFT 93
Of course, the main difference between the magic of myth and legend and
how computers work is that the former lacks (or at least fails to specify)
any causal connection between incantation and result. As Arthur C. Clarke
said, Any sufficiently advanced technology is indistinguishable from magic
(http://en.wikipedia.org/wiki/Clarkes three laws).
The first quote is even better, because it has no mystical overtones. Clearly,
programming involves exactly that kind of use of symbols (which well look at
in more detail when we investigate the relation of computers to the world, in
Ch. 17). The second quote either clearly includes the use of computers, or else
is too broad a definition of magic!
The magical act involves three components: the formula, the rite,
and the condition of the performer. The rite consists of three
essential features: the dramatic expression of emotion through gesture
and physical attitude, the use of objects and substances that are
imbued with power by spoken words, and, most important, the
words themselves. [Stevens, 1996, 722, col. 2, citing Bronislaw
Malinowski]
Figure 3.3: Computers can show. . . things that never were nor could be.
96 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
First, we see this happening in computers when we treat icons (which are a kind
of symbol) on a desktop or a WYSIWYG word processor as if they were the
very things they represent. But, perhaps more significantly, we see this in the
case of those computer simulations in which the simulation of something is that
(kind of) thing, as in online banking, where the simulation of transferring funds
between accounts is the transferring of funds. (See [Rapaport, 2012b, 8] for
further discussion.) Computers are not just metaphorically magic (as Arthur C.
Clarke might have said); they are magic!
This would make a nice intro and closing quote for a discussion of computer
science as magic.
[Newell, 1980, 156] says some things about the nature of physical symbol
systems (that is, computers) that have magical overtones. The symbols of
such a system stand for some entity, that is:
Here, I take it that what Newell means is that Ps behavior really depends on
Y instead of on X. But that seems to be the essence of magic; it is action at a
distance: The process behaves as if inputs, remote from those it in fact has, effect
it. Process P behaves as it does because of a symbolic spell cast at a distance
from P itself.
[Samuelson et al., 1994, 2324n44,n46; 2325n47] cite an NRC report that talks
about user interfaces as illusions.
(a) both art & sci; in what sense art?he never says. (but see below)
(b) And why info? Possibly because of this earlier (1963) statement:
Machine-held strings of binary digits can simulate a great many
kinds of things, of which numbers are just one kind. For
example, they can simulate automobiles on a freeway, chess
pieces, electrons in a box, musical notes, Russian words, patterns
on a paper, human cells, colors, electrical circuits, and so on.
(Quoted in [Knuth, 972b, 722].)
This is one of the Great Insights. Whats common to all of these,
encoded/abstracted as bit strings, is the information contained in them.
And perhaps because some of these are not sciences, if CS is going
to study them, it must be an art.
(c) Forsythe goes on to say:
[A] central theme of computer science is analogous to a central
theme of engineering sciencenamely, the design of complex
systems to optimize the value of resources. [Forsythe, 1967a, 3].
Note that he doesnt say that CS is engineering.
And note that he speaks of engineering science, suggesting that he thinks
of engineering as a kind of science; certainly, engineering and science per
se are on the same side as opposed to art.
(d) That Forsythe sees CS as more of a science than a branch of engineering
is emphasized when he says, Probably a department of computer science
belongs in the school of letters and sciences, because of it close ties with
departments of mathematics, philosophy, and psychology. But its relations
with engineering departments. . . should be close. [Forsythe, 1967a, 6].
(a) Although they say initially that computer science is the science of
computers, they almost immediately modify that in their Obejction 3,
where they say that by computers they mean living computers
the hardware, their programs or algorithms, and all that goes with them.
Computer science is the study of the phenomena surrounding computers
[Newell et al., 1967, 1374, my emphasis]. And, as they point out in their
reply to Objection 5, Phenomena define the focus of a science, not its
boundaries [Newell et al., 1967, 1374].
(b) They also say that astronomy is the science of stars [Newell et al., 1967,
1373]. Edsger W. Dijkstra once noted that astronomy was not the science
of telescopes CITE; telescopes are used to study the stars.34 Similarly, one
might say that computers are used to study algorithms (and that algorithms,
in turn, are used to study various phenomena in mathematics, other
sciences, etc.). So, Dijkstra would say that computer science should not
be considered a science of the instrument that is used to study algorithms,
any more than astronomy is considered the science of the instrument that
is used to study stars. Newell et al. address this in their Objection 4:
The computer is such a novel and complex instrument that its behavior
is subsumed under no other science [Newell et al., 1967, 1374]. But the
same was once said about microscopes. And we know what happened to
the science of microsopy. DISCUSS MICROSCOPY.
(c) Moreover, that there is no other single science that studies computer
behavior may be irrelevant. Newell et al. deal with this in their Objection 5
FORMER DEAN STORY FROM ABOVE.
(d) At the end, they even allow that the study of computers may also be
an engineering discipline [Newell et al., 1967, 1374]. So, they ultimately
water down their definition to something like this: Computer science is
the science and engineering of computers, algorithms, and other related
phenomena.
20. When the discipline was first getting started, it emerged from various other
disciplines: electrical engineering, physics, mathematics, or even business
[Hamming, 1968, 4]. (In fact, the first academic computer programming course
I took (in Fortran)the only one offered at my university in the late 1960swas
given by the School of Business.)
21. CS questions:
(a) What can be computed? (computability vs. non-computability)
The question What can be automated? is one of the most
inspiring philosophical and practical questions of contemporary
civilization. (George Forsythe, 1968; quoted in [Knuth, 972b,
722723].)
34 Dikjstra 1987, cited in Tedre & Sutinen 2008, said that calling the discipline computer science is like
referring to surgery as knife science. This may be true, but the problem, of course, is that we have no term
corresponding to surgery.
100 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
22. [I]n the long run the solution of problems in field X on a computer
should belong to field X, and computer science should concentrate on
finding and explaining the principles [the methodology] of problem
solving [with computers]. [Forsythe, 1967b, 454]
(a) So, the kind of work that we did for QIKR was really philosophy, not CS.
(b) As an example of such methodological research, he cites interactive
systems, in which a man [sic] and a computer are appropriately
coupled. . . for the solution of scientific problems [Forsythe, 1967b, 454].
This is a kind of oracle computation.
(c) Presumably, the idea is for CS proper to abstract away from solving specific
problems in X and to concentrate on general methods of problem solving
using computers. But what does that come down to besides how to write
algorithms? (It does ignore how to make computers.)
He does not argue for premise 23a, taking the only if half (mathematical
disciplines satisfy 23(a)i23(a)iii) as something that most of us can agree
upon, and implicitly justifying the if half (disciplines that satisfy 23(a)i
23(a)iii are mathematical) on the grounds that the objects of mathematical
investigation need not be such usual suspects as numbers, shapes, etc., because
what matters is how objects are studied, not what they are.
And he argues for premise 23b on the grounds that programming clearly requires
extraordinary precision, that programs can accept a wide range of inputs (and
thus are general), and that contemporary program-verification techniques are
based on logical reasoning. We will look into those techniques in Ch. 16; for
now, lets assume that this is true.
Are programs really general in the sense that mathematical assertions are? A
typically general mathematical assertion might be something like this: For any
triangle, the sum of its angles is 180 degrees. In other words, the generality
of mathematical assertions comes from their being universally quantified (for
any x. . . ). Is that the kind of generality that programs exhibit? A program
(as we will see more clearly in Ch. 7) computes a (mathematical) function. So,
insofar as mathematical functions are general, so are programs. Consider a
simple mathematical function: f (x) = 2x. If we universally quantify this, we
get: x[ f (x) = 2x]. This seems to be general in the same way that our assertion
about triangles was, so I think we can agree with Dijkstra about programming
being mathematical.
24. More on Knuth:
(a) Why should we give so much emphasis to teaching how to use
computers, if they are merely valuable tools like (say) electron
microscopes? [Knuth, 1974b, 324]
Nice lead-in to the microscopy section.
His response is that computers are more than this, that [t]he
phenomena surrounding computers are immensely varied and
complex, requiring description and explanation [Knuth, 1974b, 324].
But that can be taken two ways: Algorithms are the phenomena
surrounding computers, and surely they are an appropriate object of
study. Alternatively, because the phenomena that surround computers
are an appropriate object of study, that makes their focus, namely,
computers, also appropriate (unlike microscopes, the construction of
which doesnt illuminate biology directly).
(b) [L]ike electricity, these phenomena [surrounding computers]
belong both to engineering and to science. [Knuth, 1974b, 324]
So maybe when Knuth says that computer science is the study of
algorithms, by study he means both science and engineering. In
what sense does the study of electricity belong both to engineering
102 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
programming is (or at least was at the time of his writing) not yet fully
scientific. If some subject is never fully scientifically understood, then what
is left over remains an art:
Artificial intelligence has been making significant progress, yet
there is a huge gap between what computers can do in the
foreseeable future and what ordinary people can do. . . . [N]early
everthing we do is still an art. [Knuth, 1974a, 668669].
(d) But he then goes on to give a slightly different meaning to art, one more
in line with the sense it has in the fine arts, namely, as an art form, in an
aesthetic sense [Knuth, 1974a, 670]. In this sense, programming can be
beautiful and it can be like composing poetry or music [Knuth, 1974a,
670]. This not inconsistent with programming being considered a science
or a branch of mathematics (which well discuss in Ch. 16); indeed, many
scientists and mathematicians speak of theories, theorems, demonstrations,
or proofs as being beautiful. One can, presumably, scientifically (or
mathematically) construct a logically verifible program that is ugly (e.g.,
difficult to read or understand) as well as one that is beautiful (e.g., a
pleasure to read or easy to understand).
(e) So, whether computer science is an art is probably not to be set alongside
the question of whether it is a science or a branch of engineering.
But lets see if we can strengthen it a bit: Suppose, for the sake of
argument, that all of the problems that a discipline D1 is concerned with
come from discipline D2. Does it follow that D1 is nothing but D2?
Heres a (perhaps weak) analogy, which I will strengthen in a moment:
Suppose that you want to express some literary idea; you could write a
short story, a novel, or a poem perhaps. Does it follow that prose fiction and
poetry are the same thing? Probably not; rather, poetry and prose are two
different ways of solving the same problem (in our example, the problem of
expressing a certain literary idea). Similarly, even if both computer science
and mathematics study the same problems, they do so in different ways:
Mathematicians prove (declarative) theorems; computer scientists express
their solutions algorithmically.
So, the argument is probably invalid. Worse, its premise is most likely
false: Surely, there are many problems dealt with in computer science that
are not purely mathematical in nature. Even if we eliminate hardware issues
(the purely computer engineering side of the discipline) from consideration,
surely topics such as operating systems and artificial intelligence are not
purely mathematical in nature.
that transform information. So, one could either take him as seeing
algorithms (processes, procedures) as being the focus, or else information.
Interestingly, he twice cites with great approval Forsythes What can be
automated? [Denning, 1985, 16, 19] without clearly stating its relation to
processes that tranform information.
[Barwise, 1989, 386387] says that computers are best thought of as
information processors, rather than as numerical calculators or as
devices which traffic in formal strings. . . of meaningless symbols.
Although he doesnt argue that computer science is the study of information
or information processing, I think he might side with that characterization.
His principal reason seems to be that the. . . view of computers as
informational engines. . . makes sense of the battle for computational
resources and enables us to think about them so as to make the best
decisions about their acquisition and use. And why is that? One
(abductive) reason is that this view enables us to understand the impact
of computers along the same lines as we understand the impact of books
and printing [and] . . . movable type. . . . [C]omputers are not just super
calculators. They make available a new informational medium. . . just as
with printing. This may seem obvious or not, but Barwise was writing
in 1989, way before the advent of the World Wide Web, Kindles, or
iPads, and his prediction certainly seems to be coming true. But why is
information processing the key, rather than, say, symbol manipulation?
Arguably, information processing is nothing but symbol manipulation.
Arguably, however, it is interpreted symbol manipulation; moreover, not
all symbol manipulation is necessarily information in some sense. So,
perhaps, although computers are nothing but symbol manipulators, it is
as information processors that they will have (are having) an impact.
Just as with the claim that computer science is a science, there are two
versions of this, a strong and a weak version: The weak version is
that computer science is at least a branch of engineering, or that part
of computer science is a branch of engineering. This allows for the
possibility that computer science might be engineering together with being
something else (such as a science) or that computer science can be divided
into subdisciplines (such as a science subdiscipline and an engineering
subdiscripline).
The strong version is that computer science is nothing but engineering (and
is not also a science).
[Loui, 1987, 175] argues against [Krantz, 1984] that computer science is a
legitimate academic discipline (not another discipline, such as math, and
not something that will disappear or dissolve into other disciplines, like
microscopy).
106 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
And, apparently against people like [Newell et al., 1967], he argues that it
is not the study of the use of computers [Loui, 1987, 175]. But that word
use is important. What Loui has in mind is certainly includes the study of
hardware [Loui, 1987, 176]; what he is rejecting is that computer science,
as an academic discipline, is the study of how to use computers (in the way
that driving schools teach how to drive cars).
His definition is this: Computer science is the theory, design, and analysis
of algorithms for processing [that is, for storing transforming, retrieving,
and trasmitting] information, and the implementations of these algorithms
in hardware and in software [Loui, 1987, 176]. He thus seems to side with
[Denning, 1985] and, perhaps, [Knuth, 1974b].
He then goes on to argue that computer science is an engineering discipline
[Loui, 1987, 176]:
(a) Engineering. . .
i. is concerned with what can exist (as opposed to what does exist.
ii. has a scientific basis
iii. applies principles in design
iv. analyzes trade-offs
v. has heuristics and techniques
(b) Computer science has all the[se] significant attributes of engineering
(c) , computer science is a branch of engineering.
We will delay investigation of the first premise to Ch. 5.
His justification that computer science is not concerned with what exists is
related to the claim that others have made CITE that computer science is
not a natural science, but a science of human-made artifacts. There are
two possible objections to this: First, insofar as procedures are natural
entities, computer scienceas the study of procedurescan be considered
a natural science. Second, insofar as some artifactssuch as birds nests,
beehives, etc.are natural entities, studies of artifacts can be considered to
be scientific.
entities. But in the latter case, why worry about whether computer science
is concerned with what can, rather that what does, exist?
31. Is computer science coextensive with (if not identical to) electrical (more
precisely, electronic) engineering?
[Ceruzzi, 1989] doesnt explicitly say this, but he comes close: First,
Electronics emerged as the technology of choice [over those that
were used in mechanical calculators or even early electric-relay-based
computers] for implementing the concept of a computing machine. . . .
. . . This activity led to the study of computing independently of the
technology out of which computers were built. In other words, it led to
the creation of a new science: Computer Science [Ceruzzi, 1989, 257].
Second, As computer science matured, it repaid its debt to electronics
by offering that engineering discipline a body of theory which served to
unify it above the level of the physics of the devices themselves. In short,
computer science provided electrical engineering a pardigm, which I call
the digital approach, which came to define the daily activities of electrical
engineers in circuits and systems design [Ceruzzi, 1989, 258].
3.13. NOTES FOR NEXT DRAFT 109
32. [Licklider and Taylor, 1968] fairly accurately predicted what computers would
look like, and how they would be used, today (nearly 50 years in the future).
What they were writing about is clearly part of computer science, yet equally
clearly not (directly) part of the abstract, mathematical theory of computation.
This strongly suggests that it would be wrong to treat computer science as
being primarily about algorithms or primarily about computers. It is about both.
Well see this more clearly when we trace the parallel histories of computers
(as calculating machines) and computing (as it evolved from the search for a
foundation for mathematics).
33. HARTMANIS 1993 SHOULD PROBABLY BE
REQUIRED/VERY STRONGLY RECOMMENDED, BUT RE-READ HIS 3
PAPERS (1992 WITH LIN, 1993, AND 1995 TO SEE WHICH SHOULD BE
REQUIRED, WHICH V.S.R, ETC.
Second, what does it mean to be a new species of science? Both chimps and
tigers are species of animals, and both lions and tigers are species within the
genus Panthera. Is the relation of computer science to other sciences more like
the relation of chimps to tigers (pretty distant) or lions to tigers (pretty close)? A
clue comes in Hartmaniss next sentence:
This view is justified by observing that theory and experiments in
computer science play a different role and do not follow the classic
pattern in physical sciences. [Hartmanis, 1993, 1]
110 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
This strongly suggests that computer science is not a physical science (such as
physics or biology), and Hartmanis confirms this suggestion on p. 5: computer
science, though not a physical science, is indeed a science (my italics; cf.
[Hartmanis, 1993, 6], [Hartmanis, 1995a, 11]). The non-physical sciences are
typically taken to include at least the social sciences (such as psychology) and
mathematics. So, it would seem that the relation of computer science to other
sciences is more like that of chimps to tigers: distantly related species of the
same, high-level genus. And, moreover, it would seem to put computer science
either in the same camp as (either) the social sciences or mathematics, or else in
a brand-new camp of its own, i.e., sui generis.
And immediately after his claim that he will not define computer science (see
the motto to 3.4), he gives this characterization:
At the same time [that is, despite his immediately preceding refusal
to define it], it is clear that the objects of study in computer science
are information and the machines and systems which process and
transmit information. From this alone, we can see that computer
science is concerned with the abstract subject of information, which
gains reality only when it has a physical representation, and the
man-made devices which process the representations of information.
The goal of computer science is to endow these information
processing devices with as much intelligent behavior as possible.
[Hartmanis, 1993, 5] (cf. [Hartmanis, 1995a, 10])
Although it may be clear to Hartmanis that information, an abstract subject,
is (one of) the object[s] of study in computer science, he does not share his
reasons for that clarity. Since, as we have seen, others seem to disagree that
computer science is the study of information (others have said that it is the
study of computers or the study of algorithms, for instance), it seems a bit
unfair for Hartmanis not to defend his view. But he cashes out this promissory
note in [Hartmanis, 1995a, 10], where he says that what sets it [computer
science] apart from the other sciences is that it studies processes [such as
information processing] that are not directly governed by physical laws. And
why are they not so governed? Because information and its transmission are
abstract entities [Hartmanis, 1995a, 8]. This makes computer science sound
very much like mathematics (which is not unreasonable, given that it was this
aspect of computer science that led Hartmanis to his ground-breaking work
on computational complexity, an almost purely mathematical area of computer
science)
But its not just information that is the object of study; its also information-
processing machines, that is, computers. Computers, however, dont deal
directly with information, because information is abstract, that is, non-physical.
For one thing, this suggests that, insofar as computer science is a new species
of non-physical science, it is not a species of social science: Despite its name,
3.13. NOTES FOR NEXT DRAFT 111
the social sciences seem deal with pretty physical things: societies, people,
speech, etc. (This, by the way, is controversial. After all, one of the main
problems of philosophy is the problem of the relation of the mind (which seems
to be non-physical and is studied by the social science of psychology) to the
brain (which is clearly physical and is studied by the natural sciences of biology
and neuroscience). And philosophers such as John Searle [Searle, 1995] have
investigated the metaphysical nature of social institutions such as money, which
seem to be neither purely abstract (many people cash a weekly paycheck and
get real money) nor purely natural or physical (money wouldnt exist if people
didnt exist). So, if computer science is a science, but is neither physical nor
social, then perhaps it is more like mathematics, which is sometimes called a
formal science (http://en.wikipedia.org/wiki/Formal science).
For another thing, to say that computers dont deal directly with information,
but only with representations of information suggests computer science has a
split personality: Part of it deals directly with something abstract (information),
and part of it deals with directly with something real but that is (merely?) a
representation of that abstraction (hence dealing indirectly with information).
Such real (physical?) representations are called implementations; we will look
at that notion in more detail in Ch. 14 and at the relation of computers to the real
world in Ch. 17.
Here we have another reason why computer science is not a physical science
(and probably also why it is not a social science). But there are two ways to
understand how: Algorithms are the prime formal entity that codify how to
accomplish some goal. But, as Hartmanis quickly notes, engineering is the prime
discipline that is concerned with how to do things, how to build things (which
well look at in more detail in Ch. 5). The first kind of how is mathematical
112 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
One way to answer this new question is to look at some of the advertising
mentioned in 3.3.1.4. Here is a more or less random selection; some of
these definitions of computer science were originally found on departmental
websites or from introductory course materials:
(a) Because the word compute comes from a Latin expression meaning to
reckon together, perhaps computer science is the science of how to
calculate [Jacob, 1999]. As we will see, this is not entirely unreasonable,
but a more plausible characterization is that computer science is the
science of processing information by computers [Jacob, 1999].
As Alexander the Great knew when he sliced through the Gordian knot
instead of untying it, there are at least two ways to solve problems.35
Presumably, a science of problem solvingbased on theories of
algorithms, data structures, and complexityis to be contrasted with mere
hacking in the sense of playing around. But one might also wonder
how solving problems might be related to calculating or processing
information, and how the computer is supposed to help.
37. Hartmanis calls computer science a new species among the sciences
[[Hartmanis, 1995a]; but see also [Hartmanis, 1993, 1]]. . . . I have
argued that it would be more accurate to call computer science a new
species of engineering [Loui, 1987]. [Loui, 1995, 31]
But his argument here [Loui, 1995, 31] is interestingly different from his earlier
one:
This is interesting, because it is invalid! Just because two things share a common
property, it does not follow that one is subsumed under the other. For one
thing, Loui could equally well have concluded that engineering was a species
of computer science. But, more importantly, just because both cats and dogs are
household pets, it doesnt follow that either is a species of the other.
But there are better arguments for considering computer science to be a branch
of engineering, as we have seen (and will look at more closely in Ch. 5. If it
is engineering, what kind of new engineering is it? Heres Louis argument
[Loui, 1995, 31] for that:
This argument is interesting for better reasons than the first one. First, there are
a few missing premises:
Recall that we can assume that computer science is a kind of engineering (if not
from Louis invalid argument, then, at least, from some of the better ones given
by others). So, from that and 37a, we can infer that computer science (an an
35 http://en.wikipedia.org/wiki/Gordian Knot, accessed 20 September 2011.
3.13. NOTES FOR NEXT DRAFT 115
engineering discipline) must have a scientific basis. We need premise 37A so that
we can infer that the basis of computer science, which, by 37b is mathematics,
is indeed a scientific one. (Alternatively, one can view 37b as the conjunction of
The fundamentals of computer science are rooted in mathematics and 37A.)
Then, from 37B, we can infer that computer science must differ from all other
branches of engineering. It is, thus, mathematical engineering (as others have
noted).
But this reminds me of the dialogue between [Newell et al., 1967] and
[Knuth, 1974b]. Both Loui and Hartmanis agree that computer science is a new
kind of something or other; each claims that the scientific/mathematical aspects
of it are central; and each claims that the engineering/machinery aspects of it
are also central. But one calls it science, while the other calls it engineering.
Again, it seems to be a matter of point of view.
His last two sentences suggest that, rather that consider computer science to be
either science or else engineering (or even sui generis), it should be thought of
as an interdisciplinary discipline. As such, its goal would be to bring to bear
what is special to itnamely, algorithms and computersto problems in other
disciplines. This is summarized in his final paragraph:
That would be a great quote to end either this chapter or the chapter on
engineering (before going on to other questions).
39. More comments on [Brooks, 1996]; maybe some or all of this should go in Ch. 5?
Brookss argument:
116 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
(a) [A] science is concerned with the discovery of facts and laws.
[Brooks, 1996, 61, col. 2]
(b) [T]he scientist build in order to study; the engineer studies in order to
build. [Brooks, 1996, 62, col. 1]
(c) The purpose of engineering is to build things.
(d) Computer scientists are concerned with making things, be they computers,
algorithms, or software systems. [Brooks, 1996, 62, col. 1]
(e) the discipline we call computer science is in fact not a science but a
synthetic, an engineering, discipline. [Brooks, 1996, 62, col. 1]
The point of the second premise is this: If a scientists goal is to discover facts
and laws, that is, to study, then anything built by the scientist is only built for
that ultimate purpose; but building is the goal of engineering (and any studying,
or discovery of facts and laws) that an engineer does along the way to building
whatever is being built is merely done for that ultimate purpose. Put another way,
for science, building is a side-effect of studying; for engineering, studying is a
side-effect of building. (Does this remind you of the algorithms-vs.-computers
dispute earlier? Both scientist and engineers, according to Brooks, build and
study, but each focuses more on one than the other.)
To sum up, the point of the second premise is to support the next premise,
which defines engineering as a discipline whose goal is to build things, that is, a
syntheticas opposed to an analyticdiscipline.36 Again, whether or not
Brooks notion of what engineering is is accurate will be our focus in Ch. 5.
So, lets assume the truth of the second and third premises for the sake of the
argument.
Clearly, if the third premise is true, then the conclusion will follow validly (or,
at least, it will follow that computer scientists belong on the engineering side of
the science-engineering, or studying-building, spectrum). So, is it the case that
computer scientists are (only? principally?) concerned with building or making
things? And, if so, what kind of things?
Moreover, what computer scientists build, unlike what other engineers build, are
not things for direct human benefit (at least, not in 1977 when he first wrote these
words and when very few people other than scientists, engineers, and business
people had access to (gigantic) computing machinescertainly, there were no
personal computers, laptops, tablets, or smartphones) but, rather, things that in
turn can be used to build such directly beneficial things. Put more simply, his
answer to the question What is a computer? seems to be: A computer is a tool
(and a computer scientist, who makes such tools, is a toolsmith [Brooks, 1996,
62, col. 1].
But much of what he says against computer science being considered a science
smacks of a different battle, one between science and engineering, with scientists
belittling engineers. Brooks takes the opposite position: as we honor the
more mathematical, abstract, and scientific parts of our subject more, and the
practical parts less, we misdirect young and brilliant minds away from a body of
challenging and important problems that are our peculiar domain, depriving the
problems of the powerful attacks they deserve [Brooks, 1996, 62, col. 2].
To complete his argument, he needs a premise that states that computer science
is not engineering, that is, that computer science education doesnt prepare
computer scientists to use computer science to build things or just that computer
scientists dont build things. (That leaves open the possibility that computer
science might be a branch of math or a technology of the day, but its pretty
clear from the first quote that he thinks that it is a science.) This missing premise
is the gist of his entire article. But at least one part of his argument is this: Proper
training in software engineering (designing, building, testing, and maintaining
3.13. NOTES FOR NEXT DRAFT 119
software produces [Parnas, 1998, 2]) requires more than a course or two offered
in a computer science curriculum; rather, it requires an accredited professional
programme. . . modelled on programmes in traditional engineering disciplines
[Parnas, 1998, 2].
But we still havent got a clear statement as to why he thinks that computer
science is a science and is not engineering. Well, maybe the latter: Its not
engineering, because there is no rigid accreditation process. . . [hence, no] well
documented core body of knowledge. . . for computer science [Parnas, 1998,
2]. Such accreditation might be necessary, but is surely not sufficient: One might
force such a core body of knowledge and such an accreditation process on, say,
physics, but that wouldnt make physics an engineering discipline.
Some clarity arises here: It is clear that two programmes are needed [for
example, both physics and electrical engineering, or both computer science and
software engineering], not because there are two areas of science involved [for
example, physics and EE], but because there are two very different career paths.
One career path is that of graduates who will be designing products for others
to use. The other career path is that of graduates who will be studying the
phenomena that interest both groups and extending our knowledge in this area
[Parnas, 1998, 3, my emphasis]. So: scientists study phenomena and extend
knowledge; engineers design products. So: computer science studies phenomena
and extends knowledge; software engineers design software products. (What
phenomena does Parnas think that computer scientists study?) The distinction
between science and engineering, for Parnas, is that between learning and
building [Parnas, 1998, 4].
(a) Computer science [is] the science of solving problems with the aid of a
computer [Roberts, 1996]
(b) For the most part, computer science is best thought of as the science of
problem solving in which the solutions happen to involve a computer.
[Roberts, 2006, 5]
(c) Computer Science is the science of using computers to solve problems.
[Computer Science, 2003]
Because these definitions dont limit the kind of problems being solved,
they have the advantage of illuminating the generality and interdisciplinarity
of computer science. And, because they implicitly include the software
(algorithmic) side of computingafter all, you cant use a computer to solve
a problem unless it has been appropriately programmedthey nicely merge the
computer-vs.-algorithm aspects of the possible definitions. (They could just as
easily have said something even more neutral: Computer science is the science of
solving problems computationally, or algorithmicallyafter all, you cant solve
120 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
Even if this is true, it can be argued that a new tool can open up a new science or,
at least, a new scientific paradigm (in the sense of [Kuhn, 1962]): Paradigm
shifts have often been preceded by a technological or conceptual invention
that gave us a novel ability to see things that oculd not be seen before
[Mertens, 2004, 196], quoting [Robertson, 2003]. Although computer science
may not be about computers any more than astronomy is about telescopes, The
computer is to the naked mind what the telescope is to the naked eye, and it may
well be that future generations will consider all precomputer science to be as
primitive as pretelescopic astronomy [Mertens, 2004, 196].
45. Another science of an artifact: bicycle science
[Wilson and Papadopoulos, 2004]. But its really not clear if this is a science
or a branch of engineering!
The history of computers supports this: It is a history that began with how to
get machines to do some human thinking (certain mathematical calculations, in
particular), then more and more.
Turings motivation for the TM also supports this: The TM, as a model of
computation, was motivated by how humans compute.
47. On Euclid (for this chapter, or elsewhere):
Euclids geometry was procedural in nature; his proofs can be viewed as
programs that construct certain geometrical figures using only compass and
straightedge, much as computer programs construct (mathematical) objets using
only recursive functions. [Toussaint, 1993] (see also [Goodman, 1987, 4])
48. On microscopy:
Computation is itself a methodology. [Denning, 2013, 37], citing unnamed
others, uses the phrase a new method of thought and discovery in science.
49. On computer science as a natural science:
[Denning, 2013, 37] argues that, insofar as computer science deals with
information processes, it is a natural science, because many information
processes are natural processes, e.g., in biology. (This supports Shapiros
argument.) [Easton, 2006] makes a similar argument.
Denning 2007 offers support for Shapiros argument by citing examples of the
discovery of information processes in the deep structures of many fields:
biology, quantum physics, economics, management science, and even the arts
and humanities. He concludes that computing is now a natural science, not (or
no longer?) a science of the artificial.
51. Minsky has also suggested that computer science is concerned with ways to
describe complicated processes (SCS notes from Minskys talk at UB, personal
communication, 25 July 2005).
52. Pedagogically, computer programming has the same relation to
studying computer science as playing an instrument does to studying
music or painting does to studying art. [Tucker et al., 2003, V]
53. Besides trying to say what CS is (a science/study/engineering . . . of
algorithms/computers/information . . . ), another approach is to say that it is a
way of thinking, that algorithmic thinking (about anything) is what makes
CS unique. See [Anthes, 2006], especially the comments by Bernard Chazelle.
54. On the def of procedure (such that computer science might be defined, a la
Minsky and Shapiro, as a science of (computational) procedures:
As [Bringsjord, 2006] argues, talk of procedures can be replaced by talk of
first-order logic, and proofs and interpretations; consider, for example, the
dual interpretations of statements of Prolog as either procedural or declarative
statements, or Lisp programs, which appear to be merely definitions of recursive
functions. So, we need to be clearer about what we mean by procedure (as
well as phrases like computational thinking or algorithmic thinking). This is
a philosophical issue worthy of discussion (and well return to it in Ch. 7).
On computational thinking:
[Wing, 2006]s notion of computational thinking may offer a compromise:
This term avoids a procedural-declarative controversy, by including both
concepts, as well as others. She defines computer science as the study of
computationwhat can be computed and how to compute it. This definition
is nice, too, because the first conjunct clearly includes the theory of computation
and complexity theory (can can include can in principle as well as can
efficiently), and the second conjunct can be interpreted to include both software
programming as well as hardware engineering. Study is nice, too: It avoids
the science-engineering controversy. Computational thinking includes problem
solving, recursive thinking, abstraction, and more.
Denning 2009 finds fault with the notion, primarily on the grounds that it is too
narrow: Computation is present in nature even when scientist are not observing
it or thinking about it. Computation is more fundamental than computational
thinking. For this reason alone, computational thinking seems like an inadquate
characterization of computer science (p. 30). Note that, by computation,
Denning means TM-computation. For his arguments about why it is present
in nature, see Denning 2007.
55. FOR SOME OF THE MORE MINOR POSITIONS, PERHAPS HAVE A
SECTION AT THE END OF (EACH?) CHAPTER PRESENTING THE
POSITIONS AND RAISING QUESTIONS FOR DISCUSSION ABOUT
THEM. The next two items are prime candidates for this.
3.13. NOTES FOR NEXT DRAFT 123
But must there be a single paradigm? Are there no other disciplines with multiple
paradigms? Does the existence of multiple paradigms mean that there is no
unitary discipline of computer science? Or can all the paradigms co-exist?
(a) P = NP?37
(b) What is computable?
(c) What is intelligence?
(d) What is information?
(e) (How) can we build complex systems simply?
All but the last, it seems to me, concern abstract, scientific or mathematical
issues: If we consider the second question to be the fundamental one, then the
first can be rephrased as What is efficiently computable?, and the second can
be rephrased as How much of (human) cognition is computable?. The fourth
can then be seen as asking an ontological question about the nature of what
it is that is computed (0s and 1s? Information in some sense (and, if so,
in which sense)?). The last question can be viewed in an abstract, scientific,
mathematical way as asking a question about the structural nature of software
(the issues concerning the goto statement and structural programming would
fall under this category). But it can also be viewed as asking an engineering
question: How should weliterallybuild computers?
What is computation such that only some things can be computed? (And
what can be computed (efficiently), and how?)
(How) can be build devices to perform these computations?
And, in this case, we see once again the two parts of the discipline: the scientific
(or mathematical, or abstract) and the engineering (or concrete).
58. [Lohr, 2008] almost inadvertently points out a confusion (among educators, in
particular) about the nature of computer science. He quotes a high-school math
37 See [Austin, 1983, Mycielski, 1983, Fortnow, 2009, Walsh, 2014] for brief, semi-formal discussions of
and computer science teacher as saying, I do feel that computer science really
helps students understand mathematics. . . . And I would use computers more
in math, if I had access to a computer lab. The confusion is that computer
science is seen as the use of a physical tool, rather than as the study of (as
well as the use of) a method of thinking (computational thinking). For that, a
computer is useful, but not necessary, as demonstrated by the Computer Science
Unplugged project (http://csunplugged.org/ (accessed 1 July 2013)).
59. [Vardi, 2011] derives a definition of computing, as an instrument for the human
mind from Leibnizs statement that his lingua characteristica universalis (or
universal formal language) and his calculus ratiocinator (or formal logic) will
offer mankind. . . a new instrument that will enhance the capabilities of the mind
to a far greater extent than optical instruments strengthen the eyes. This is
similar to Daniel C. Dennetts suggestion that the computer is a prosthesis for
the mind (see, e.g., [Dennett, 1982]). Is that a reasonable definition of computer
science?
60. [Cerf, 2012] says, not that computer science is a science, but that there really
is science to be found in computer science (my emphasis). And, presumably,
there is engineering to be found in it, and mathematics, too. This is a slightly
different metaphor from the spectrum.
62. If all true classification. . . [is] genealogical [Darwin, 1872, Ch. 14,
Classification, p. 437], then, to the extent that computer science is a single
discipline, it is both mathematics and engineering. Well see why in Ch. 6, when
we explore the history of computers.
3.13. NOTES FOR NEXT DRAFT 125
64. On complexity: One way in which computer science might be able to get a
better handle on complexity than merely by scientific experimentation, analysis,
and theorizing is by means of computational modeling, taking into account the
rules of interaction [of the parts of a complex system], the natures of the agents
[that is, of the parts], and the way the agents, rules, and ultimately whole systems
came about [Adami, 2012, 1421]; cf. [Holland, 2012].
66. On microscopy:
There used to be a British Quarterly Journal of Microscopical Science (1853
1965), affiliated with the Microscopical Society of London. From its inaugural
Preface:
portmanteau affair. There was the computer program in the brain, and there was the description of the
external causes of the language users words [Putnam, 1994, 458]. A portmanteau word is one with two
meanings packed up into one word, like slithy (meaning lithe and slimy) or smog (meaning smoke
and fog); the term was coined by the great logician and storyteller Lewis Carroll [Carroll, 1871].
126 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
One could replace microscope with computer (along with their cognates) and,
perhaps, histology with something like mathematical calculations, and this
could read like a manifesto for the ACM.
The first issue included, besides many articles on what we now call microbiology,
a paper on Hints on the Subject of Collecting Objects for Microscopical
Examination and a review of a book titled The Microscopist; or a Complete
Manual on the Use of the Microscope.
As cutting with a sharp instrument is better than tearing with the nails,
so vision with the microscope is better than with the naked eye. Its
use is, therefore, as extensive as that of the organ which it assists, and
it cannot be regarded as the property of one branch of science more
than another. [Anonymous, 1853, 52]
As vision with the microscope is better than with the naked eye, so
thinking with the computer is better than with the mind alone. Its use
is, therefore, as extensive as that of the organ which it assists, and it
cannot be regarded as the property of one branch of science more than
another. [Anonymous, 1853, 52]
In the March 1962 issue, the editors announced a change in focus, based on
the nature of many of their articles, to cytology, thus apparently changing their
interest from the tool to what can be studied with it. The change officially
occurred in 1966, when the journal changed its name to the Journal of Cell
Science (and restarted its volume numbers at 1).
3.13. NOTES FOR NEXT DRAFT 127
67. [Denning, 2003, 15] makes an offhand comment that has an interesting
implication. He says, Computer science was born in the mid-1940s with the
construction of the first electronic computers. This is no doubt true. But it
suggests that that the answer to the question of what computer science is has to
be that it is the study of computers. The study of algorithms is much older, of
course, dating back at least to Turings 1936 formalization of the notion, if not
back to Euclids geometry or ancient Babylonian mathematics [Knuth, 972a].
Yet the study of algorithms is clearly part of modern computer science. So,
modern computer science is the result of a merger (a marriage) between the
engineering problem of building better and better automatic calculating devices
(itself an ancient endeavor) and mathematical problem of understanding the
nature of algorithmic computation. And that implies that modern computer
science is both engineering and science. (And that can be in two ways: that
there are separate branches of computer science, or that they blend into each
other.)
68. Question for end of chapter to think about:
In 3.11, I said that it makes noor very littlesense to have a program without
a computer to run it on. But the some of the earliest AI programs (for playing
chess) were executed by hand (CITE Turing, Shannon, NewellShawSimon,
IJGood). So, did these programs have a computer to run on? (Were the
humans, who hand-executed them, the computers that these programs ran
on?) When you debug a computer program, do you do the debugging by
hand?39
69. On Knuths ideas about teaching computers:
(a) One potential restriction on Knuths theory that we teach computers how
to do something (more specifically, that, insofar as computer science is
the study of what tasks are computable, it is the study of what tasks are
teachable) is that teaching is propositional, hence explicit or conscious.
But one way of getting a computer to do something is by training it
(via a connectionist algorithm, or via a machine-learning algorithmnote
that learning, in this sense of machine learning, is more than being
(propositionally) taught). And such training is implicit or unconscious. We,
as external, third-person observers still dont know how to do it consciously
or explicitly. Knowing how is not necessarily the same as knowing that.
(b) It is a commonplace that a computer can do anything for
which precise and unambiguous instructions can be given.
[Mahoney and Haigh (ed.), 2011, 80].
i. That is, a computer can do anything for which an algorithm can
be given (for, after all, isnt an algorithm merely precise and
unambiguous instructions?). Thought of this way, the comment is
almost trivial.
39 Thanks to Stuart C. Shapiro for this suggestion.
128 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
ii. But consider that to give such instructions (to give an algorithm) is
to be able to explicitly teach the computer (or the executor, more
generally) how to do that thing.
iii. And such explicit teaching is to make the task completely conscious
(to make it a System 2 task [Kahneman, 2011]). An algorithm in
the form of an artificial neural network is akin to building in to the
computer the ability, as if innate, to do that thing. Such a computer
could not tell us how it was doing it; it would have no conscious
access to its algorithm. An algorithm in the form of an explicit
machine-learning program that would enable the computer to learn
how to do that thing is somewhere in the middle; it would be conscious
of its ability to learn, but not necessarily of how to do the thing; it
might not necessarily be able to teach someone or something else how
to do it, unless it could observe itself doing it and develop a theory of
how to do it (which theory would be expressed in an algorithm).
iv. On what is computable: Something is computable just in case precise
and unambiguous instructions can be given for it. So, the question
becomes: What tasks are amenable to precise and unambiguous
instructions? Does this mean that chess is computable but vision is
not? After all, one cannot give precise and unambiguous instructions
that would enable someone to see. So there seems to be another notion
of computability: A behavior is computable if it can be described
in terms of such instructions. The entity that exhibits that behavior
naturally might not use, or be able to use, those instructions in order
to behave that way. But we might be able to give those instructions
to another system that could use them to exhibit that behavior. So,
for instance, the human brain might not literally compute in the sense
of executing an algorithm im order to see, but a computer using that
algorithm might be able to exhibit visuall behavior. (Whether it sees,
phenomenologically, is a philosophical question!) Similarly, the solar
system might not be executing Keplers laws, but an artificial solar
system might.
72. There can be algorithmic, that is, computational, theories (or models) of
biological phenomena such as cells. See [Covert, 2014]. Or computational
theories of plants; see [Pollan, 2013, 104105].
73. Turing and von Neumann not only played leading roles in the
design and construction of the first working computers, but were also
largely responsible for laying out the general logical foundations for
understanding the computation process, for developing computing
formalisms, and for initiating the methodology of programming:
in short, for founding computer science as we now know it.
[Robinson, 1994, 5]
75. Just as philosophy can be about anything (for any x, there is a philosophy of
x), so computer science can be about pretty much anything. This can happen
in two ways: For any x, there can be a computational theory of x. (Come to
think of it, there are other disciplines like this, such as history.) But one can also
use computational methods to study pretty much any x (see comments by the
computer scientist Mehran Sahami in [Reese, 2014a]).
77. Another good source on complexity is [Pylyshyn, 1992]. It is also a good source
on computer science as the science of information processing.
Also:
that the basic concepts and abilities will rub off. A properly designed
programming course will develop these abilites better than any other
course. [Perlis, 1962, 210]
And:
But does not subscribe to this viewpoint, not because he thinks that computers
are natural phenomena, but because he thinks that there is no sharp dividing line
between nature and artifact (p. 159). And he thinks that that is the case because
we use artifacts to study nature (p. 159)[w]e know about nature through the
models we buid of it (p. 161) and because [a]rtifacts work by the laws of
nature, and by working reveal those laws (p. 160). In other words, artifacts are
part of nature.
What I will call computer science (but that could just as easily be called
computing, computing science, informatics, etc.) is the scientific study of a
family of topics surrounding both theoretical and practical computing.
It evolved or descended from (or is the offspring of the marriage or merger
of) two historical traditions: (1) the foundations of mathematics (leading from
inquiries into the nature of logic to the Turing machine) and (2) the attempts to
design and construct a calculating machine (from the Antikythera Mechanism
of ancient Greece, through Pascals and Leibnizs calculators and Babbages
machines, to the ENIAC and beyond).
The topics studied in contemporary computer science roughly align along a
spectrum ranging from the mathematical theory of computing, at one end, to
the engineering of physical computers, at the other. (Newell et al., above,
were looking at this spectrum from one end; Knuth was looking at it from
the other end.) The topics share (probably at most) a family resemblance,
not only to each other, but also to other disciplines (including mathematics,
electrical engineering, information theory, communication, etc.), and they
overlap with issues discussed in the cognitive sciences, philosophy (including
ethics), sociology, education, the arts, and business.
The single most central question of computer science is:
place all of those aspects of the discipline that are usually covered under the
heading computer engineeing. It is the question that issues in the design and
construction of real computers are concerned with.
Finally, question 96? brings in ethical considerations [Tedre, 2015, 167168].
Actually, the question is slightly ambiguous. It could simply refer to questions
of practical efficiency: Given a sorting problem, which sorting algorithm should
be used; that is, which one is the best or most practical or most efficient
in the actual circumstances? But this sense of should is not really does not
really differentiate this question from question 96?. It is the ethical interpretation
that makes this question interesting: Let us suppose that the goal of AI is
practically and efficiently computable by physically plausible computers. One
can and should still raise the question whether such artificial intelligences
should be created, and whether we (their creators) have any ethical or moral
obligations towards them. (See [Lem, 1971], [LaChat, 1986], and ARTICLE IN
NEW SCIENTIST??)
3.14. FURTHER SOURCES OF INFORMATION 139
This paper covers much of the same ground, and in many of the same words,
as [Hartmanis, 1993], but it is more easily accessible.
Among several follow-up commentaries, see esp.:
Denning, Peter J. (1995), Can There Be a Science of Information?,
ACM Computing Surveys 27(1) (March): 2325.
Loui, Michael C. (1995), Computer Science Is a New Engineering
Discipline, ACM Computing Surveys 27(1) (March): 3132.
Plaice, John (1995), Computer Science Is an Experimental Science,
ACM Computing Surveys 27(1) (March): 33.
Stewart, N.F. (1995), Science and Computer Science, ACM Computing
Surveys 27(1) (March): 3941; a longer version is online at:
http://www.iro.umontreal.ca/stewart/science computerscience.pdf
(accessed 5 June 2013).
Wulf, W.A. (1995), Are We Scientists or Engineers?, ACM
Computing Surveys 27(1) (March): 5557.
And Hartmaniss replies:
Hartmanis, Juris (1995), Response to the Essays On Computational
Complexity and the Nature of Computer Science , ACM Computing
Surveys 27(1) (March): 5961.
Hayes, Brian (2015), Cultures of Code, American Scientist 103(1) (January-
February): 1013, http://www.americanscientist.org/issues/pub/cultures-of-code
(accessed 24 March 2015)
Distinguishes three communities in the world of computation: computer
science, computational science, and software development.
Hendler, James; Shadbolt, Nigel; Hall, Wendy; Berners-Lee, Tim; & Weitzner,
Daniel (2008), Web Science: An Interdisciplinary Approach to Understanding the
Web, Communications of the ACM 51(7) (July): 6069.
Hsu, Francis (2013), Is Computing Science?, Communications of the ACM 56(8)
(August): 9.
Argues that there are no clear boundaries between branches of knowledge.
Kroes, Peter (2010), Engineering and the Dual Nature of Technical Artefacts,
Cambridge Journal of Economics 34: 5162.
Argues that technical artefacts are physical structures with functional
properties
Kukla, A. (1989), Is AI an Empirical Science?, Analysis 49: 5660.
The answer is: No; it is an a priori science or discipline like mathematics.
For the opposite point of view, see:
Burkholder, Leslie (1999), Are AI and Mechanics Empirical Disciplines?,
Journal of Experimental and Theoretical Artifical Intelligence 11: 497500.
Lloyd, Seth (1990), The Calculus of Intricacy: Can the Complexity of a Forest
Be Compared with That of Finnegans Wake?, The Sciences (September/October):
3844.
An informal discussion of the nature of complexity and how it can be
measured using information theory or ideas from computing.
142 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
Lohr, Steve (2006), Computing 2016: What Wont Be Possible?, New York Times
(31 October): F3.
Naur, Peter (1995), Computing as Science, Appendix 2 of An Anatomy of Human
Mental Life (Gentofte, Denmark: naur.com Publishing): 208217; online at
http://www.naur.com/naurAnat-net.pdf (accessed 1 July 2013) via
http://www.naur.com/Nauranat-ref.html (accessed 1 July 2013).
Parnas, David Lorge (1998), Software Engineering Programmes Are Not
Computer Science Programmes, Annals of Software Engineering.
See also:
Dewar, Robert; & Astrachan, Owen (2009), CS Education in the U.S.:
Heading in the Wrong Direction?, Point/Counterpoint, Communications of
the ACM 52(7) (July): 4145.
Pylyshyn, Zenon W. (1987), Computers and the Symbolization of Knowledge, in
Ralph Morelli, W. Miller Brown, Dina Anselmi, Karl Haberlandt, & Dan Lloyd
(eds.), Minds, Brains and Computers: Perspectives in Cognitive Science and
Artificial Intelligence (Norwood, NJ: Ablex, 1992): 8294; portions online at:
http://tinyurl.com/Morelli-etal1987 (accessed 19 July 2013); preprint online at:
http://ruccs.rutgers.edu/ftp/pub/papers/suffolk.pdf (accessed 19 July 2013).
Shneiderman, Ben (2007), Web Science: A Provocative Invitation to Computer
Science, Communications of the ACM 50(6) (June): 2527.
Simon, Herbert A. (1996), Understanding the Natural and Artificial Worlds,
Ch. 1, pp. 124 of Simons The Sciences of the Artificial, Third Edition (Cambridge,
MA: MIT Press).
Originally written in 1969; updated in 1981.
In this chapter, Simon also has interesting things to say about whether
computer programs are scientific theories, which we will investigate in Ch. 15
Tedre, Matti (2015), The Science of Computing: Shaping a Discipline (Boca Raton,
FL: CRC Press).
An investigation of the philosophical issues around the nature and history of
computer science, examining whether it is a science, and, if so, what kind of
science it might be.
Tedre, Matti; & Moisseinen, Nella (2014), Experiments in Computing:
A Survey, Scientific World Journal, Vol. 2014, Article ID 549398,
http://dx.doi.org/10.1155/2014/549398 (accessed 3 April 2015).
A survey of the nature of experiments in science, and whether computer
science is experimental in nature.
Turner, Ray (2010), Programming Languages as Mathematical Theories, in Jordi
Vallverdu (ed.), Thinking Machines and the Philosophy of Computer Science:
Concepts and Principles (IGI Global): 6682.
Vardi, Moshe Y. (2014), Boolean Satisfiability: Theory and Engineering,
Communications of the ACM 57(3) (March): 5
Accessed 14 March 2014 from:
http://cacm.acm.org/magazines/2014/3/172516-boolean-satisfiability/fulltext
An editorial on the difference between computer science approaches to an
important theoretical problem and computer engineering approaches to a
practical version of the same problem.
3.14. FURTHER SOURCES OF INFORMATION 143
Figure 3.6: Outline of Positions on What CS Is; if not legible, please contact author
148 CHAPTER 3. WHAT IS COMPUTER SCIENCE?
Chapter 4
What Is Science?
149
150 CHAPTER 4. WHAT IS SCIENCE?
1. Required:
3. Strongly Recommended:
4.2 Introduction
We began by asking, What is computer science?, and we have seen that one answer
is that it is a science (or that parts of it are science). Some say that it is a science
of computers, some that it is a science of algorithms or procedures, some that it is a
science of information processing. And, of course, some say that it is not a science
at all, but that it is a branch of engineering; we will explore that option in Chapter 5.
In the present chapter, we will explore what it means to be a science, so that we can
decide whether computer science is one (or whether parts of it are).
In keeping with my definition of philosophy as the personal search for truth
by rational means, I wont necessarily answer the question, Is computer science a
science?. But I will provide considerations to help you find and defend an answer that
you like. It is more important for you to determine an answer for yourself than it is for
me to present you with my view; this is part of what it means to do philosophy in the
first person for the first person. And it is very important for you to be able to defend
your answer; this is part of what it means to be rational (it is the view that philosophy
is intimately related to critical thinking).
The word science originally simply meant knowledge or knowing; it derives
from the Latin verb scire, which meant to know1 But, of course, it has come to mean
much more than that.
Lets begin by contrasting the term science with some other terms. First, science
is sometimes opposed to art, not in the sense of the fine arts (such as painting, music,
and so on) but in the sense of an informal body of experiential knowledge, or tricks of
the trade: information that is the result of personal experience, perhaps unanalyzable
(or, at least, unanalyzed), and creative. This is art in the sense of the art of cooking.
By contrast, science is formal, objective, and systematic; scientific knowledge is the
result of analysis.
This contrast can be seen in the titles of two classic texts in computer science:
Donald Knuths The Art of Computer Programming [Knuth, 1973] and David Griess
The Science of Programming [Gries, 1981]. The former is a (multi-volume) handbook
of different techniques, catalogued by type, but analyzed (albeit incompletely by
todays standards). The latter is a compendium of formal methods for program
development and verification, an application of logic to programming. (For a detailed
defense of the title of Knuths work, see [Knuth, 1974a].)
Second, as we have seen, science is also sometimes opposed to engineering.
Because this will be our focus in Chapter 5, I wont say more about it here.
Finally, science is opposed (in more ways than one) to pseudo-science (such
as astrology). We will return to this in 4.7.1, because to explain the contrast
between science and pseudo-science (disciplines that masquerade as science, but are
not science) is part of the philosophical exploration of what science is.
One might think that the philosophy of science would be the place to go to find out
what science is, but philosophers of science these days seem to be more interested in
questions such as the following (the first two of which are the closest to our question):
1 According to the Oxford English Dictionary, http://www.oed.com/view/Entry/172672 (accessed 16 July
2013).
4.3. EARLY MODERN SCIENCE 153
What is a scientific theory? (Here, the emphasis is on the meaning of the term
theory.)
What is scientific explanation? (Here, the emphasis is on the meaning of the
term explanation.)
What is the role of probability in science?
What is the nature of induction? (Why) will the future resemble the past?
What is a theoretical term? (That is, what do the terms of (scientific) theories
mean? Do they necessarily refer to something in the real world? For example,
there used to be a scientific concept in the theory of heat called phlogiston, but
we no longer think that this term refers to anything.)
How do scientific theories change? When they do, are their terms
commensurable: that is, do they mean the same thing in different theories?
(For example, what is the relationship between phlogiston and heat? Does
atom, as used in ancient Greek physics, or even 19th-century physics, mean
the same as atom as used in 21st-century physics?)
Are scientific theories realistic (do they attempt to describe the world?) or
merely instrumental (are they just very good predicting-devices that dont
necessarily bear any obvious resemblance to reality, as sometimes seems to be
the case with our best current theory of physics, namely, quantum mechanics)?
And so on.
These are all interesting and important questions, and it is likely that a good answer
to our question, What is science?, will depend on answers to all of these. If so,
then a full answer will be well beyond our present scope, and the interested reader is
urged to explore a good book on the philosophy of science (such as those listed in the
Recommended and Further Readings sections of this chapter). Here, we will only be
able to consider a few of these questions.
to find correlations between Xs, their behavior, and various aspects of their
environment.
One important question in the history of science has concerned the nature of these
correlations. Are they (merely) descriptions, or are they explanations? In other words,
is the goal of science to describe the world, or is it to explain the world?
Algorithm Scientific-Method
begin
while there is a new fact to observe, do:
{i.e., repeat until there are no new facts to observe,
which will never happen, so we have permanent inquiry}
begin
1. observe things & events;
Pa Qa,
Pb Qb,
...
{x[Px Qx]}
{Pc/ Qc}
{if Qc
then general statement confirmed
or consistent with theory
else revise theory (or. . . }
end
end.
3 Thisalgorithm is written in an informal pseudocode. Terms in boldface are control structures.
Expressions in {braces} are comments.
4.7. ALTERNATIVES TO THE SCIENTIFIC METHOD 157
4 Or that their predictions are so vague that they are always trivially verified. See 4.7.1, below.
158 CHAPTER 4. WHAT IS SCIENCE?
4.7.1 Falsifiability
According to the philosopher Karl Popper (19021994), the scientific method (as
propounded by people like Kemeny) is a fiction. The real scientific method sees science
as a sequence of conjectures and refutations:
1. Conjecture a theory (to explain some phenomenon).
2. Compare its predictions with observations
(i.e., perform experiments to test the theory).
3. If an observation differs from a prediction,
then the theory is refuted (or falsified)
else the theory is confirmed.
There are two things to note about the last part of this: First, by falsifiable, Popper
meant something like capable of being falsified in principle, not capable of being
falsified with the techniques and tools that we now have available to us. Seond,
confirmed does not mean true! Rather, it means that the theory is not yet falsified!
This is because there might be some other explanation for the predicted observation.
Just because a theory T predicts that some observation O will be made, and that
observation is indeed made, it does not follow that the theory is true! In other words,
the argument:
T O
O
T
is an invalid argument (called the Fallacy of Affirming the Consequent). If T is
false, then the first premise is still true, so we could have true premises and a false
conclusion. This might also be called the fallacy of circumstantial evidence, where T
is the (possibly false) circumstantial evidence that could explain O, but there might be
other evidence that also explains O and which is true.
So, what is science according to Popper? A theory or statement is scientific if
and only if it can be falsified. This is why astrology (and any other superstition) is
only pseudo-science: It cannot be falsified, because it is too vague. (As the physicist
Freeman Dyson once wrote, Progress in science is often built on wrong theories that
are later corrected. It is better to be wrong than to be vague [Dyson, 2004, 16].)
For Popper, falsifiability also ruled out two other candidates for scientific theories:
Freudian psychotherapy and Marxism as an economic theory. The vaguer a statement
or theory is, the harder it is to falsify. When I was in college, one of my friends came
into my dorm room, all excited about an astrology book he had found that, he claimed,
was really accurate. He asked me what day I was born; I said September 30th. He
flipped the pages of his book, read a horoscope to me, and asked if it was accurate. I
said that it was. He then smirked and told me that he had read me a random horoscope,
for April 16th. The point was that the horoscope for April 16th was so vague that it
also applied to someone born on September 30th!
But is astrology really a Popperian pseudo-science? Although I agree that the
popular newspaper style of astrology no doubt is (on the grounds of vagueness),
4.7. ALTERNATIVES TO THE SCIENTIFIC METHOD 159
real astrology, which might be considerably less vague, might actually turn out to be
testable and, presumably, falsified, hence falsifiable. But that would make it scientific
(albeit false)!
It is worthwhile to explore the logic of falsifiability a bit more. Although the invalid
argument form above seems to describe what goes on, it can be made more detailed. It
is not the case that scientists deduce predictions from theories alone. There are usually
background beliefs that are independent of the theory being tested (for example, beliefs
about the precision of ones laboratory equipment). And one does not usually test a
complete theory T but merely one new hypothesis H that is being considered as an
addition to T . So it is not simply that the argument above should begin with a claim
that the theory T implies prediction O. Rather, theory T , conjoined with background
beliefs B, conjoined with the actual hypothesis H being tested is supposed to logically
predict that O will be observed.
(T & B & H) O
What follows from these two premises? By the rule of inference called modus tollens,
we can infer:
(T & B & H)
T B H
That is, either T is false, or else B is false, or else H is false, or any combination of them
is false. What this means is that if you strongly believe in your hypothesis H that seems
to be inconsistent with your observation O, you do not need to give up H. Instead, you
could give up the rest of your theory T (or simply revise some part of it), or you could
give up (some part of) your background beliefs B (for example, you could blame your
measuring devices as being too inaccurate). As [Quine, 1951] pointed out, you could
even give up the laws of logic if the rest of your theory has been well confirmed; this
is close to the situation that obtains in contemporary quantum mechanics.
2. If that theory is challenged often enough, there will be a revolution, and a new
theorya new paradigmwill be established, completely replacing the old one.
3. A new period of normal science follows, now based on the new paradigm, and
the cycle repeats.
[Dyson, 2004, 16] refers to the revolutionaries as those who build grand castles in
the air and to the normal scientists as conservatives. . . who prefer to lay one brick
at a time on solid ground.
The most celebrated example was the Copernican revolution in astronomy
[Kuhn, 1957]. Normal science at the time was based on Ptolemys paradigm of an
earth-centered theory of the solar system. But this was so inaccurate that its advocates
had to keep patching it up to make it consistent with observations. Copernicuss
new paradigmthe heliocentric theory that we now believeoverturned Ptolemys
paradigm. Other revolutions include those of Newton (who overthrew Aristotles
physics), Einstein (who overthrew Newtons), Darwin (whose theory of evolution
further demoted humans from the center of the universe), Watson and Crick (whose
discovery of the. . . structure of DNA. . . changed everything in biology [Brenner, 2012,
1427]), and Chomsky in linguistics (even though some linguists today think that
Chomsky was wrong [Boden, 2006]).
Does computer science follow Kemenys scientific method? For that matter,
does any science (like physics, chemistry, or biology) really follow it? Does
every science follow it (what about astronomy or cosmology)? Or is it just an
idealized vision of what scientists are supposed to do?
Even if it is just an idealization, does computer science even come close? What
kinds of theories are there in computer science? How are they tested?
Have there been any revolutions in computer science? (Is there even a current
Kuhnian paradigm?)
And there are other considerations: What about disciplines like mathematics? Math
certainly seems to be scientific in some sense, but is it a science like physics or biology?
Is computer science, perhaps, more like math than like these (other) sciences? This
raises another question: Even if computer science is a science, what kind of science is
it?
4.9. WHAT KIND OF SCIENCE MIGHT COMPUTER SCIENCE BE? 161
6. Steedman 2008 has some interesting things to say on the differences between a
discipline such as physics and a discipline such as computer science (in general)
and computational linguistics (in particular), especially in 1, The Public Image
of a Science.
7. Petroski 2008: The first two sections argue that all scientists are sometimes
engineers and all engineers are sometimes scientists.
8. Vardi 2010 argues that computing (or computational science) is not a new kind
of science or a new way of doing science, but just a more efficient way of doing
the same kind of science that humans have always done.
Read [Johnson, 2001]. Then try to reconstruct and evaluate his argument for the
proposition that All Science Is Computer Science.
The situation was almost exactly like the way in which we now
distinguish between science and engineering.
But he later has something more interesting to suggest:
Science is knowledge which we understand so well that we can teach
it to a computer; and if we dont fully understand something, it is an
art to deal with it. Since the notion of an algorithm or a computer
program provides us with an extremely useful test for the depth of
our knowledge about any given subject, the process of going from an
art to a science means that we learn how to automate something.
(In [Knuth, 2001, 168], he adds this: Every time science advances, part of an art
becomes a science, so art loses a little bit. Yet, mysteriously, art always seems
to register a net gain, because as we understand more we invent more new things
that we cant explain to computers.)
14. Distinguish between the everyday sense of theory and the technical sense.
In the everyday sense, a theory is merely an idea which may or may not
have any evidence to support it. In the technical sense, a theory is a set
of statements that describe and explain some phenomenon, often formalized
mathematically or logically; to be scientific, such a theory must also be
accompanied by confirming evidence (and, if Popper is right, its statements must
be falsifiable). Note that both theory and theorem are etymologically related.
164 CHAPTER 4. WHAT IS SCIENCE?
Science is all about the fact that we dont know everything. Science
is the learning process. [Dunning, 2007]
the idea that science is not private; researchers who make claims must
allow others to test those claims. [Wainer, 2012, 358]
20. The history of science is partly the history of an idea that is by now
so familiar that it no longer astounds: the universe, including our
own existence, can be explained by the interations of little bits of
matter. We scientists are in the business of discovering the laws
that characterize this matter. We do so, to some extent at least, by
a kind of reduction. The stuff of biology, for instance, can be reduced
to chemistry and the stuff of chemistry cna be reduced to physics
[Orr, 2013, 26]
The reductionist picture can be extended at both ends of the spectrum that Orr
mentions: At one end, sociology can be reduced to psychology, and psychology
to biology; at the other, perhaps physics can be reduced to mathematics, and
mathematics to logic and set theory. CITE PHD CARTOON ON THIS. On
this view, its hard to see where computer science fits into this sequence. On
the other hand, not everyone thinks that this chain of reductions is legitimate
[Fodor, 1974]. For another thing, its not obvious that computer science is in
the business of discovering the laws that characterize. . . matter. We might try to
argue that the universe isnt made up of matter, but of information. Then, if you
are also willing to say that computer science is the science of information (or of
information processing), you could conclude that it is a science.
21. On instrumentalism:
Galileo. . .
@misc{pittphilsci2538,
month = {January},
6 http://grunbaum.pitt.edu/wp-content/plugins/downloads-
manager/upload/Medicine%20Bibliography%201-13.pdf
4.10. NOTES FOR NEXT DRAFT 167
27. At least one major philosopher has said something that suggests that engineering
might be a part of science:
things in the world (think of beehives and bird nests), I suspect that what
he means is things that are not naturally in the world: Note that the word
natural does not appear in his characterization of natural science. But
what difference is there between what might be called natural artifacts
such as beehives and birdnests, on the one hand, and artifacts such as
machines and computers, on the other? The only difference that I can see
is in who made them: non-humans vs. humans (and Simon says things that
are consistent with this (p. 2). In that case, a science of the artificial would
merely be a science of things made by humans. But it would still be a
science.
(b) For instance, he says that A forest may be a phenomenon of nature; a farm
certainly is not (p. 3). Granted, there might not have been any farms had
there not been humans (but what about ant farms?). But would he be
equally willing to say that a beehive may be a pheomenon of nature; an
log house certainly is not? Beehives are just as artificial or non-natural as
log houses, differing only in who made them. (Another, better?, example:
bird nests vs. shelters made of branches and leaves by some members of
Amazonian or sub-Saharan African peoples.)
(c) But Simon is aware of this; he goes on to say:
A plowed field is no more part of nature than an asphalted street
and no less [Simon, 1996b, 3, my italics].
And, indeed, he explicitly says:
But you will have to understand me as using artificial. . . as
meaning man-made as opposed to natural. [Simon, 1996b, 4].
I would only amend this slightly to read: human-made as opposed to non-
human-made
(d) I suppose that there are echoes here of the more general issue of the
generalization of terms, such as whether or not to apply thinking to
computers (in addition to humans) or whether to apply flying to airplanes
(in addition to birds) or even noodle to non-wheat products (see
http://www.askphilosophers.org/question/5738). (See also Simons
comments (pp. 1516) about the meaning of moonare artificial
satellites moons?)
(e) His description of the purpose of science is consistent both with Machs
view that science is (merely) a way to describe the world efficiently and
with the more modern view that its purpose is to explain or help us
understand the world. Note, too, the emphasis on complexity, which
elsewhere (WHERE?) we saw/will see that Simon believes is one of the
central roles of computer science.
(f) Nevertheless, he comes down later on the side of explanation:
This is the task of natural science: to show that the wonderful
is not incomprehensible, to show how it can be comprehended. . .
[Simon, 1996b, 1, my italics]
170 CHAPTER 4. WHAT IS SCIENCE?
So, the task is not, pace Mach, merely to describe the complexity of the
world in simple terms, but to explain the world, to make it understandable.
(g) One of the general paradoxes of analysis or of explanation in general is that,
by showing how something mysterious or wonderful or complex is really
just a complex of things that are non-mysterious or mundane or simple, we
lose sight of the original thing that we were trying to understand or analyze.
(We saw/will see this again in Dennetts notion of Turings inversion.)
Simon demurs:
. . . the task of natural science. . . [is] to show how it [the
wonderful] can be comprehendedbut not to destroy wonder.
For when we have explained the wonderful, unmasked the hidden
pattern, a new wonder arises at how complexity was woven out of
simplicity. [Simon, 1996b, 12, my italics]
So, for instance, the fact (if it is a fact; we will explore this issue
later WHERE?) that non-cognitive computers can exhibit (or merely
simulate) cognitive behaviors is not necessarily a reductio of cognition
as computation but is itself something worthy of wonder and further
(scientific) explanation.
(h) He also goes on to suggest an analogy between the emergence of
complexity from simplicity and the emergence of a representational
picture or of a piece of music from partially concealed patterns,
presumably implemented by brush strokes or individual musical notes
although he seems to chalk this up to aesthetics (p. 2).
Nelson Pole (private communication, 3/9/15) points out that programs that learn
need not begin by understanding things that well. I would respond by observing
that the programmer of the learning program might not have to understand the
topic to be learned that well, but would have to understand the nature of learning
well enough to write a learning program.
(Possibly add this article as required, or whatever, reading for this chapter.)
What Is Engineering?
177
178 CHAPTER 5. WHAT IS ENGINEERING?
5.2 Introduction
We began by asking what computer science is (Ch. 3), and we considered that it might
be what it says it is: a science; so we then looked at what science is (Ch. 4).
We also considered that computer science might be a branch of engineering; so
now it is time to ask what engineering is. What is its relationship to science? And what
is the relationship of computer science to engineering?
Answering these questions depends even more on what people say about it than
does answering the question, What is science?. This is because the philosophy of
engineering is much less well developed than the philosophy of science and, for some
reason, there seem to be fewer attempts to try to define engineering. For instance, if
you go to various university websites for schools or departments of engineering, you
will rarely find a definition. ([Koen, 1988, 307] makes a similar point.)
For engineering, more than for science or even computer science, it seems that
engineering is what engineers do, and so we may need to look at what it is that they
do. (As the computer scientist R.W. Hamming once pointed out [Hamming, 1968,
4], the only generally agreed upon definition of mathematics is Mathematics is
what mathematicians do, which is followed by Mathematicians are people who do
mathematics.
Dictionary definitions of engineering are even less helpful than usual. Actually,
dictionary definitions are rarely useful: First, dictionaries dont always agree, and
some are better than others. Second, dictionaries at best tell you how other people
use a term, but, if people use a term incorrectly, dictionaries are duty bound to record
that. Third, dictionaries can be misleading: Websters Ninth New Collegiate Dictionary
[Mish, 1983, 259] defines college as a body of clergy living together and supported
by a foundation! This may once have been true, and may even still be true in a very
limited sense of the term, but why is it listed as the first definition? Because Merriam-
Webster dictionaries list definitions in historical order!
[Mish, 1983] defines engineering as:
2. The application of science and mathematics to make matter and energy useful to
people.
to make matter and energy useful. Some might, by a stretch of meaning, but surely not
all.
It might help to look at the etymology of engineer. (It might, but it wont.) The
word comes from in- + gen- + -or, where in- means in, -or means, roughly, agent,
and gen- can mean mind, intellect, talent; to produce; etc., none of which seems to
helpthe word has simply changed too much for us to be able to figure out what it
means from its origins.
One philosopher who has tried to explain engineering [Bunge, 1974] does it this
way: There are two kinds of science (where science is any discipline that applies the
scientific method): pure and applied. Pure sciences apply the scientific method to
increasing our knowledge of reality (e.g., cell biology). Applied sciences apply the
scientific method to enhancing our welfare and power (e.g., cancer research). Among
the applied sciences are operations research (mathematics applied to management),
pharmacology (chemistry applied to biology), and engineering. Given this taxonomy,
computer science would not be a branch of engineering, though it might be an applied
science alongside engineering. Yet there is a pure component of computer science,
namely, the mathematical theory of algorithms, computability, and complexity (on the
first two, see Ch. 7; on the latter, see [Loui, 1996, Aaronson, 2013]).
can be many algorithms all of which accomplish the exact same task. How can we
choose among them? We can ask which ones are more efficient: Which use less
memory (space)? Which take less time? So, in addition to asking what can be
automated, computer science also asks: What can be automated efficiently? If that is
computer engineering, so be it, but that would put one of the most abstract, theoretical,
and mathematical branches of computer sciencenamely, the theory of computational
complexitysmack dab in the middle of computer engineering, and that doesnt seem
correct.
machines, be it electronics, optics, pneumatics, or magic [Dijkstra, 1986], quoted in [Loui, 1987, 177].
5.6. THE ENGINEERING METHOD 183
such as gain vs. bandwidth (in electrical engineering) or stability vs. aesthetics (in civil
engineering), the tradeoffs that computer science deals with are of a different kind:
software vs. hardware, and space vs. time efficiency.
3. Perhaps end this chapter, before going on to the other topics in PHICS, with
Wulfs quote from 38
5. Characteristics of engineering:
is intended to benefit society. But does that mean, then, that a computer
programmer who writes a spreadsheet program is an engineer (no matter
how sloppily the programmer writes it), whereas a computer programmer
who writes a computer virus is not an engineer (even if the program was
designed according to the best software engineering principles)?
8. [Florman, 1994, 175] and many others [Davis, 1995a] also cite an 1828
definition due to one Thomas Tredgold: Engineering is the art of directing the
great sources of power in nature for the use and convenience of man [sic].
merely understand it. Does that mean that Marx was proposing a disclipline of philosophical engineering?
5.7. NOTES FOR NEXT DRAFT 187
There are clear echoes of Koens emphasis on the role of heuristics, a recognition
of the foundational role of science, andperhaps of most significance for our
purposesan emphasis on products.
So, if the central feature of engineering is, lets say, the application of scientific
(and mathematical) techniques for producing or building something, then surely
part of computer science is engineering: especially those parts that build
computers and that write programs. Heres something to think about: Just as
(some) computer scientists write programs, so journalists and novelists write
essays. Are journalists and novelists therefore engineers? Their products are not
typically application of science and math, so perhaps they arent. But might they
not be considered to be, say, language engineers?
13. Question for the reader to think about: In Ch. 3, we saw that Brooks argued that
computer science was not a science, but a branch of engineering, in part because
the purpose of engineering is to build things, and that thats what computer
scientists do. How would you evaluate this argument now that you have thought
more deeply about what engineering is?
15. Even if computer science qua engineering is based on mathematics and logic
as its underlying science, there is still a difference between more classic
engineering disciplines and computer science, because, historically, computers
(which, if anything, would seem to fall clearly on the engineering side of
the spectrum) were developedengineered, if you willwithout very much
benefit of mathematical or logical analysis. It took von Neumann to see that the
engineering accomplishments of Eckert and Mauchly (the developers of ENIAC)
could be combined with the mathematical insights of Turing [Davis, 2012,
Introduction]. We will look into this more closely when we investigate the
historical answer to the question of what a computer is (in Ch. 6).
This is another definition-by-committee (note the lists of verbs and nouns). But
it comes down to much the same thing as others have said: designing or building
useful things. It emphasizes two aspects to this: One is that the design or
activity of building must be knowledge-based; this presumably rules out design
or building that is based, not on scientific knowledge, but on experience alone.
The other aspect is that engineering is a process, in the sense of knowing
how to do something [Malpas, 2000, 5]; this has an algorithmic flairafter
all, algorithms are methods of describing how to do something.
17. [Petroski, 2005, 304] notes that we speak of the sciences in the plural (as we
do of the humanities), but of engineering in the singular, even though there
are many engineerings. Moreover, engineering. . . is an activity that creates
things. Note two points: First, it is creative; this is related to claims about
engineering as designing and building things. But, second, it is an activity, even
grammatically: The word is a gerund, which expresses. . . action. Is science
also an activity (or is engineering different from science in this respect)? Insofar
as science is an activity, is an activity that produces knowledge. Engineering
is an activity that uses that scientific knowledge to design and build artifacts.
18. [Petroski, 2006, 304] quotes former US president Herbert Hoover, who was
an engineer by profession, as having captured the essence of engineering as
beginning with. . .
This rehearses the design and build useful things mantra of engineering, but
it also highlights the idea of engineering as implementing an abstract idea. For
more on implementation and its relationship to computer science, see Ch. 14.
19. In a follow-up article to [Davis, 1996], Michael Davis cites four different
conceptions of engineering:
(a) Argument 1:
i. Engineers are cognitive agents that build artifacts for some identifiable
purpose.
ii. Birds build nests for housing their young.
iii. Beavers build dams because the sound of rushing water annoys them.4
iv. Computer engineers build computers for computation.5
v. Birds, beavers, and computer engineers are all engineers.
(b) Argument 2:
i. Engineers are cognitive agents that build artifacts for some identifiable
purpose and who know what that purpose is.
ii. Birds and beavers do not know why they build nests and dams,
resepectively; they are only responding to biological or evolutionary
instincts.
iii. Computer do know what the purpose of computation is.
iv. computer engineers are engineers, but birds and beavers are not.
3 With thanks to Albert Goldfain.
4 http://naturealmanac.com/archive/beaver dams/beaver dams.html (accessed 21 October 2013).
5 We will discuss what this means later; see Chs. 6, 7, and 9.
5.7. NOTES FOR NEXT DRAFT 191
Also: Contra Petroski, engineering is more than just design, because architects
design, but are not engineers.
The comment that follows may be more relevant to Ch. 4: Perhaps it would be
useful to distinguish between a narrow and a wide notion of science: Science
in the narrow sense is what questions about what is science are focused on.
Science in the wide sense includes any logical, detailed, systematic study or
investigation of some phenomenon. It is in the latter sense that engineering is
similar to science. And one way that it is not part of science is in its use of
theories that would not be acceptable within science (4.1), namely, theories
that are phenomenological, . . . highly approximate, and have a highly limited
scope but are not fundamental or explanatory, . . . as precise as possible, . . . [or]
as universal as possible (4.1).
What Is a Computer?
A Historical Perspective
197
198 CHAPTER 6. WHAT IS A COMPUTER? A HISTORICAL PERSPECTIVE
Davis, Martin (1987), Mathematical Logic and the Origin of Modern Computers,
Studies in the History of Mathematics, reprinted in Rolf Herken (ed.), Universal
Turing Machine: A Half-Century Survey; Second Edition (Vienna: Springer-Verlag,
1995): 135158; online at:
http://staff.science.uva.nl/edoh/COMPHIS/davispaper.pdf
(accessed 11 November 2013).
Article-length version of Davis 2012.
Ensmenger, Nathan (2003), Bits of History: Review of A.R. Burkss Who Invented
the Computer? The Legal Battle that Changed Computing History, in American
Scientist 91 (September-October): 467468;
http://www.americanscientist.org/bookshelf/pub/bits-of-history
(accessed 30 October 2013).
3. Very Strongly Recommended:
Robinson, J. Alan (1994), Logic, Computers, Turing, and von Neumann, in
K. Furukawa; D. Michie; & S. Muggleton (eds.), Machine Intelligence 13: Machine
Intelligence and Inductive Learning (Oxford: Clarendon Press): 135.
A personal history of the development of computers and the related history
of logic, by the developer of the resolution method of automated theorem
proving.
Browse through:
Computer History Museum, http://www.computerhistory.org/
(accessed 5 November 2012).
Copeland, Jack (2000), A Brief History of Computing,
http://www.alanturing.net/turing archive/pages/Reference%20Articles/BriefHistofComp.html
(accessed 5 November 2012).
Lee, J.A.N. (19952002), The History of Computing,
http://ei.cs.vt.edu/history/ (accessed 5 November 2012).
Hitmill.com (2004), History of Computers,
http://www.hitmill.com/computers/computerhx1.html
(accessed 5 November 2012).
Hoyle, Michelle A. (19942006), The History of Computing Science
http://lecture.eingang.org/ (accessed 5 November 2012).
200 CHAPTER 6. WHAT IS A COMPUTER? A HISTORICAL PERSPECTIVE
6.2 Introduction
Let us take stock of where we are. We began by asking what computer science is;
we saw that it might be a science, a branch of engineering, a combination of both, or
something sui generis; so we then investigated the nature of science and of engineering.
Now we want to turn to the question, What is computer science the science (or
engineering, or study) of ? There are at least three options to consider: The subject
matter of computer science might be computers (the physical objects that compute), or
it might be computing (the algorithmic processing that computers do), or it might be
something else, such as the information that gets processed. In this and a subsequent
chapter, we will examine the first two options. Readers interested in exploring the third
optioninformationare encouraged to look at some of the readings cited at the end
of this chapter [OR AT END OF CH. 1? IN ANY CASE, SEPARATE THEM OUT,
SO THAT THEYRE EASIER TO FIND]
To help answer the question What is a computer?, we will look first at the history
of computers and then at some philosophical issues concerning the nature of computers.
Lets begin our historical investigation with some terminology. Some 120 years
ago, in the May 2, 1892, issue of The New York Times, the following ad appeared:4
A COMPUTER WANTED.
WASHINGTON, May 1.A civil service ex-
amination will be held May 18 in Washington,
and, if necessary, in other cities, to secure
eligibles for the position of computer in the
Nautical Almanac Office, where two vacancies
existone at $1,000, the other at $1,400.
The examination will include the subjects of
algebra, geometry, trigonometry, and as-
tronomy. Application blanks may be obtained
of the United States Civil Service Commission.
So, a century or so ago, the answer to the question, What is a computer?, was: a
human who computes! In fact, until at least the 1940s (and probably the 1950s), that
was the meaning of computer:
Towards the close of the year 1850, the Author first formed the design
of rectifying the Circle to upwards of 300 places of decimals. He was
fully aware, at that time, that the accomplishment of his purpose would
add little or nothing to his fame as a Mathematician, though it might as a
Computer;. . . William Shanks (1853), as cited in [Hayes, 2014a, 342]
When people wanted to talk about a machine that computed, they would use the phrase
computing machine or (later) electronic (digital) computer. (Later on, when we look
at Alan Turings foundational papers in computer science and artificial intelligence, this
distinction will be important.) Interestingly, nowadays when one wants to talk about a
human who computes, we need to use the phrase human computer [Pandya, 2013].
4 The original may be seen online at [http://tinyurl.com/NYT-computer].
6.2. INTRODUCTION 201
For the sake of familiarity, in this book, I will use the word computer for the machine
and the phrase human computer for a human who computes.
202 CHAPTER 6. WHAT IS A COMPUTER? A HISTORICAL PERSPECTIVE
4. John Presper Eckert (1919-1995) and his student John Mauchly (19071980),
working at the University of Pennsylvania, built the ENIAC (Electronic
Numerical Integrator And Computer) in 1946. This was the first general-
purposethat is, programmableelectronic computer. In 1945, with the
collaboration of the mathematician John von Neumann (19031957)who
outlined an architecture for computers that is still used todaythey developed
the EDVAC (Electronic Discrete Variable Automatic Computer), which used
binary arithmetic (rather than decimal). This evolved into the first commercial
computer: the UNIVAC (UNIVersal Automatic Computer). UNIVAC became
famous for predicting, on national TV, the winner of the 1952 US presidential
election. The company that made UNIVAC evolved into the Sperry Rand
Corporation, who owned the patent rights. The Honeywell Corporation, a
rival computer manufacturer, successfully sued Sperry Rand in 1973, on the
grounds that Mauchly had visited Atanasoff in 1941, and that it was Atanasoff
(and Berry), not Mauchly (and Eckert) who had invented the computer,
thus vacating Sperry Rands patent claims. (A useful summary of some of
the issues involved can be found in [Ensmenger, 2003], who observes that
identifying Atanasoff as the inventor of the computer (my phrasing and italics)
is an answer to what is fundamentally the wrong question [Ensmenger, 2003,
italics in original], because any particular claim to priority of invention must
necessarily be heavily qualified: If you add enough adjectives, you can always
claim your own favorite. The story of von Neumanns involvement in the
development of computers can be found in [Dyson, 2012b].)
(a) In 1943, the Colossus computer was developed and installed at Bletchley
Park for use in cryptography during World War II. Bletchley Park was
where Alan Turing worked on cracking the Nazis code-making machine,
the Enigma.
(b) After the war, in 1945, Turing decided to try to implement his a-machine
(the Turing machine), and developed the ACE (Automatic Computing
Engine) [Copeland, 1999]. (It was also around this time that Turing started
thinking about AI and neural networks.)
The parallel historical story concerns, not the construction of a physical device that
could compute, but the logical and mathematical analysis of what computation itself
is.
This story begins, perhaps, with Leibniz, who not only constructed a computing
machine, as we have seen, but who also wanted to develop a calculus ratiocinator:
a formalism in a universally understood language (a characteristica universalis) that
would enable its speakers to precisely express any possible question and then to
rationally calculate its answer. Leibnizs motto (in Latin) was: Calculemus! (Let us
calculate!). In other words, he wanted to develop an algebra of thought.
This task was taken up around 160 years later (around 160 years ago) by the
English mathematician George Boole (18151864), who developed an algebra of logic,
which he called The Laws of Thought [Boole, 2009]. This was what is now called
propositional logic. But it lacked a procedure for determining the truth value of a given
(atomic) statement.
Booles work was extended by the German mathematician Gottlob Frege (1848
1925, around 120 years ago), who developed what is now called first-order logic (or the
206 CHAPTER 6. WHAT IS A COMPUTER? A HISTORICAL PERSPECTIVE
are some:
. . . determining whether or not a given formula of the predicate calculus is universally valid.
[Hilbert and Ackermann, 1928, 112]
In the broadest sense, the decision problem can be considered solved if we have a method
which permits us to decide for any given formula in which domains of individuals it is
universally valid (or satisfiable) and in which it is not. [Hilbert and Ackermann, 1928, 115]
The Entscheidunsproblem is solved if one knows a procedure that allows one to decide
the validity (respectively, satisfiability) of a given logical expression by a finite number of
operations. (Translation in [Sieg, 1994, 77]; my italics.)
An earlier version (dating from 1900) appeared in Hilberts list of 23 math problems that he thought should
be investigated during the 20th century. The 10th problem was this:
Given a diophantine equation with any number of unknown quantities and with rational
integral numerical coefficients: to devise a process according to which it can be determined
by a finite number of operations whether the equation is solvable in rational integers.
(English translation from http://aleph0.clarku.edu/djoyce/hilbert/problems.html#prob10
(accessed 11 December 2013.)
(Like the Halting Problem, this turns out to be non-computable; that is, there is no such process, no such
algorithm.) For more on the decision problem, see 8.3.
6.5. THE LOGICAL AND MATHEMATICAL HISTORY 207
almost everyone that the notion of effective computability (or algorithm) had been
captured precisely. Indeed, Godel himself was not convinced until he read Turings
paper, because Turings was the most intuitive presentation of them all. (But we will
look at the arguments of those who are not convinced in Chs. 10 and 11.)
To clarify some of this history, it will be necessary for us to look more closely at
the nature of effective computation and algorithms, which we will do in the next
chapter. Armed with the results of that investigation, we will return to the question of
what a computer is (from a philosophical point of view).
2. Use these quotes from Hilbert; the first might be better in Ch. 7:
famous impossibility proof in computer science, of course, is the Halting Problem; see 7.8.
210 CHAPTER 6. WHAT IS A COMPUTER? A HISTORICAL PERSPECTIVE
(a) digital operation (thus focusing on only the discrete aspect of (iii),
above);
(b) stored program capability (here understood as the notion that the
instructions for the computer be written in the same form as the data being
used by the computer and attributed to von Neumann; we will return to
this issue in Ch. 8);
(c) self-regulatory or self-controlling capability (this is not merely the
automaticity of any machine, but it seems to include the ideas of feedback
and automatic modifiable stored programs);
(d) automatic operation (singled out from the previous characteristic because
of its emphasis on operating independently of human opertors and human
intervention)
(e) reliance on electronics (this is admitted to be somewhat parochial in the
sense that electronic computers were, at the time of writing, the dominant
way of implementing them, but Davis recognized that other kinds of
computers would eventually exist)
So, ignoring the last item and merging the previous two, we come down to
this: A (modern) computer is an automatic, digital, stored-program machine (for
manipulating information).
4. On numerals vs. numbers:
Are computers symbol-manipulation machines or number-manipulations
machines? There are two versions of this question. The first version contrasts
numerical symbols (numerals) with numbers themselves. The second version
contrasts symbols more generally with either numerals in particular or with
numbers.
The first question is closely related to the philosophy of mathematics. Is math
itself more concerned with numerals than with numbers, or the other way
around? Formalists and nominalists suggest that it is only the symbols for
numbers that we really deal with. Platonists suggest that it is numbers that
are our real concern, but at least some of them admit that the only way that
we can directly manipulate numbers is via numerals (although some Platonists,
including Godel, suggest that we have a kind of perceptual ability, called
intution, that allows us to access numbers directly). There are also related
questions about whether numbers exist and, if so, what they are. But these
issues are beyond our scope. Computers, pretty clearly, have to deal with
numbers via numerals. So, The mathematicians and engineers then [in the
1950s] responsible for computers [who] insisted that computers only processed
numbersthat the great thing was that instrutions could be translated into
numbers [Newell, 1980, 137] are probably wrong. But even if we modify such
a claim so that we replace numbers by numerals, we are faced with the second
question above.
An answer to that question will depend in part on how we interpret the symbols
that a computer deals with. Certainly, there are ways to build computers
6.7. NOTES FOR NEXT DRAFT 211
that, apparently, can deal with more than merely numerical symbols; the Lisp
machines of the 1980s are prime examples: Their fundamental symbols were
Lisp lists. But, insofar as any computer is ultimately constructed from physical
switches that are either in an on/up or off/down position, we are left with
a symbol system that is binaryhence numericalin nature. Whether we
consider these symbols to be numerals or not may be more a matter of taste
or convenience than anything more metaphysical.
Of course, a university with, say, 5000 students now probably has at least 5000
computers, if not double that amount (by including smart phones), not to mention
the computers owned by the universities themselves! And each one of those
10,000 computers is at least as powerful, if not more so, than the 100 that there
were a half-century ago.
8. On the Antikythera:
Relevant to questions about whether everything computes anything (the Searle-
Putnam puzzle), we can ask the following questions about the Antikythera, a
real-life example of the computer found in the desert: Does it compute? What
does it compute? Is what it computes determined by its creators? Can we
determine it?
http://www.americanscientist.org/issues/pub/the-nerds-have-won
(accessed 12 November 2013).
On the history of the Internet.
Holt, Jim (2001), The Ada Perplex, The New Yorker (5 March): 8893.
How Byrons daughter came to be celebrated as a cyber-visionary.
Husbands, Philip; Wheeler, Michael; & Holland, Owen (2008), Introduction: The
Mechanical Mind, in Philip Husbands, Owen Holland, & Michael Wheeler (eds.),
The Mechanical Mind in History (Cambridge, MA: MIT Press): 117.
Hyman, Anthony (1982), Charles Babbage: Pioneer of the Computer (Princeton:
Princeton University Press).
Reviewed in:
OHanlon, Redmond (1982), A Calculating Man, New York Times Book
Review (14 November): BR26BR27.
Hyman, Paul (2012), Lost and Found, Communications of the ACM 55(7) (July):
21.
Researchers discover computer pioneer Konrad Zuses long-forgotten Z9, the
worlds first program-controlled binary relay calculator using floating-point
arithmetic.
See also:
Winkler, Jurgen F.H. (2012), Konrad Zuse and Floating-Point Numbers,
letter to the editor, Communications of the ACM 55(10) (October): 67.
Johnson, George (2001), Claude Shannon, Mathematician, Dies at 84, New York
Times (27 February): B7; online at:
http://www.nytimes.com/2001/02/27/nyregion/27SHAN.html
(accessed 12 November 2013).
Johnson, Mark (2002), Review of Davis 2012, MAA Reviews
http://mathdl.maa.org/mathDL/19/?pa=reviews&sa=viewBook&bookId=68938
(accessed 5 November 2012).
Keats, Jonathan (2009), The Mechanical Loom, in The Start of Everything,
Scientific American (September): 88; online at:
http://www.readcube.com/articles/10.1038/scientificamerican0909-88
(accessed 30 October 2013).
The story of the Jacquard loom.
Kernan, Michael (1990), The Object at Hand, Smithsonian 21 (May): 22, 24, 26.
About the Nazis code-making machine, the Enigma.
Kim, Eugene Eric; & Toole, Betty Alexandra (1999), Ada and the first Computer,
Scientific American (May): 7681; online at:
http://people.cs.kuleuven.be/danny.deschreye/AdaTheFirst.pdf
(accessed 12 November 2013).
Kleene, Stephen C. (1981), Origins of Recursive Function Theory, Annals of the
History of Computing 3(1) (January): 5267.
Levy, Steven (2013), The Brief History of the ENIAC Computer, 101 Objects
that Made America, Smithsonian (November): 6264; online at:
http://www.smithsonianmag.com/history-archaeology/The-Brief-History-of-the-
ENIAC-Computer-228879421.html
(accessed 9 November 2013).
6.8. FURTHER SOURCES OF INFORMATION 217
Lohr, Steve (1996), The Face of Computing 50 Years and 18,000 Tubes Ago,
New York Times (19 February): D3; online at:
http://www.nytimes.com/1996/02/19/business/the-face-of-computing-50-years-
and-18000-tubes-ago.html
(accessed 12 November 2013).
Lohr, Steve (2001), Frances E. Holberton, 84, Early Computer Programmer, New
York Times (17 December): F5; online at:
http://www.nytimes.com/2001/12/17/business/frances-e-holberton-84-early-
computer-programmer.html (accessed 12 November 2013).
Mrs. Holberton. . . was one of the six young women recruited by the Army to
program. . . Eniac.
Lohr, Steve (2002), Scientist at Work: Frances Allen; Would-Be Math Teacher
Ended Up Educating a Computer Revolution, New York Times (6 August): F3;
http://tinyurl.com/mqhbpey11 (accessed 12 November 2013).
Lohr, Steve (2010), Inventor Whose Pioneer PC Helped Inspire Microsoft Dies,
New York Times (3 April): A1A3.
Obituary of H. Edward Roberts, inventor of the Altair, the first personal
computer.
MacFarlane, Alistair (2013), Ada Lovelace (18151852), Philosophy Now 96;
online at: http://philosophynow.org/issues/96/Ada Lovelace 1815-1852
(accessed 30 October 2013).
Mahoney, Michael Sean (2011), Histories of Computing, ed. by Thomas Haigh
(Cambridge, MA: Harvard University Press).
Not so much a history of computing or computers as a history of computer
science. Chs. 10 and 11 are especially good on some of the recent
mathematical history.
Markoff, John (1992), Rear Adm. Grace M. Hopper Dies; Innovator in Computers
Was 85, New York Times (3 January); online at:
http://tinyurl.com/lthvdy412 (accessed 11 November 2013).
Markoff, John (2000), A Tale of the Tape from the Days When It Was Still Micro
Soft, New York Times (18 September): C1, C4; online at:
http://tinyurl.com/ox9upbh13 (accessed 12 November 2013).
About the day someone stole Bill Gatess software.
Markoff, John (2002), Edsger Dijkstra, 72, PHysicist Who Shaped Computer Era,
New York Times (10 August): A11; online at:
http://www.nytimes.com/2002/08/10/obituaries/10DIJK.html
(accessed 12 November 2013).
Markoff, John (2005), What the Dormouse Said: How the Sixties Counterculture
Shaped the Personal Computer Industry (New York: Viking).
11 http://www.nytimes.com/2002/08/06/science/scientist-work-frances-allen-would-be-math-teacher-
ended-up-educating-computer.html
12 http://www.nytimes.com/1992/01/03/us/rear-adm-grace-m-hopper-dies-innovator-in-computers-was-
85.html
13 http://www.nytimes.com/2000/09/18/business/technology-a-tale-of-the-tape-from-the-days-when-it-
was-still-micro-soft.html
218 CHAPTER 6. WHAT IS A COMPUTER? A HISTORICAL PERSPECTIVE
engine.html
6.8. FURTHER SOURCES OF INFORMATION 219
Press, Larry (1993), Before the Altair: The History of Personal Computing,
Communications of the ACM 36(9) (September): 2733; online at:
http://bpastudio.csudh.edu/fac/lpress/articles/hist.htm
(accessed 11 November 2013).
Robinson, J. Alan (1994), Logic, Computers, Turing, and von Neumann, in
K. Furukawa, D. Michie, & S. Muggleton (eds.), Machine Intelligence 13: Machine
Intelligence and Inductive Learning (Oxford: Clarendon Press): 135.
Historical comments, by the developer of the resolution method of automated
theorem proving, on the development of computers and the related history of
logic.
Ryan, Bob (1991), Dynabook Revisited with Alan Kay, Byte 16(2) (February):
203204, 206208.
Is the reign of the desktop computer about to end? A prediction of the future
of what is now known as laptop computers.
Sammet, Jean E. (1992), Farewell to Grace HopperEnd of an Era!,
Communications of the ACM 35(4) (April): 128131;
http://dx.doi.org/10.1145/129852.214846
Samuel, Arthur L. (1953), Computing Bit by Bit, or Digital Computers Made
Easy, Proceedings of the IRE [Institute of Radio Engineers] 41(10) (October):
12231230.
An introduction to computers, aimed at (radio) engineers who might not be
familiar with them; written by an IBM researcher who later became famous
for his work on computer checkers-players.
Shapiro, Stewart (1983), Remarks on the Development of Computability, History
and Philosophy of Logic 4: 203220.
On the mathematical history of computing.
Sieg, Wilfried (1994), Mechanical Procedures and Mathematical Experience, in
Alexander George (ed.), Mathematics and Mind (New York: Oxford University
Press): 71117;
http://repository.cmu.edu/cgi/viewcontent.cgi?article=1248&context=philosophy
(accessed 10 December 2013).
See 1 for remarks on the mathematical history of computation.
Smith, Adam (1776), Of the Division of Labor, Book I, Ch. I, of The Wealth of
Nations, online at: http://www.econlib.org/library/Smith/smWNCover.html
(from that page, link to I.1. Of the Division of Labor)
(accessed 5 November 2012).
Stein, Dorothy (1985), Ada: A Life and a Legacy (Cambridge, MA: MIT Press).
See also:
Kidder, Tracy (1985), Less (and More) than Meets the Eye, review of Stein
1985, New York Times Book Review (29 December): 67; online at:
http://www.nytimes.com/1985/12/29/books/less-and-more-than-meets-the-
eye.html
(accessed 11 November 2013).
Stoll, Cliff (2006), When Slide Rules Ruled, Scientific American 294(5) (May):
8087.
220 CHAPTER 6. WHAT IS A COMPUTER? A HISTORICAL PERSPECTIVE
Standage, Tom (1998), The Victorian Internet: The Remarkable Story of the
Telegraph and the Nineteenth Centurys On-Line Pioneers (New York: Walker
Publishing).
See review by John R. Alden in Smithsonian 29(10) (January 1999): 126127;
online at:
http://www.smithsonianmag.com/history-
archaeology/bookreview jan99 a.html (accessed 12 November 2013).
Tout, Nigel (20002012), Vintage Calculators Web Museum
http://www.vintagecalculators.com/ (accessed 6 November 2012).
Wells, Benjamin (2003), The Architecture of Colossus, the First PC (abstract)
http://www.stanford.edu/class/ee380/Abstracts/040204.html
(accessed 6 November 2012).
See also Copeland et al. 2010, above.
What Is an Algorithm?
223
224 CHAPTER 7. WHAT IS AN ALGORITHM?
or:
Soare, Robert I. (1999), The History and Concept of Computability,
in E.R. Griffor (ed.), Handbook of Computability Theory (Amsterdam:
Elsevier): 336.
a revised and shortened form of Soare 1996.
Read 13, 4.54.6; skim the rest
3. Strongly Recommended:
Browse through the Examples of Algorithms at:
http://www.cse.buffalo.edu/rapaport/584/whatisanalg.html
(accessed 6 November 2012).
Haugeland, John (1981), Semantic Engines: An Introduction to Mind Design, in
John Haugeland (ed.), Mind Design: Philosophy, Psychology, Artificial Intelligence
(Cambridge, MA: MIT Press): 95128.
A good description of the syntax and semantics of formal systems and their
relationship to Turing Machines.
Boehm, C.; & Jacopini, G. (1966), Flow Diagrams, Turing Machines, and
Languages with Only Two Formation Rules, Communications of the ACM 9(5):
366371.
7.1. RECOMMENDED READINGS: 225
7.2 Introduction
We are examining the questions of whether computer science is a science (or something
else, such as a branch of engineering or some combination of both science and
engineering) and what its subject matter is: Does it study computers: (physical)
devices that computeor computing: the algorithmic processes that computers do?
(Or perhaps it studies something else, such as information, or information processing.)
In the former case, we need to ask what computers are; in the previous chapter, we
began that investigation by looking at the history of computers. In this chapter, we ask
what computing is. Then we will be in a better position to return to our question of
what a computer is, looking at it from a philosophical, rather than a historical, point of
view. And after that, we will return to the question of what computing is, again looking
at some philosophical issues.
Although I have been talking about computing, other terms that are used to
describe more or less the same territory are computation and algorithms. It may
be worth a brief detour into the etymology of these and some related terms.
7.3.1 compute
According to the Oxford English Dictionary (OED)1 , the verb compute comes from
the Latin verb computare, meaning to calculate, reckon, to count up. But when
people talk about computing today, they mean a great deal more than mere counting;
computing has come to include everything we can do with computers, from text
processing to watching videos and playing games, so, clearly, the meaning has been
extended to include non-numerical reckoning.
The Latin word computare itself comes from the Latin morpheme com, meaning
together with, and the Latin word putare, meaning to cleanse, to prune, to reckon,
to consider, think (and putare came from a word meaning clean, pure). So, in
ancient Rome at least, to compute seems to have meant, more or less, something
like: to consider or think about things together, to clear things up together, or
maybe to reckon with (something).
7.3.2 reckon
The verb reckon originally meant to give an account of, recount; to tell; to describe,
and later came to mean to count, to calculate. Reckon is from an Indo-European2
root rek, possibly meaning to reach or to tell, to narrate, to say (as in to recite
1 http://www.oed.com/view/Entry/37974
2 http://en.wikipedia.org/wiki/Indo-European languages
7.4. WHAT IS COMPUTATION? 227
7.3.4 computation
The bottom line seems to be this: Computation originally meant something very
closely related to our modern notion of symbol (i.e., shape) manipulation, which is
another way of describing syntax. (See Ch. 22, as yet unwritten.)
Now that we know how we got the word computation, well turn to what the
object computation is.
But we will be interested in its other, mathematical meaning, as when we say that
some dependent variable is a function of i.e., depends onsome independent
variable. (As it turns out, this technical sense of the word was, first of all, initiated
by our old friend Leibniz and, second, was an extension of its other meaning; for the
history of this, see the OED entry on the noun function, in its mathematical sense
(sense 6; http://www.oed.com/view/Entry/75476. On the history of the concept of
function, see [OConnor and Robertson, 2005].)
and
2. for all members a of A,
and for all members b of B
and for all members b0 of B6
if : (a, b) is a member of f
and if : (a, b0 ) is also a member of f
then: b = b0
Because we are considering a binary relation as a set of ordered pairs, lets write the
members of a binary relation from A to B as ha, bi, where a A and b B. Here are
some examples of functions in this extensional sense:
4 Itis something like a mapping. Such an assignment is not quite the same thing as an assignment of
a value to a variable in a programming language or in a system of logic.
5 http://www.cse.buffalo.edu/rapaport/intensional.html
6 Keep in mind that b is allowed to be the same as b0 !
7.4. WHAT IS COMPUTATION? 229
3. E(y) = hm, di
=h
((((19 (y mod 19)) + (y/100) ((y/100)/4) (((8 (y/100)) + 13)/25) +
15) mod 30) (((y mod 19) + (11 (((19 (y mod 19)) + (y/100)
((y/100)/4) (((8 (y/100)) + 13)/25) + 15) mod 30)))/319) + (((2
((y/100) mod 4))+(2((y mod 100)/4))((y mod 100) mod 4)(((19
(y mod 19)) + (y/100) ((y/100)/4) (((8 (y/100)) + 13)/25) + 15) mod
30) (((y mod 19) + (11 (((19 (y mod 19)) + (y/100) ((y/100)/4)
(((8 (y/100)) + 13)/25) + 15) mod 30)))/319) + 32) mod 7) + 90)/25 ,
h = {hyes, print helloi, hno, print byei, hinput 6= yes & input 6= no, print sorryi}
The idea behind this function is that it prints hello, if the input is yes;
it prints bye, if the input is no;
and it prints sorry, if the input is neither yes nor no.
7 See also http://techsupt.winbatch.com/TS/T000001048F35.html (accessed 11 December 2013).
230 CHAPTER 7. WHAT IS AN ALGORITHM?
5. A partial function (i.e., a function that has no outputs for some possible inputs):
1 1 1 1
k = {. . . , h2, i , h1, i , h1, i , h2, i , . . .}
2 1 1 2
In this picture, f is a machine into which you put a; you then turn a crank (clockwise,
lets suppose); f then grinds away at the input by means of some mysterious
mechanism; and finally the machine outputs b (i.e., f (a)). But this view of a function
as being something active or dynamic that changes something is incorrect.8
8 See http://www.askphilosophers.org/question/1877.
7.4. WHAT IS COMPUTATION? 231
Despite what you may have been told elsewhere (I was told this in high school),
this is NOT what a function is! A function, as we have seen, is merely the set of input-
output pairs. So, what is the machine? It is a computer! (And the mysterious gears
hidden inside the black box implement an algorithm that computes the function.) In
fact, one problem with this machine metaphor for a function, as we will see, is that
not all functions can be computed by algorithms; that is, there are functions for which
there are no such function machines.9
5. if i 6= 0, then k(i) = 1i .
Although formulas may look a lot like algorithms, they are not the same thing.
Consider, for example, the formula 2 + 4 5: Without an explicit statement of a
rule telling you whether to multiply first or to add first, there is no way of knowing
whether the number expressed by that formula is 30 or 22. Such a rule, however,
would constitute an algorithm telling you how to calculate the value of the formula. Or
consider the formula 2x + 1: Should you first calculate 2x and then add 1? Or should
you store 1 somewhere (say, by writing it on a piece of paper), then calculate 2x, and
finally add 2x to 1? Of course, the commutative law of addition tells us that, in this
case, it doesnt matter in which order you compute the value of the formula, but here
we have a clear case of only one formula but (at least) two distinct algorithms.
Perhaps an even clearer example is function E, abovethe one that tells you when
Easter occurs. I dare you to try to use this formula to find out when Easter will occur
9 Interestingly, Godel made this observation in the 1930s in an unpublished paper!
[Turing] has shown that the computable functions defined in this way [that is, in terms of
Turing machines] are exactly those for which you can construct a machine with a finite
number of parts which will do the following thing. If you write down any number n1 ,. . . ,nr on
a slip of paper and put the slip into the machine and turn the crank, then after a finite number
of turns the machine will stop and the value of the function for the argument n1 ,. . . ,nr will be
printed on the paper. [Godel, 930s, 168], cited in [Shagrir, 2006a, 3] and in [Soare, 2009,
3.2, p. 374].
So, the machine pictured in Fig. 7.4.1.3 is a Turing machine!
10 See http://www.cse.buffalo.edu/rapaport/intensional.html
232 CHAPTER 7. WHAT IS AN ALGORITHM?
next year! Where would you even begin? (A related matter is knowing whether the
formula is even correct! Well explore this issue in Ch. 16.)11
(For a good discussion of the difference between formulae and algorithms, see the
question asked in [Wangsness and Franklin, 1966] (quoted in full at the beginning of
this chapter) and the answers in [Huber, 1966] and [Knuth, 1966]; Knuths answer is
a commentary on Hubers. Hubers answer, roughly, is that an algorithm is a set of
instructions for computing the value of a function by executing (or carrying out, or
following) the instructions, whereas a formula is an expression describing the value of
a function; it can be evaluated (that is, the value of the function can be determined
from the formula) but not executed (because a formula does not come equipped with an
algorithm for telling you how to evaluate it). In a sense, a formula is static, whereas
an algorithm is (potentially) dynamic.)
Functions describable by formulas are not the only kind of functions. There are
functions without formulas for computing them; that is, there are functions such that
the gears of their machines work by magic! For example, there are table look-
up functions, where the only way to identify the correct output for a given input is to
look it up in a table (rather than to compute it); usually, this is the case when there is no
lawlike pattern relating the inputs and the outputs. Of course, there are non-computable
functions, such as the Halting Problem (well have more to say on what this in 7.8).
And there are random functions.
In fact, one of the central purposesperhaps the central quesionof computer
science (or, at least, of the non-engineering portion of the field) is to figure out which
functions do have algorithms for computing them! This includes non-mathematical
functions, such as the (human) cognitive functions that take as input sensory
information from the environment and produce as output (human, cognitive) behavior.
To express this another way, the subfield of computer science known as AI can be
considered as having as its purpose figuring out which such cognitive functions are
computable.
This is only a rough definition or characterization because, for one thing, we havent yet
defined algorithm. But, assuming that an algorithm is, roughly, a set of instructions
for computing the output of the function, then it makes sense to define a function as
being computable if we can. . . well. . . compute it!
11 I created this formula by working backwards from the algorithm given in [Stewart, 2001], so its quite
possible that I introduced a typographical error! Even if I didnt, I am assuming that [Stewart, 2001]s
algorithm is correct. And that could be a big assumption.
7.4. WHAT IS COMPUTATION? 233
So, a function f is computable if there is an algorithm A f such that, for all inputs
i, A f (i) = f (i). That is, a function f is computable by an algorithm A f if both f and A f
have the same input-output behavior (that is, if both define the same binary relation,
or set of input-output pairs). Moreover, A f must specify how f s inputs and outputs are
related. So, whereas a function only shows its input-output pairs but is silent about how
they are related, an algorithm for that function must say more. It must be a procedure,
or a mechanism, or a set of intermediate steps or instructions that either transforms the
input into the output or else shows you explicitly how to find the output by starting with
the input, or how to get from the input to the output. Algorithms shouldnt be magic or
merely arbitrary.
It seems easy enough to give examples of algorithms for some of the functions
listed earlier:
1. A f (i) =
input i;
add 1 to i;
output result.
2. Ag (i) =
input i;
multiply i by 2;
output result.
3. A0f (i) =
input i;
mulitply i by 2;
call the result x;
subtract i from x;
add 3 to 4;
call the result y;
divide 7 by y;
add x to y;
output result.
4. For E(m, d), see the English algorithm in [Stewart, 2001] or the computer
program online at
http://techsupt.winbatch.com/TS/T000001048F35.html.
Note that, even though that algorithm may not be easy to follow, it is certainly
much easier than trying to compute the output of E from the formula. (For one
thing, the algorithm tells you where to begin!)
118 [an effective method of calculating, especially if it consists of a sequence of steps with later steps
depending on results of earlier ones, is called an algorithm] and 119 [an effective method of computation,
or algorithm, is one for which it woud be possible to build a computing machine, by which he means a
Turing machine]), 83, 99n.183 [a procedure. . . should not be called effective unless there is a predictable
upper bound of the number of steps that will be required], and 326 (note 535); cf. [Manzano, 1997, 219
220]. See also Sieg 1997; another explication of effective is in [Gandy, 1980, 124], which well return to
in Ch. 10.
7.5. ALGORITHMS MADE PRECISE 235
These are a bit obscure: Being determined may be akin to Rossers precisely
predetermined. But what about being applicable? Perhaps this simply means that
an algorithm must not be limited to converting one, specific input to an output, but must
be more general. And Markovs notion of effectiveness seems restricted to only the
second part of Rossers notion, namely, that of producing the answer. There is no
mention of finiteness, unless that is implied by being computational.
In his undergraduate-level, logic textbook, Kleene [Kleene, 1967] elaborates on
the notions of effective and algorithm that he left unspecified in his earlier,
classic, graduate-level treatise on metamathematics. He continues to identify effective
procedure with algorithm [Kleene, 1967, 231], but now he offers a characterization
of an algorithm as
Knuth [Knuth, 1973, Basic Concepts: 1.1: Algorithms, pp. xiv9, esp. pp. 19]
goes into considerably more detail, albeit still informally. He says that an algorithm is
a finite set of rules which gives a sequence of operations for solving a specific type of
problem, with five important features [Knuth, 1973, 4]:
Note the double finiteness: A finite number of rules in the text of the
algorithm and a finite number of steps to be carried out. Moreover,
algorithms must halt. (Halting is not guaranteed by finiteness; see
point 5, below.) Interestingly, Knuth also says that an algorithm is a
finite computational method, where a computational method is a
procedure that only has the next four features [Knuth, 1973, 4].
2. Definiteness. Each step. . . must be precisely defined; the actions to be carried
out must be rigorously and unambiguously specified. . . [Knuth, 1973, 5].
This seems to be Knuths analogue of the precision that Rosser and
Markov mention.
3. Input. An algorithm has zero or more inputs [Knuth, 1973, 5].
Curiously, only Knuth and Markov seem to mention this explicitly,
with Markovs applicability property suggesting that there must be
at least one input. Why does Knuth say zero or more? Presumably,
he wants to allow for the possibility of a program that simply outputs
some information. On the other hand, if algorithms are procedures
for computing functions, and if functions are regular sets of input-
output pairs (regular in the sense that the same input is always
associated with the same output), then algorithms would always have
to have input. Perhaps Knuth has in mind the possibility of the
input being internally stored in the computer rather than having to
be obtained from the external environment. Or perhaps this is how
constant functions (functions whose output is constant, no matter
what their input is) are handled. It is worth noting, however, that
[Hartmanis and Stearns, 1965, 288]the founding document of the
field of computational complexityallows their multi-tape Turing
machines to have at most one tape, which is an output-only tape; there
need not be any input tapes.
4. Output. An algorithm has one or more outputs [Knuth, 1973, 5].
That there must be at least one output echoes Rossers property
(2) (certain to produce the answer) and Markovs notion (3)
of effectiveness (a certain result). But Knuth characterizes
outputs as quantities which have a specified relation to the inputs
[Knuth, 1973, 5]; the relation would no doubt be the functional
relation between inputs and outputs, but, if there is no input, what
kind of a relation would the output be in? Very curious!15
5. Effectiveness. This means that all of the operations to be performed in the
algorithm must be sufficiently basic that they can in principle be done exactly and
in a finite length of time by a man [sic] using pencil and paper [Knuth, 1973,
6].
15 For an example of an algorithm that has an input but no output, see 17; see also
[Copeland and Shagrir, 2011, 230231].
7.5. ALGORITHMS MADE PRECISE 237
Note, first, how the term effective has many different meanings
among all these characterizations of algorithm, ranging from
it being an unexplained term, through being synonymous with
algorithm, to naming very particularand very different
properties of algorithms.
Second, it is not clear how Knuths notion of effectiveness differs
from his notion of definiteness; both seem to have to do with the
preciseness of the operations.
Third, Knuth brings in another notion of finiteness: finiteness
in time. Note that an instruction to carry out an infinite sequence
of steps in a finite time could be accomplished by doing each step
twice as fast as the previous step; or each step might only take a finite
amount of time, but the number of steps required might take longer
than the expected life of the universe (as in computing a perfect, non-
losing strategy in chess; cf. [Zobrist, 2000, 367]). These may have
interesting theoretical implications (which we will explore in Ch. 11)
but do not seem very practical. Knuth [Knuth, 1973, 7] observes that
we want good algorithms in some loosely-defined aesthetic sense.
One criterion of goodness is the length of time taken to perform the
algorithm. . . .
Finally, the gold standard of a [hu]man using pencil
and paper seems clearly to be an allusion to Turings analysis
[Turing, 1936], which we will examine in great detail in the next
chapter.
We can summarize these informal observations as follows:
An algorithm (for executor E to accomplish goal G) is:
1. a procedure, i.e., a finite set (or sequence) of statements (or rules, or
instructions), such that each statement is:
(a) composed of a finite number of symbols (or marks) from a finite
alphabet
(b) and unambiguous for Ei.e.,
i. E knows how to do it
ii. E can do it
iii. it can be done in a finite amount of time
iv. and, after doing it, E knows what to do next
2. which procedure takes a finite amount of time, i.e., halts,
3. and that ends with G accomplished
But the important thing to note is that the more one tries to make precise these
informal requirements for something to be an algorithm, the more one recapitulates
Turings motivation for the formulation of a Turing machine. We will look at exactly
what Turing did in Ch. 8. But first we are going to look a bit more deeply into the
current view of computation.
238 CHAPTER 7. WHAT IS AN ALGORITHM?
Rather than enter into a complicated and controversial historical investigation of who
is responsible for this insight, I have chosen instead to simply list the names of some
of the people who contributed to it:
Famously, Samuel F.B. Morse not only invented the telegraph but also (following
in Bacons footsteps) developed his eponymous, binary code in the mid-1800s.18
In 1936, as we will see in Ch. 8, Turing made essential use of 0 and 1 in the
development of Turing machines.
16 [Cerf, 2015, 7] and http://home.hiwaay.net/paul/bacon/advancement/book6ch1.html
17 http://www.leibniz-translations.com/binary.htm
18 http://en.wikipedia.org/wiki/Morse code. Arguably, however, Morse code (traditionally conceived as
having only two symbols, dot and dash) is not strictly binary, because there are blanks, or time-lapses,
between those symbols; CITE GLEICK.
7.6. FOUR GREAT INSIGHTS OF COMPUTER SCIENCE 239
Finally, the next year, Claude Shannon (in his development of the mathematical
theory of information) used The symbol 0. . . to represent. . . a closed circuit,
and the symbol 1. . . to represent. . . an open circuit [Shannon, 1937, 4] and then
showed how propositional logic could be used to represent such circuits.
So, we can get by with either only two (slightly complex) verbs or five (slightly
simpler) verbs. But either version is pretty small.
Only three rules of grammar are needed to combine any set of basic
instructions (verbs) into more complex ones:
1. sequence:
first do this; then do that
2. selection (or choice):
IF such-&-such is the case,
THEN do this
ELSE do that
3. repetition (or looping):
WHILE such & such is the case
DO this
out that at one step, a Turing machine may change its control state, print a symbol at the current tape cell[,]
and move its head. . . . One may claim that every Turing machine performs only one action a time, but that
action [can] have several parts. The number of parts is in the eye of the beholder. You counted three parts.
I can count four parts by requiring that the old symbol is erased before the new symbol is printed. Also,
the new symbol may be composed, e.g. 12. Printing a composed symbol can be a composed action all by
itself.
7.6. FOUR GREAT INSIGHTS OF COMPUTER SCIENCE 241
Digression:
For readers who are familiar with the structure of recursive definitions,
what we have here is a recursive definition of the notion of an
instruction: The base cases of the recursion are the primitive verbs of the
Turing machine (move(location) and print(symbol)), and the recursive
cases are given by sequence, selection, and repetition.
More generally, a recursive definition of some concept C consists
of two parts. The first part, called the base case, gives you some
explicit examples of C. These are not just any old examples, but are
considered to be the simplest, or most basic or atomic, instances of C
the building blocks from which all other, more complex instances of C can
be constructed.
The second part of a recursive definition of C consists of rules
(algorithms, if you will!) that tell you how to construct those more complex
instances of C. But these rules dont simply tell you how to construct
the complex instances from the base cases. Rather, they tell you how to
construct the complex instances from any instances that have already been
constructed. The first complex instances, of course, will be constructed
directly from the base cases. But others, even more complex, will be
constructed from the ones that were constructed directly from the base
cases, and so on. What makes such a definition recursive is that simpler
instances of C recur in the definitions of more complex instances.
So, the base case of a recursive definition tells you how to begin.
And the recursive case tells you how to continue. But recursive definitions
sometimes seem to be circular: After all, we seem to be defining C in terms
of C itself! But really we are defining new (more complex) instances
of C in terms of other, older (that is, already constructed), or simpler
instances of C, which is not circular at all. (It would only be circular if the
base cases were somehow defined in terms of themselves. But they are
not defined; they are given, by fiat.)21 End digression
it is also the core of the concept of language [Hauser et al., 2002]: The faculty of language. . . in the narrow
sense. . . only includes recursion and is the only uniquely human component of the faculty of language.
However, this is a highly controversial claim; to follow the debate, see [Pinker and Jackendoff, 2005,
Fitch et al., 2005, Jackendoff and Pinker, 2005]. Recursion is discussed more fully in those three follow-
up papers than in the original one.
242 CHAPTER 7. WHAT IS AN ALGORITHM?
2. All of the formalisms that have been proposed as precise, mathematical analyses
of computability are not only logically equivalent (that is, any function that
is computable according to one analysis is also computable according to each
of the others), but they are constructively equivalent (that is, they are inter-
compilable, in the sense that you can write a computer program that will translate
(or compile) a program in any of these languages into an equivalent program in
any of the others): GIVE CITATIONS
Turing machines
Churchs lambda calculus (which John McCarthy later used as the basis of
the Lisp programming language)
-recursive functions
But this has not stopped some philosophers and computer scientists from challenging
the Computability Thesis. Some have advocated forms of computation that exceed
Turing-machine computability. We will explore some of these options in Ch. 11.
What we will now turn our attention to is a somewhat more mathematical outline
of structured programming and recursive functions, after which we will ask whether
there are functions that are non-computable.
244 CHAPTER 7. WHAT IS AN ALGORITHM?
1. Basic programs:
2. Program constructors:
22 The material in this section is based on lectures by John Case. WHICH IN TURN ARE BASED ON
end.
is a (complex) structured program.
Such a is called a while-loop (or free loop, or unbounded
loop): The simpler program is repeatedly executed while (i.e.,
as long as) the Boolean test P is true (i.e., until P is false). Note
that, unlike the case of a count loop, a while loop can be an infinite
loop, because there is no built-in guarantee that P will eventually
become false (because, in turn, there is no restriction on what P
246 CHAPTER 7. WHAT IS AN ALGORITHM?
and that
(b) for all n N, if n M, then S(n) M.
Then S = N.
(This is the axiom that underlies the logical rule of inference known as
mathematical induction.)
To define the recursive functions, we once again begin with basic functions
that are intuitively, clearly computable, and then we construct more complex
functions from them.
This can be made a bit easier to read by using the symbol x for the
sequence x1 , . . . , xk . If we do this, then generalized composition can
be written as follows:
f (x) = g(h(x))
We can make this look a bit more like the official definition of while-recursion
by taking h1 (x) = x1 and h2 (x) = x2. In other words, the two base cases of
f are projection functions, and the recursive case uses the predecessor function
twice (the second time, it is the predecessor of the predecessor).
Given these definitions, we can now classify computable functions:
We can now more clearly see that this combines conditional definition
with a computation of f based on f s value for its previous output.
250 CHAPTER 7. WHAT IS AN ALGORITHM?
Suppose each of the first n terms of this sequence halts with a non-zero
value, but thereafter each term halts with value 0; that is:
h(x, 0) 6= 0
h(x, 1) 6= 0
h(x, 2) 6= 0
...
h(x, n) 6= 0
but:
h(x, z) = 0
...
h(x, z0 ) = 0
What the -operator does is give us a description of that smallest z
(i.e., the first z in the sequence) for which h halts with value 0. So the
definition of says, roughly:
How are all of these notions related? As we saw, there is an overlap between
the primitive-recursive functions and the while-recursive functions, with the basic
functions and generalized composition in their intersection.
The partial-recursive functions are a superset of the primitive-recursive functions.
The partial-recursive functions consist of the primitive-recursive functions together
with the functions defined with the -operator.
The recursive functions are partial-recursive functions that are also total functions.
Finally, f is primitive-recursive if and only if f is count-program-computable. If
f is primitive-recursive (i.e., if f is count-program-computable), then f is partial-
recursive, which is logically equivalent to being while-program-computable. And
both of these are logically equivalent to being Turing-machine computable, lambda-
definable, Markov-algorithmic, etc.
H(C, i)
And our question is: Does H exist? Can we write such a program?
In terms of the function machine illustration, above, we are asking whether there
is a function machine (i.e., a computer) whose internal mechanism (i.e., whose
program) is H. When you input the pair hC, ii to this function machine and turn
its crank, it should output yes if the function machine for C successfully outputs a
value when you give it input i, and it should ouput no if the function machine for C
goes into an infinite loop and never outputs anything.
(Heres another way to think about this: H is a kind of super-machine that takes
as input, not only an integer i, but also another machine C. When you turn Hs crank,
H first feeds i to C, and then H turns Cs crank. If H detects that C has successfully
output a value, then H outputs yes; otherwise, H outputs no.)
This would be very useful for introductory computer-programming teachers (or
software engineers in general)! One thing you never want in a computer program is an
7.8. THE HALTING PROBLEM 253
unintentional infinite loop. (Sometimes, you might want an intentional one: You dont
want an ATM machine, for instance, to haltyou do want it to behave in an infinite
loop so that it is always ready to accept new input from a new customer.) It would
be very useful to have a single, handy program that could quickly check to see if any
program that someone writes has an infinite loop in it. But no such program can be
written!
It is important to be clear that it can be possible to write a program that will check
if another program has an infinite loop. In other words, given a program C1 , there
might be another program H1 that will check whether C1 but not necessarily any
other programhas an infinite loop. What cant be done is this: To write a single
program H that will take any program C whatsoever and tell you whether C will halt
or not.30
Note that we cant answer the question whether C halts on i by just running C on
i: If it halts, we know that it halts. But if it loops, how would we know that it loops?
After all, it might just be taking a long time to halt.
There are two ways that we might try to write H.
quantifiers: The Halting Problem asks this question: Does there exist a single program H, such that, for any
program C, H outputs yes if C halts, else it outputs no? The answer to this question is no; no such
program H exists. The other question, for which there can be a positive answer, is this: Given any program
C, does there exist a program H (which will depend on what C is!) that outputs yes if C halts, else it outputs
no? Note that different Cs might have different Hs. The answer to this question can be yes.
254 CHAPTER 7. WHAT IS AN ALGORITHM?
Programs like this will prove useful in our later discussion of hypercomputation
(that is, computation that, allegedly, cannot be modeled by Turing machines). But it
wont work here, because were going to need to convert H to another program called
H , and H2 cant be converted that way, as well see. More importantly, H2 doesnt
really do the required job: It doesnt give us a definitive answer to the question of
whether C halts, because its initial answer is not really no, but something like not
yet.
The answer to our question about whether such an H exists or can be written is
negative: There is no such program as H(C, i). In other words, H(C, i) is a non-
computable function. Note that it is a function: There exists a perfectly good set of
input-output pairs that satisfies the definition of function and that looks like this:
Here is a sketch of a proof that H is not computable. The proof takes the
form of a reductio ad absurdum: We will assume that H is computable, and
derive a contradiction. If an assumption implies a contradiction, thenbecause no
contradiction can be truethe assumption must have been wrong. So, our assumption
that H is computable will be shown to be false.
So, assume that H is computable. Now consider another program, H , that works
as follows: H is just like H, except that:
if C halts on i, then H loops
(remember: if C halts on i, H does not loop; it outputs yes)
and if C loops on i, then H outputs no (just like H does).
Here is how we might write H , corresponding to the version of H that we called H1
above:
algorithm H1 (C, i):
begin
if C(i)
then
begin
while true do begin end
end
else output no
end.
Here, true is a Boolean test that is always true. (As we noted earlier, you could replace
it by something like 1=1, which is also always true.)
Note that we cannot write a version of H2 that might look like this:
algorithm H2 (C, i):
begin
output no; {i.e., make an initial guess that C loops}
if C(i)
7.8. THE HALTING PROBLEM 255
Why not? Because if C halts, then the only output we will ever see is the message that
says that C loops! That initial, incorrect guess is never revised. So, well stick with H
(that is, with H1 ) and with H (that is, with H1 ).
Note, by the way, that if H exists, so does H . That is, we can turn H into H as
follows: If H were to output yes, then let H go into an infinite loop. That is, replace
Hs output yes by H s infinite loop.
Returning to our proof sketch, the next step is to code C as a number, so that it can
be treated as input to itself.
What? Why do that? Because this is the way to simulate the idea of putting the C
machine into the H machine and then having the H machine turn Cs crank.
So, how do you code a program as a number? This is an insight due to Kurt
Godel. To code any text (including a computer program) as a number in such a way
that you could also decode it, begin by coding each symbol in the text as a unique
number (for example, using the ASCII code). Suppose that these numbers, in order,
are L1 , L2 , L3 , . . . , Ln , where L1 codes the first symbol in the text, L2 codes the second,
. . . , and Ln codes the last symbol.
Then compute the following number:
and where pn is the nth prime number, and where the ith factor in this product is the ith
prime number raised to the Li th power.
By the Fundamental Theorem of Arithmetic,31 the number that is the value of
this product can be uniquely factored, those exponents can be recovered, and then they
can be decoded to yield the original text.32
Now consider H (C,C). (This step is called diagonalization.) That is, suppose
that you (1) code up program C as a Godel number, (2) use it as input to the program C
itself (after all, the Godel number of C is an integer, and thus it is in the domain of the
function that C computes, so it is a legal input for C), and (3) then let H do its job on
that pair of inputs.
By the definition of H :
7.9 Summary
Lets take stock of where we are. We asked whether computer science is the science
of computing (rather than the science of computers. In order to answer that, we asked
what computing, or computation, is. We have now seen one answer to that question:
Computation is the process of executing an algorithm to determine the output value
of a function, given an input value. We have seen how to make this informal notion
precise, and we have also seen that it is an interesting notion in the sense that not all
functions are computable.
But this was a temporary interruption of our study of the history of computers
and computing. In the next chapter, we will return to the history by examining Alan
Turings formulation of computability.
7.10. NOTES FOR NEXT DRAFT 257
Before continuing, heres something to think about that will help prepare you
for the discussion in Ch. 10: Is it reasonable to think of cooking as a form
of computation? Unlike other forms of computation that involve numbers or,
more generally, symbols,33 cooking involves physical objects, in particular,
food. Arithmetic and word processing are typical kinds of things we do with
computers. (So are drawing pictures and making music.) Do we expect
computers to be able to prepare dinner for us?
But lets continue with the evidence I mentioned:
33 A related question: Do computers deal with numbers? Or with numerals (that is, symbols for numbers)?
260 CHAPTER 7. WHAT IS AN ALGORITHM?
But algorithms, as standardly conceived, are never loose! They never require
judgment on the part of the agent that executes them.
Another consideration raised by the previous quotation is this: If cooking is a
form of computation, what plays the role of the computer? Dewdney makes it
sound like the cook is the computer.
very simple example of a Turing machine aimed at students, and IIII and, especially, VIII are amusing
and well worth reading!
7.10. NOTES FOR NEXT DRAFT 263
prefer, a universal Turing machine with a program for computing f ). But there
will be many algorithms that compute f , and not all of them will be expressible in
the language of Turing machines. So, theres a difference between an algorithm
and a program (which can be thought of as an algorithm expressed in some
programming language).
An algorithm is something abstract that can be implemented as different
programs in different programming languages. Any program that implements
a particular algorithm at best simulates any other program that implements that
algorithm.
Moreover, Turing-machine algorithms (according to [Gurevich, 2011,
6]) are symbolic sequential algorithms. What about ruler-and-compass
algorithms? [Toussaint, 1993]: [T]he functions computed by ruler-and-
compass algorithms are not Turing computable [Gurevich, 2011, 3]. Why
not? One possible way to reduce the latter to the former might be by way
of an output plotter that can simulate ruler-and-compass constructions. Or,
more simply (in one sense of simply!), if all such (geometric) constructions
can be expressed in terms of analytic geometry, then they would seem to be
able to be expressed in terms of functions (over real numbers), and hence be
(Turing-)computable. But lets suppose that Gurevich is right: Surely, theres
something algorithmic about ruler-and-compass constructions. They would
seem to satisfy the informal definition of algorithm given in 7.5, differing
only in what counts as a statement, rule, or instruction. And, given the
Boehm-Jacopini Theorem and the third insight of 7.6.3, the core difference
is what counts as a primitive or basic statement, rule, or instruction.
For Turing machines, those are print and move; for recursive functions,
they are successor, predecessor, and projection; for ruler-and-compass
constructions, they would be something like drawing an arc with a certain radius,
drawing a line of a certain length, etc. Under this view, are all algorithms
expressible in the language of Turing machines? (see also [Goodman, 1987, 4])
Gurevich distinguishes pretty clearly algorithms from Turing
machines, pointing out that, although for any (intuitively) computable function
there is an algorithmin particular, a TMthat computes it, it doesnt follow
that a TM can compute every algorithm; at best, TMs can simulate any
algorithm. One example is Euclids GCD algorithm, which comes in both a
subtraction and a division form (division just being repeated subtraction). A
TM probably cant implement the latter (in any direct way), because its only
way of (indirectly) implementing division would be by implementing repeated
subtraction.
He also says that ruler-and-compass constructions are not Turing
computable, nor is Gaussian elimination. He gives no justification for either
statement. On the face of it, the former might be TM-computable if you hook a
plotter, or even a ruler and a compass, up to it and let the TM control them. Even
easier, translate every ruler-and-compass algorithm into the language of analytic
geometry, which, in turn, is expressible in terms of (computable) functions (on
264 CHAPTER 7. WHAT IS AN ALGORITHM?
But ruler and compass was their computer. It was their true computer.
They really computed that way. [Gurevich, 2013]
([Feferman, 1992, 318] makes a similar remark.)
Heres another statement of the issue:
There may be a huge difference between an algorithm and the
simulating Turing machine. The poor Turing machine may work
long and hard, with its head creeping painfully slowly back and
forth on that long narrow tape, in order to simulate just one step
of the given algorithm. . . . The problem arises whether there is a
machine model such that any algorithm, however abstract, can be
simulated step-for-step by a machine of that model. Let me call such
a model universal with respect to algorithms. Turings machine is
universal with respect to computable functions, but not with respect
to algorithms. [Gurevich, 1999, 9596, my italics]
14. In a section titled The flaw in Churchs thesis, Robert I. Soare says:
If the basic steps are stepwise recursive, then it follows easily by the
Kleene normal form theorem. . . that the entire process is recursive.
The fatal weakness in Churchs argument was the core assumption
that the atomic steps were stepwise recursive, something he did not
justify. [Soare, 2012, 3286, my italics]
Churchs theory, the -calculus, had as its basic, or atomic, steps formal
operations on function formulas that some peopleGodel in particulardid not
find to be intuitively computable.35 The same could be said even for Godels own
theory of recursive functions. But Turings basic operations were, by design,
simple things that any human could easily do: put a mark at specific location on
a piece of paper, and shift attention to a different location.
15. For statements of equivalence of general recursive, -recursive, -definable, etc.,
see [Soare, 2012, 3284].
16. One of the essential features of an algorithm is that it is an explicit set
of instructions (for doing something). (Exactly what counts as being an
instruction and as being explicit is whats at the heart of the formal notion
of algorithm.) Consider this observation:
35 For an elemetary introduction to the lambda-calculus, see [PolR, 2009, Alonzo Churchs Lambda-
Calculus].
7.10. NOTES FOR NEXT DRAFT 265
But, by our first great insight (7.6.1), anything that we want to process
computationally can be encoded as a real number. So, perhaps computing
functions is not so special after all.
Does anyone else cited above mention this? How does (the lack of) this relate to
interactive computing/hypercomputation? (See Ch. 11.)
Does the use of such an oracle mean that the computation is no longer purely
automatic or mechanical? (But why not?)
Also, while Im thinking about it, what about Gurevichs first constraint:
Computation is symbolic (or digital, symbol-pushing) (p. 4). That is, the
syntactic nature of computation. Is that part of my characterization above? (For
more on this, see papers by Rescorla.)
(a) [A] method for answering any one of a given infinite class of
questions. . . is given by a set of rules or instructions, describing
a procedure that works as follows. (b) After the procedure has
been described, [then] if we select any question from the class, the
procedure will then tell us how to perform successive steps, so that
after a finite number of them we will have the answer to the question
selected. (c) In particular, immediately after selecting the question
from the class, the rules or instructions will tell us what step to
perform first, unless the answer to the question selected is immediate.
(d) After our performing any step to which the procedure has led us,
the rules or instructions will either enable us to recognize that now
we have the answer before us and to read it off, or else that we do
not yet have the answer before us, in which case they will tell us what
step to perform next. (e) In performing the steps, we simply follow
the instructions like robots; no ingenuity or mathematical invention is
required of us. [Kleene, 1995, 18]
23. [Kleene, 1995] shows how to compile (or translate the language of) recursive
functions into (the language of) Turing machines, that is, how a Turing machine
can compute recursive functions.
24. Nice terminology (due to Bill Duncan? Or did he get it from me?):
Functions relate inputs to outputs;
Algorithms (describe how to) transform inputs into outputs.
In other words, there has to be input and output. The computer has to have
something to work on (definitory information, or input), and it has to let the
human user know what it has computed (the final information, the results, or
output). It cant just sit there silently computing.
27. A function from a set A to a set B is a regularity between the two sets (I borrow
the term from [Shagrir, 2006b, 402]. It is not random, because the output of a
7.10. NOTES FOR NEXT DRAFT 269
given input must always be the same; a random relation between A and B would
not guarantee this. And a non-random, but non-functional, relation would give
different (if not random) outputs for some inputs (as in the square-root relation,
which, for a given positive integer input gives both positive and negative square
roots as output).
28. David Marr CITE analyzed information processing into three levels:
computational (what a system does), algorithmic (how it does it), and physical
(how it is implemented). But a different terminology, more consistent with what
we are using in this book, would identify four levels: functional (a description
of a system in input-output terms; this would seem to align with Marrs
computational level), formula (or algebraic) (a description using an (algebraic)
formula that relates the inputs and outputs), algorithmic (a description of how to
compute the formula; this might also be called the computational level, but
it seems to align more with Marrs algorithmic level), and implementional (a
description of a specific physical device).
29. The notion that algorithms and Turing machines are not exactly the same thing
(as Gurevich argues) is also explored in [Ross, 1974]:
He points out that this depends on what we would mean by equivalent when
we ask whether a given program (expressing an algorithm) is equivalent to a
Turing-machine program. Does this mean mere input-output equivalence? Or
something stronger (some kind of procedural equivalence)?
And, relevant to hypercomputation, he observes that:
34. [Copeland, 2000] identifies effective with mechanical, and defines a method,
or procedure, M, for achieving some desired result to be effective iff:
35. Following email discussions with Peter Denning, Im inclined to add a fifth
insight to my previous list: Turing machines can be physically implemented.
(See also Ch. 14, Notes for Next Draft No. 8.)
This brings in one engineering aspect of computer science. In fact, there are
two engineering aspects. One might be called the software-engineering aspect:
Although only two nouns, two transitive verbs, and three rules of grammar are
needed, other nouns (data structures), other verbs (named subroutines), and other
rules of grammar (other control structures such as exits from loops, controlled
gotos, etc.) can be added to allow for greater expressivity and control of
complexity.
The other aspect of engineering is the physical kind (the fifth insight). But it
brings in its train limitations imposed by physical reality: limitations of space,
time, memory, etc. Issues concerning what is feasibly or efficiently computable
in practice (as opposed to what is theoretically computable in principle)
complexity theory, worst-case analyses, etc.and issues concerning the use of
heuristics come in here.
[A] term in the series for arctan 1/5 can be written either as (1/5)m /m
or as 1/(m5m ). Mathematically these expressions are identical, but
they imply different computations. In the first case you multiply and
divide long decimal fractions; in the second you build a large integer
and then take its reciprocal. [Hayes, 2014a, 344]
But, in line with Fodors chess-Civil War example, the single thing that the
Turing machine is doing might be interpreted in two different (albeit isomorphic)
ways. Is one thing being done, or two?
One way in which the external semantic interpretation can be seen as being given
is in terms of identifying certain groups of operations as constituting subroutines
that can be named. Identifying certain groups as accomplishing a subtask seems
to me to be syntactic. Giving such a group a name borders on being semantic.
But not if the name is something like operation 7Bonly if the name is
something like adding two numbers and then only if that name is associated
with other information (see my arguments about the ability of a computer to
understand what it is doing, in, for example, [Rapaport, 1988]).
Egans statement is certainly in line with objections to Clelands views about the
Church-Turing Computability Thesis (see 10.5.1). But Peacocke objects:
The normal interpretation of a Turing machine assigns the number 0
to a single stroke |, the number 1 to ||, the number 2 to |||, and
so on. But there will equally be an interpretation which assigns 0 to a
single stroke |, and then assigns the number 2 to ||, the number 4
to |||, and generally assigns 2n to any symbol to which the previous
interpretation assigns n. Under the second interpretation, the Turing
machine will still be computing a function. . . . What numerical value
is computed, and equally which function is computed, by a given
machine, is not determined by the purely formal characterization of
the machine. There is no such thing as purely formal determination
of a mathematical function. . . . [W]e can say that a Turing machine
is really computing one function rather than another only when it is
suitably embedded in a wider system. [Peacocke, 1999, 198199].
The description of this single Turing machine as either computing n or 2n is
like the chess-Civil War situation. Again, we can say that the function that
this Turing machine is computing is a function whose outputs are strokes, or
a function whose outputs are n, or a function whose outputs are 2n. There
is no single, correct answer to the question What is this Turing machine
computing?. We can fix an answer by embedding the Turing machine in a
wider system; this is what I advocate in my argument that a computer can
understand what it is computing.
Similarly, x2 = 1 has no solution in the real numbers, but two solutions in the
complex numbers. Deciding which wider number system the equation should
be embedded in gives different interpretations of it.
[Sprevak, 2010, 260, col. 1, my italics] discusses the received view. . . that
. . . a necessary condition on any physical process counting as a computation is
that it possess representational content. A physical process is what it is, so to
speak, independent of anything that it might mean, be about, or represent.
But, according to Sprevaks understanding of what he calls the received view,
whatever it is by itself, so to speak (syntactically?), it isnt a computation unless
it is about something. Hence Hills insistence on the intentionality: Do X might
be a mere physical process, but To accomplish A, do X is a computation.
One reason in support of this received view that Sprevak offers, and against
Egans interpretation of Marr, is that mathematical computation theory does not,
by itself, have the resources to explain how the visual system works. . . . Marr
needs some way of connecting the abtract mathematical descriptions to the nuts
and bolts of physical reality [Sprevak, 2010, 263, col. 1]. But the mathematical
theory does have the resources; thats the point of [Wigner, 1960]. (It may still
be a puzzle how it does, but theres no question that it does.)
arent doing the (same) identical thing, but they are doing the same (equivalent)
thing. It is the sameness that depends on the semantics.
He goes on to say:
But this is a different case: identical algorithm but different task. The other case
is different algorithm but same (input-outputequivalent) task.
The idea of computation bridges the abstract and the concrete worlds.
For example, suppose somebody claims: The computation took ten
minutes. He or she is clearly referring to a concrete property of a
particular process in space and time. On the other hand, suppose
somebody claims: The computation is logically irreversible. He
or she is clearly referring to a general abstract notion of the
computation and an abstract property of it, namely that knowledge
of the computation and its output is not sufficient for knowledge of its
input. [Ladyman, 2009, 376]
Here, the point is that computation might refer to a concrete, physical process
or to an abstract, logical-mathematical process. (Is process even the correct
term here? Perhaps something less dynamic, such as structure, might be
more appropriate. [Ladyman, 2009, 377] suggests the term transformation,
which has a satisfactory feel of abstract dynamics to it.)
276 CHAPTER 7. WHAT IS AN ALGORITHM?
39. On the great insights, see also Ch. 14, Notes for Next Draft No. 8.
40. On the BJ insight (7.6.3, No. 2), for more on the power of abstraction, see the
first few paragraphs of [Antoy and Hanus, 2010].
(He notes that inherited meanings are similar to what others call derived
meanings or derived intentionality, and that indigenous meanings are similar to
what others call original meanings or intentionality. Extrinsic and intrinsic
might be other terms that are relevantly similar.)
44. This point might be equally appropriate in Ch. 19. The unsolvability of the
Entscheidungsproblem due to the non-computability of the Halting Problem
can be used as a response to the Lady Lovelace objection to the possibility
of AI, that is, the objection that computers can only do what they have
been programmed to do: According to [Abramson, 2014, his italics, my
interpolation], Turings 1936 paper shows
45. Were the ancient Babylonians really creating algorithms? Insofar as what
they were doing fits our informal notion of algorithm, the answer looks to be:
yes. But [Mahoney and Haigh (ed.), 2011, 39] cautions against applying 20th-
century insights to ancient times:
When scientists study history, they often use their modern tools
to determine what past work was really about; for example,
the Babyonian mathematicians were really writing algorithms.
But thats precisely what was not really happening. What was
really happening was what was possible, indeed imaginable, in the
intellectual environment of the time; what was really happening
was what the linguistic and conceptual framework then would allow.
The framework of Babylonian mathematics had no place for a
metamathematical notion such as algorithm.
He even cites the computer scientist Richard Hamming as making the same
point in an essay on the history of computing, that we would [like to] know
they thought when they did it: What were Babylonian mathematicians thinking
when they created what we now call algorithms?
But is that fair? Yes, it would be nice to know what they were really thinking,
but isnt it also the case that, whatever they thought they were doing, we can
describe it in terms of algorithms? (This is the difference between a de dicto and
a de re approach to history!)
46. . . . every physical process instantiates a computation insofar as it
progresses from state to state according to dynamics prescribed by
the laws of physics, that is, by systems of differential equations.
[Fekete and Edelman, 2011, 808]
This suggests the following very odd and very liberal definition: Something is a
computation =def it is a progression from state to state that obeys a differential
equation. This definition is liberal, because it seems to go beyond the limitations
of a Turing-machine-like algorithm. Thats not necessarily bad; for one thing, it
subsumes both analog and discrete computations under one rubric. But its odd,
because its not clear (to me; check on this!) that Turing-machine algorithms are
describably by differential equations; if they are, so much the better.
280 CHAPTER 7. WHAT IS AN ALGORITHM?
Turings Analysis of
Computation
[A] human calculator, provided with pencil and paper and explicit
instructions, can be regarded as a kind of Turing machine. [Church, 1937]
You can build an organ which can do anything that can be done, but
you cannot build an organ which tells you whether it can be done.
[von Neumann, 1966], cited in [Dyson, 2012a].
1 The quotation, though insightful, is somewhat confusingly put. Better would have been: these machines
are Turings mechanical model of humans who calculate. [Kripke, 2013, 96fn12]
289
290 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
Reprinted, with corrections, in Martin Davis (ed.), The Undecidable: Basic Papers
on Undecidable Propositions, Unsolvable Problems and Computable Functions
(New York: Raven Press, 1965): 116154.
Online at:
http://www.cs.virginia.edu/robins/Turing Paper 1936.pdf (accessed 6 November
2012).
1. Concentrate on the informal expository parts; the technical parts are, of course,
of interest, but are rather difficult to follow, incorrect in many parts, and can be
skimmed.
2. In particular, concentrate on:
16
(study the simple examples of Turing machines carefully;
skim the complex ones)
and 9, part I
(which elaborates on what it is that a human computer does).
3. 7 describes the universal Turing machine;
8 describes the Halting Problem.
8.2 Introduction
If there is a single document that could be called the foundational document of
computer science, it would be Alan Mathison Turings 1936 article, On Computable
Numbers, with an Application to the Entscheidungsproblem, which appeared in the
journal Proceedings of the London Mathematical Society, Series 2. In this paper, Turing
(who was only about 24 years old at the time) accomplished 4 major goals:
3. He proved that there were some functions that were not computable, thus
showing that computation was not a trivial property. After all, if all
functions were computablewhich no doubt would be a very nice featurethen
computability would not really be a very interesting or special property. But,
because some functions are not computable, computability is a property that
only some (but not all) functions have, and so it becomes more interesting.
4. And (I will suggest) he wrote the first AI program (see 8.14, below).
Thus, arguably, in this paper, he created the modern discipline of computer science.
Because this paper was so important and so influential, it is well worth reading.
Fortunately, although parts of it are tough going (and it contains some errors),2 much
of it is very clearly written. It is not so much that the tough parts are difficult or hard
to understand, but they are full of nitty, gritty details that have to be slogged through.
Fortunately, Turing has a subtle sense of humor, too.
In this chapter, I will provide a guide to reading parts of Turings paper slowly and
carefully, by actively thinking about it. (A wonderful guide to reading all of it slowly
and carefully is [Petzold, 2008].)3
[Davies, 1999].
3 On the value of slow and active reading in general, see my website [Rapaport, 2014], and
(that is, if L was not a theorem of L). In other words, the Decision Problem was the
problem of finding a general algorithm for deciding whether any given proposition was
a theorem.
Wouldnt that be nice? Mathematics could be completely automated: Given any
mathematical proposition, one could apply this general algorithm to it, and you would
be able to know if it were a theorem or not. Turing was fascinated by this problem, and
he solved it. Along the way, he invented computer science! He solved the Decision
Problem in the negative, by showing that no such algorithm existedweve already
seen how: He showed that there was at least one problem (the Halting Problem) for
which there was no such algorithm.5
8.4 Paragraph 1
One of the best ways to read is to read slowly and actively. This is especially
true when you are reading a technical paper, and even more especially when you
are reading mathematics. Reading slowly and actively menas reading each sentence
slowly, thinking about it actively, and making sure that you understand it before reading
the next sentence. (One way to make sure that you understand it is to ask yourself why
the author said it, or why it might be true.) If you dont understand it (after reading
it slowly and actively), then you should re-read all of the previous sentences to make
sure that you really understood them. Whenever you come to a sentence that you really
dont understand, you should ask someone to help you understand it.
(Of course, it could also be the case that you dont understand it because it isnt
true, or doesnt follow from what has been said, or is confused in some wayand not
because its somehow your fault that you dont understand it!)
8.4.1 Sentence 1
So, lets begin our slow and active reading of Turings paper with the first sentence of
the first paragraph:
2. the irrational numbers(that is, those numbers that cannot be expressed as a ratio
of integers, such as , 2, etc.)
But the real numbers do not include the complex numbers, such as 1.
Every real number can be expressed as a decimal, that is, in decimal notation.
For instance:
1
2 = 0.5 = 0.50 = 0.500 = 0.5000 (etc.),
1
3 = 0.33333. . .
These are all rational numbers and examples of repeating decimals. But the reals also
include the irrational numbers, which have non-repeating decimals:7
= 3.1415926535 . . .,
2 = 1.41421356237309 . . .
or base-2notation) of what is more generally known as radix notation or positional notation; see
http://en.wikipedia.org/wiki/Radix and http://math.comsci.us/radix/radix.html (both accessed 22 November
2013).
8 For another discussion of the computation of real numbers, see [Hartmanis and Stearns, 1967]. For a
suggests that if a number is calculable by finite means, then that calculation can be
done automatically, that is, by a machinewithout human intervention. And that, after
all, was the goal of all of those who tried to build calculators or computing machines,
as we saw in Ch. 6. So, Turings goal in this paper is to give a mathematical analysis
of what can be accomplished by any such machine (and then to apply the results of this
analysis to solving the Decision Problem).
8.5 Paragraph 2
8.5.1 Sentence 1
In 9, 10 I give some arguments with the intention of showing that
the computable numbers include all numbers which could naturally be
regarded as computable. (p. 230.)
We will look at some of those arguments later, but, right now, lets focus on
the phrase naturally be regarded as computable. This refers to the same informal,
intuitive, pre-theoretical notion of computation that his quoted use of computable
referred to in the first sentence. It is the sense in which Hilbert wondered about which
mathematical problems were decidable, the sense in which people used the phrase
effective computation, the sense in which people used the word algorithm, and so
on. It is the sense in which people (mathematicians, in particular) can compute. And
one of its crucial features is that it be finite.
8.7 Section 9
8.7.1 Section 9, Paragraph 1
I want to skip now to Turings 9, The Extent of the Computable Numbers, because it
is this section that contains the most fascinating part of Turings analysis. Well return
to his 1 later. He begins as follows:
296 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
No attempt has yet been made [in Turings article] to show that the
computable numbers include all numbers which would naturally be
regarded as computable. (p. 249, my interpolation and italics.)
Here, Turing is comparing two notions of computability: the technical notion (signified
by the first occurrence of the word computablein scare quotes) and the informal
or natural notion. He is going to argue that the first includes the second. Presumably,
it is more obvious that the second (the natural notion) includes the first (the technical
notion), that is, that if a number is technically computable, then it is naturally
computable. The less obvious inclusion is the one that is more in need of support,
that if a number is naturally computable, then it is technically computable. But what
kind of argument would help convince us of this? Turing says:
All arguments which can be given are bound to be, fundamentally, appeals
to intuition, and for this reason rather unsatisfactory mathematically.
(p. 249.)
Why is this so? Because one of the two notionsthe natural oneis informal, and
so no formal, logical argument can be based on it. This is why Turings thesis (that is,
Churchs thesis, the Church-Turing thesis, or the computability thesis) is a thesis and
not a theoremit is a hypothesis and not something formally provable. Nonetheless,
Turing will give us appeals to intuition, that is, informal arguments, in fact, three
kinds:
The real question at issue is What are the possible processes which can
be carried out in computing a number? (p. 249.)
If Turing can answer this question, even informally, then we may be able to come up
with a formal notion that captures the informal one. That is the first step (and the only
one that we shall consider in this book).
So, we need to be able to write symbols on paper. Is this true? What kind of symbols?
And what kind of paper?
8.7. SECTION 9 297
We may suppose this paper is divided into squares like a childs arithmetic
book. (p. 249.)
In other words, we can use graph paper! Presumably, we can put one symbol into each
square of the graph paper. So, for example, if were going to write down the symbols
for computing the sum of 43 and 87, we could write it like this:
-------
| |1| |
-------
| |4|3|
-------
|+|8|7|
-------
|1|3|0|
-------
We write 43 in two squares, then we write +87 in three squares beneath this, aligning
the ones and tens columns. To perform the computation, we compute the sum of 7 and
3, and write it as follows: The ones place of the sum (0) is written below 7 in the
ones column and the tens place of the sum (1) is carried to the square above the
tens place of 43. Then the sum of 1, 4, and 8 is computed and then written as follows:
The ones place of that sum, namely, 3 (which is the tens place of the sum of 43 and
87) is written below 8 in the tens column, and the tens place of that sumnamely,
1 (which is the hundreds place of the sum of 43 and 8namely, 1)is written in
the square to the left of that 3.
Turing continues:
But such a use is always avoidable, and I think that it will be agreed that
the two-dimensional character of paper is no essential of computation.
(p. 249.)
298 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
In other words, we could have just as well (if not just as easily) written the computation
thus:
-----------------------
|1| |4|3|+|8|7|=|1|3|0|
-----------------------
Here, we begin by writing the problem 43+87 in five successive squares, followed,
perhaps, by an equals-sign. And we can write the answer in the squares following
the equals-sign, writing the carried 1 in an empty square somewhere else, clearly
separated (here, by a blank square) from the problem. So, the use of two-dimensional
graph paper has been avoided (at the cost of some extra bookkeeping). As a
consequence, Turing can say:
Here is the famous tape of what will become a Turing machine! (Note, though, that
Turing has not yet said anything about the length of the tape; at this point, it could be
finite.) We now have our paper on which we can write our symbols.
I shall also suppose that the number of symbols which may be printed
is finite. (p. 249, my boldface)
This is the first item that Turing has put a limitation on: There are only a finite number
of symbols.
(Actually, Turing is a bit ambiguous here: There might be an infinite number of
different kinds of symbols, but were only allowed to print a finite number of them.
Or there might only be a finite number of different kinds of symbolswith a further
vagueness about how many of them we can print: If the tape is finite, then we can
only print a finite number of the finite amount of symbols, but, if the tape is infinite,
we could print an infinite number of the finite amount of symbols. But it is clear from
what he says next that he means that there are only a finite number of different kinds
of symbols.)
Why finite? Because:
There are two things to consider here: Why would this be the case? And why does
it matter? The answer to both of these questions is easy: If the human who is doing
the computation has to be able to identify and distinguish between an infinite number
of symbols, surely some of them may get confused, especially if they look a lot alike!
Would they have to look alike? A footnote at this point suggests why the answer is
yes:
8.7. SECTION 9 299
That is, we may suppose that the square is 1 unit by 1 unit (say, 1 cm by 1 cm). Any
symbol has to be printed in this space. Imagine that each symbol consists of very tiny
dots of ink. To be able to print an infinite number of different kinds of symbols in
such a square, some of them are going to differ from others by just a single dot of ink,
and any two such symbols are going to differ to an arbitrarily small extent and, thus,
be impossible for a human to distinguish. So, the number of symbols which may be
printed must be finite in order for the human to be able to easily read them.
Is this really a limitation?
The effect of this restriction of the number of symbols is not very serious.
(p. 249.)
Chinese writing is pictographic and thus would seem to allow for symbols that run
the risk of differing by an arbitrarily small extent, or, at least, that do not have to be
constructed from a finite set of elementary symbols. As Turing also notes, using a finite
number of basic symbols and rules for constructing complex symbols from them does
not necessarily avoid the problem of not being able to identify or differentiate them:
The differences from our point of view between the single and compound
symbols is that the compound symbols, if they are too lengthy, cannot be
observed at one glance. This is in accordance with experience. We cannot
tell at a glance whether 9999999999999999 and 999999999999999 are the
same. (p. 250.)
300 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
And probably you cant, either! So doesnt this mean that, even with a finite number
of symbols, were no better off than with an infinite number? Although Turing doesnt
say so, we can solve this problem using the techniques hes given us: Dont try to
write 15 or 16 occurrences of 9 inside one, tiny square: Write each 9 in a separate
square! (And then count them to decide which sequence of them contains 15 and
which contains 16, which is exactly how you can tell. . . whether 9999999999999999
and 999999999999999 are the same.)
The other thing that Turing leaves unspecified here is the minimum number of
elementary symbols we need. The answer, as we have seen, is: two (they could be
a blank and 1, or 0 and 1, or any other two symbols). Turing himself will use a
few more (just as we did in our addition example above, allowing for the 10 single-digit
numerals together with + and =).
8.7.2.1.4 States of mind. So, lets assume that, to compute, we only need a 1-
dimensional tape divided into squares and a finite number of symbols (minimally, two).
What else?
I have always found this to be one of the most astounding and puzzling sentences!
computer? he? his? But it is only astounding or puzzling to those of us who live in
the late 20th/early 21st century, when computers are machines, not humans! Recall the
ad that we saw in 6.2 for a (human) computer from the 1892 New York Times. In 1936,
when Turing was writing this article, computers were still humans, not machines. So,
throughout this paper, whenever Turing uses the word computer, he means a human
whose job it is to compute. I strongly recommend replacing (in your minds ear, so to
speak) each occurrence of the word computer in this paper with the word clerk.9
So, the behavior of the clerk at any moment is determined by the symbols which he
[or she!] is observing. In other words, the clerk decides what to do next by looking at
the symbols, and which symbols the clerk looks at partially determines what the clerk
will do. Why do I say partially? Because the clerk also needs to know what to do
with them: If the clerk is looking at two numerals, should they be added? Subtracted?
Compared? The other information that the clerk needs is his or her state of mind.
What is that? Lets hold off on answering that question till we see what else Turing has
to say.
This is the second kind of finiteness (so, we have a finite number of different kinds
of symbols and a finite number of them that can be observed at any given time.
9 Some writers, such as [Sieg, 1994], use the nonce word computor to mean a human who computes.
8.7. SECTION 9 301
This upper bound B can be quite small; in fact, it can equal 1 (and B = 1 in most
formal, mathematical presentations of Turing machines), but Turing is allowing for B
to be large enough so that the clerk can read a single word without having to spell
it out letter by letter, or a single numeral without having to count the number of its
digits (presumably, the length of 9999999999999999 exceeds any reasonable B for
humans). Successive observations will require the clerk to be able to move his or her
eyes one square at a time to the left or right.10
We will also suppose that the number of states of mind which need to
be taken into account is finite. (p. 250, my boldface.)
Here, we have a third kind of finiteness. But we still dont know exactly what a state
of mind is. Turing does tell us that:
If we admitted an infinity of states of mind, some of them will be
arbitrarily close and will be confused. (p. 250.)
just as is the case with the number of symbols. And he also tells us that the use of
more complicated states of mind can be avoided by writing more symbols on the tape
(p. 250), but why that is the case is not at all obvious at this point. (Keep in mind,
however, that we have jumped ahead from Turings 1, so perhaps something that he
said between then and now would have clarified this. Nevertheless, lets see what we
can figure out.)
8.7.2.1.5 Operations. So, a clerk who is going to compute needs only a (possibly
finite) tape divided into squares and a finite number of different kinds of symbols; the
clerk can look at only a bounded number of them at a time; and the clerk can be in
only a finite number of states of mind at a time. Moreover, what the clerk can do
(the clerks behavior) is determined by the observed symbols and his or her state of
mind. What kinds of behaviors can the clerk perform?
Let us imagine the operations performed by the computer [the clerk] to
be split up into simple operations which are so elementary that it is not
easy to imagine them further divided. (p. 250.)
These are going to be the basic operations, the ones that all other operations will be
constructed from. What could they be? This is an important question, because this is
going to be the heart of computation.
Every such operation consists of some change of the physical system
consisting of the computer [the clerk] and his[!] tape. (p. 250.)
So, what changes of the physical system can the clerk make? The only things that can
be changed are the clerks state of mind (i.e., the clerk can change him- or herself, so
to speak) and the tape, which would mean changing a symbol on the tape or changing
which symbol is being observed. What else could there be? Thats all we have to
manipulate: the clerk, the tape, and the symbols. And all weve been told so far is that
the clerk can write a symbol on the tape or observe one thats already written. Turing
makes this clear in the next sentence:
10 For more on this notion of bounds, see [Sieg, 2006, 16].
302 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
So here we have a fourth kind of boundedness or finiteness: The clerk can only look a
certain bounded distance away. How far can the distance be? Some plausible lengths
are the length of a typical word or small numeral (so L could equal B). The minimum
is, of course, 1 square (taking L = B = 1). So, another simple operation is looking
one square to the left or to the right (and, of course, the ability to repeat that operation,
so that the clerk can, eventually, find the 15th or the 9999999999999999th square).
What about a different kind of candidate for a simple operation: find a square
that contains the special symbol x:
In connection with immediate recognisability, it may be thought that
there are other kinds of square which are immediately recognisable.
In particular, squares marked by special symbols might be taken as
immediately recognisable. Now if these squares are marked only by single
symbols there can be only a finite number of them, and we should not upset
our theory by adjoining these marked squares to the observed squares.
(pp. 250252.)
So, Turing allows such an operation as being simple, because it doesnt violate the
finiteness limitations. But he doesnt have to allow them. How would the clerk be able
to find the only square that contains the special symbol x (assuming that there is one)?
By first observing the current square. If x isnt on that square, then observe the next
square to the left. If x isnt on that square, then observe the square to the right of the
first one (by observing the square two squares to the right of the current one). And so
on, moving back and forth, till a square with x is found. What if the clerk needs to find
a sequence of squares marked with a sequence of special symbols?
If, on the other hand, they [i.e., the squares marked by special symbols]
are marked by a sequence of symbols, we cannot regard the process of
recognition as a simple process. (p. 251.)
I wont follow Turings illustration of how this can be done. Suffice it to say that it is
similar to what I just sketched out as a way of avoiding having to include finding a
special square as a simple operation, and Turing admits as much:
If in spite of this it is still thought that there are other immediately
recognisable squares, it does not upset my contention so long as these
squares can be found by some process of which my type of machine is
capable. (p. 251.)
In other words, other apparently simple operations that can be analyzed into
some combination of the simplest operations of writing a symbol and observing are
acceptable. It is worth noting that this can be interpreted as a claim that subroutines
can be thought of as single operations.
Turing now summarizes his analysis of the minimum that a human computer (what
I have been calling a clerk) needs to be able to do in order to compute:
The simple operations must therefore include:
a Changes of the symbol on one of the observed squares.
304 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
8.7.2.1.6 Conditions. How does the clerk know which of these two things (writing
or looking) to do? Turings next remark tells us:
The operation actually performed is determined, as has been suggested on
p. 250, by the state of mind of the computer [that is, of the clerk] and the
observed symbols. In particular, they determine the state of mind of the
computer [that is, of the clerk] after the operation is carried out. (p. 251,
my interpolation and italics.)
The passage on p. 250 that Turing is referring to is the one that I marked (*) and
called astounding, above; it says roughly the same thing as the present passage. So,
what Turing is saying here is that the clerk should
first consider his or her state of mind and where he or she is currently looking on
the paper,
then decide what to do next (either write something there or look somewhere
else), and, finally, change his or her state of mind.
Of course, after doing that, the clerk is in a (possibly) new state of mind and looking
at a (possibly) new location on the paper, which means that the clerk is ready to do the
next thing.
8.7.2.1.7 States of mind clarified. Now, think about a typical computer program,
especially an old-fashioned one, such as those written in (early versions of) Basic
or Fortran, where each line of the program has a line number and a statement to be
executed (a command). The computer (and here I mean the machine, not a clerk)
starts at the first line number, executes the command, and then (typically) moves to
the next line number; in atypical cases, the command might be a jump or go to
command, which causes the computer to move to a different line number. At whatever
line number the computer has moved to after executing the first command, it executes
8.7. SECTION 9 305
the command at that new line number. And so on. But, if you compare this description
with Turings, you will see that what corresponds to the line number of a program is
Turings notion of a state of mind! And what is the currently observed symbol? It is
the current input to the program!
So, lets paraphrase Turings description of the basic operation that a clerk performs
when computing. Well write the paraphrase in terms of a computer program that the
clerk is following:
And a program for such a computer will consist of lines of code that look like this:
Line N: if input = I
then begin print (or move); go to Line N 0 end
else go to Line N 00
8.7.2.1.8 The Turing machine. I said above that passage (*) was astounding;
here is its sequel:
We may now construct a machine to do the work of this computer. (p. 251,
my italics.)
Reading this sentence out of context can make it sound very confusing; after all, isnt
a computer a machine? But, as we have seen, a computer (for Turing) is a human clerk
who computes. And what Turing is now saying is that the human can be replaced by a
machine, that is, by what we now call a computer (a mechanical device). This sentence
marks the end of Turings analysis of what a human computer does and the beginning
of his mathematical construction of a mechanical computer that can do what the human
does. His description of it here is very compact; it begins as follows:
11 Heres another way to think about this: Suppose that we have two tapes. (Incidentally, it can be
proved that any two-tape Turing machine is equivalent to a one-tape Turing machine; see [Dewdney, 1989,
Ch. 28].) Tape 1 will be the one we have been discussing so far, containing input (the symbols being
scanned) and output (the symbols being printed). Tape 2 will contain the computers program, with each
square representing a state of mind. The computer can be thought of as starting in a square on Tape 2,
executing the instruction in that square (by reading from, and writing to, a square on Tape 1 and then moving
to a(nother) square on Tape 1), and then moving to a(nother) square on Tape 2, and repeating this fetch-
execute loop. In reality, Turing machines only have one tape, and the instructions are not written anywaher;
rather, they are hardwired into the Turing machine. Any written verion of them is (merely) a description of
the Turing machines behavior (or of its wiring diagram). But, if we encode Tape 2 on a portion of Tape 1,
then we have a stored-programor universalcomputer. For a similar presentation of universal Turing
machines, see [Dewdney, 1989, Ch. 48].
306 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
of mind; or it could stand for mental, on the grounds that it is an analogue of a state of mind. But I think
it most likely stands for machine, because it is a configuration, or state, of a machine. Of course, Turing
might have intended it to be ambiguous among all these options.
8.8. SECTION 1, PARAGRAPH 2 307
Note, second, that this seems to be a slight simplification of his 9 analysis, with
B = 1. Second, being in the machine might be another undefined (or primitive)
term merely indicating a relationship between the machine and something else. But
what else? Turings punctuation allows for some ambiguity.14 It might be the symbol
(whatever it is, 0, 1, or a beer mug) that is in the machine, or it might be the scanned
square. I think that it is the latter, from remarks that he makes next.
The symbol on the scanned square may be called the scanned symbol.
The scanned symbol is the only one of which the machine is, so to speak,
directly aware. (p. 231.)
Here, Turings scare quotes around directly aware, together with the hedge so to
speak, clearly indicate that he is not intending to anthropomorphize his machine. His
machines are not really aware of anything; only humans can be really aware of
things. But the machine analogue of human awareness is: being a scanned symbol.
There is nothing anthropomorphic about that: Either a square is being scanned (perhaps
a light is shining on a particular place setting at the table) or it isnt, and either there
is a symbol on the scanned square (there is a beer mug at the lighted place setting), or
there isnt.
What does this mean? Lets try to paraphrase it: By altering the line number of its
program, the computing machine can effectively. . . can effectively do what? It can
remember previously scanned symbols. This is to be contrasted with the currently
scanned symbol. How does the machine remember by altering a line number?
Well, how would it remember what symbol was on, say, the 3rd square if its now on
the 4th square? It would have to move left one square and scan the symbol thats there.
To do that, it would have to have an instruction to move left. And to do that, it would
need to go to that instruction, which is just another way of saying that it would have
to alter its m-configuration. (For another slow-reading analysis of this sentence, see
[Dresner, 2003, Dresner, 2012].)
It is only a possible behavior, because a given line of a program is only executed when
control has passed to that line. If it is not being executed at a given moment, then it
is only possible behavior, not actual behavior. The machines m-configuration is the
14 More precisely, his lack of punctuation: If which is preceded by a comma, then which is in the
machine is a non-restrictive relative clause that refers to the square. With no comma, the which clause
is a restrictive relative clause modifying symbol S(r). For more on relative clauses, see Which vs.
that , online at http://www.cse.buffalo.edu/rapaport/howtowrite.html#whichVthat
(accessed 17 January 2014).
310 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
analogue of a line number of a program, and the scanned symbol is the analogue of the
external input to the machine.15
This pair qn , S(r) will be called the configuration: thus the configuration
determines the possible behaviour of the machine. (p. 231.)
5. change m-configuration.
The first 4 of these can be simplified to only 2 operations, each of which is slightly
more complex:
First, the symbols are left unspecified (which is why we can feel free to add a
blank symbol), though, as we have seen, they can be limited to just 0 and 1
(and maybe also [).
15 It is also possible, given what the reader knows at this stage of Turings paper, not yet having read his 9,
that an m-configuration is the entire internal state of the machine, perhaps encoding what could be called the
machines prior or background knowledgein contrast to external information from the outside world,
encoded in the scanned symbol.
8.8. SECTION 1, PARAGRAPH 2 311
Fourth, there is no halt command. (In 8.9.3, below, we will see why this is
not needed.)
Turing next clarifies what symbols are needed. Recall that the kind of computation
that Turing is interested in is the computation of the decimal of a real number.
Some of the symbols written down will form the sequence of figures which
is the decimal of the real number which is being computed. The others are
just rough notes to assist the memory. It will only be these rough notes
which will be liable to erasure. (pp. 231232.)
So, either we need symbols for the 10 Arabic numerals (if we write the real number in
decimal notation) or we only need symbols for the 2 binary numerals (if we write the
real number in binary notation). Any other symbols are merely used for bookkeeping,
and they (and only they) can be erased afterwards, leaving a clean tape with only the
answer on it.
There is one more thing to keep in mind: Every real number (in decimal notation)16
has an infinite sequence of digits to the right of the decimal point, even if it is an integer
or (a non-integer) rational number, which are typically written with either no digits or
a finite number of digits in the decimal expansion (1, 1.0, 2.5, etc.). If the number is
an integer, this is an infinite sequence of 0s; for example, 1 = 1.000000000000 . . .
(which I will abbreviate as 1.0). If the number is rational, this is an infinite sequence
of some repeating subsequence; for example:
1
= 0.500000000000 . . . = 0.50
2
1
= 0.333333333333 . . . = 0.3
3
1
= 0.142857142857 . . . = 0.142857
7
And if the number is irrational, this is an infinite, non-repeating sequence; for example:
2 = 1.41421356237309 . . .
= 3.1415926535 . . .
What this means is that one of Turings computing machines should never halt when
computing (i.e., writing out) the decimal of a real number. It should only halt if it is
writing down a finite sequence, and it can do this in two ways: It could write down the
16 Similar remarks can be made for binary notation.
312 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
finite sequence and then halt. Or it could write down the finite sequence and then go
into an infinite loop (either rewriting the last digit over and over in the same square, or
just looping in a do-nothing operation such as the empty program).
Finally,
It is my contention that these operations include all those which are used
in the computation of a number. (p. 232.)
This is another statement of Turings thesis: To compute, all you have to do is arrange
the operations of writing and shifting in a certain way. The way they are arranged
what is now called the control structure of a computer programis controlled
by the configuration and the change in m-configuration (or, in modern structured
programming, by Boehm and Jacopinis three control structures of sequence, selection,
and while-repetition). For Turing, it goes unsaid that all computation can be reduced
to the computation of a number; this is the insight we discussed in 7.6.1 that all
the information about any computable problem can be represented using only 0
and 1; hence, any informationincluding pictures and soundscan be represented
as a number. (But it is also important to realize that this kind of universal binary
representation of information doesnt have to be thought of as a number, because the
two symbols dont have to be 0 and 1!)
Clearly, such a machines motion (or behavior) is at least partly determined by its
configuration (that is, by its m-configuration, or line number, together with its currently
scanned symbol). Might it be determined by anything else? For all that Turing has
said so far, maybe such a machines human operator could help it along by moving
the tape for it, or by writing something on the tape. This definition rules that out by
limiting our consideration to such machines whose motion is completely determined
by the configuration. So, a human operator is not allowed to help it in any way: No
cheating allowed! Turing may have called such a machine an a-machine; we now call
themin his honorTuring machines.17 seems to have first been used
What about machines that get outside help?
17 Alonzo Church seems to have been the first person to use this term, in his review of Turings paper
[Church, 1937].
8.9. SECTION 2: DEFINITIONS 313
I almost wrote, to remain on the tape after the computation halts. But does it
halt? It cantbecause every real number has an infinite decimal part! The secondary
symbols could still be erased, during the computation; thats not of great significance
(obviously, its easier to not erase them and to just ignore them). The important point to
remember is that computations of decimal representations of real numbers never halt.
Well return to this in a moment.
One more small point that simplifies matters:
What about the part of the expression that is to the left of the decimal point? It looks
as if the only numbers that Turing is interested in computing are the reals between 0
and 1 (presumably including 0, but excluding 1). Does this matter? Not really; first,
all reals can be mapped to this interval, and, second, any other real can be computed
simply by computing its non-decimal part in the same way. Restricting our attention
to this subset of the reals simplifies the discussion without loss of generality.
A couple more definitions:
At any stage of the motion of the machine, the number of the scanned
square, the complete sequence of all symbols on the tape, and the m-
configuration will be said to describe the complete configuration at that
stage. The changes of the machine and tape between successive complete
configurations will be called the moves of the machine. (p. 232.)
Three points to note: First, at any stage of the motion of the machine, only a finite
number of symbols will have been printed, so it is perfectly legitimate to speak of
the complete sequence of all symbols on the tape even though every real number
has an infinite number of numerals after the decimal point. Second, the sequence
of all symbols on the tape probably includes all occurrences of [ that do not occur
after the last non-blank square (that is, that do occur before the last non-blank square);
otherwise, there would be no way to distinguish the sequence h0, 0, 1, [, 0i from the
sequence h[, 0, [, 0, [, 1, 0i.
Third, we now have three notions called configurations; lets summarize them for
convenience:
Lets take this slowly: A computing machine is a Turing machine that only prints a
binary representation of a real number together with a few symbols of the second kind.
If such a machine never writes down more than a finite number of 0s and 1s, then,
trivially, it has only written down a finite number of such symbols. That means that is
has halted! And, in that case, Turing wants to call it circular! But, to my ears, at least,
circular sounds like looping, which, in turn, sounds like it means not halting.
And, if it does write down more than a finite number of 0s and 1s, then, trivially,
it writes down an infinite number of them. That means that it does not halt! In that
case, Turing wants to call it circle-free! But that sounds like loop-free, which, in
turn, sounds like it means that it does halt.
Whats going on? Before looking ahead to see if, or how, Turing clarifies this,
heres one guess: The only way that a Turing machine can print a finite number of
figures (Turings name for 0 and 1) and still be circular (which I am interpreting
to mean loop) is for it to keep repeating printingthat is, to overprintsome or
all of them, that is, for it to circle back and print some of them over and over again.
(In this case, no halt instruction is needed!)
And the only way that a Turing machine can print an infinite number of figures
and also be circle-free is for it to continually print new figures to the right of
the previous one that it printed (and, thus, not circle back to a previous square,
overprinting it with the same symbol thats on it).
Is that what Turing has in mind? Lets see. The next paragraph says:
The first sentence is rather long; lets take it phrase by phrase: A machine will be
circularthat is, will print out only a finite number of figuresif [Case 1] it reaches
a configuration from which there is no possible move. That is, it will be circular if
it reaches a line number qn and a currently scanned symbol S(r) from which there is
no possible move. How could that be? Easy: if theres no line of the program of the
form: Line qn : If currently scanned symbol = S(r) then. . . . In that case, the machine
stops,19 because theres no instruction telling it to do anything.20
19 At this point, I cannot resist recommending that you read E.M. Forsters wonderfully prescient, 1909(!)
21 The machine described in the text and the machine described in the previous footnote have this property.
22 A machine that computes a real number in this sense was called circle-free; one that does not (because
it never prints more than a finite number of 0s and 1s) was called circular [Davis, 1995b, 141].
8.10. SECTION 3: EXAMPLES OF COMPUTING MACHINES 317
our modern idea that only Turing machines that halt are good and Turings idea
that only Turing machines that are circle-free are good. The interested reader
is referred to [Petzold, 2008, Ch. 10], who notes, by the way, that the concept of
halting was introduced into the modern literature by Martin Davis [Petzold, 2008,
179], despite the fact that Turings original machines never halt! [Petzold, 2008,
329]. [van Leeuwen and Wiedermann, 2013] analyzes these notions in modern terms.
8.9.4 Section 2,
Subsection Computable Sequences and Numbers
Here are Turings final definitions from this section:
8.10.1 Example I
A machine can be constructed to compute the sequence 010101. . . .
(p. 233.)
318 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
0[1[0[1[0[1[ . . .
What real number is this? First, note that it is a rational number of the form 0.01.
Treated as being written in binary notation, it = 31 ; treated as being written in decimal
1
notation, it = 99 .
The four line numbers are (in more legible italic font): b, c, f , e.
This is clear enough. It is, however, interesting to note that it is the Turing machine
that moves, not the tape!
Before going on with this paragraph, lets look at the table. In later writings by
others, such tables are sometimes called machine tables; they are computer programs
for Turing machines, written in a Turing-machine programming language that Turing
is here giving us the syntax and semantics for.
However, it is important to keep in mind that the Turing machine does not consult
this table to decide what to do. We humans would consult it in order to simulate
the Turing machines behavior. But the Turing machine itself simply behaves in
accordance with that table, not by following it. The table should be thought of as a
mathematical-English description of the way that the Turing machine is hardwired
to behave. (Well revisit this idea in 10.5.1.)
Heres the table, written a bit more legibly than in Turings paper:
Configuration Behaviour
m-config. symbol operations final m-config.
b None P0, R c
c None R e
e None P1, R f
f None R b
This program consists of 4 lines. It is important to note that it is a set of lines, not a
sequence: The order in which the lines are written down in the table (or program) is
irrelevant; there will never be any ambiguity as to which line is to be executed. Perhaps
a better way of saying this is: There will never be any ambiguity as to which line is
causing the Turing machine to move.
Each line consists of two principal parts: a configuration and a behavior. Each
configuration, as you may recall, consists of two parts: an m-configuration (or line
8.10. SECTION 3: EXAMPLES OF COMPUTING MACHINES 319
number) and a symbol (namely, the currently scanned symbol). Each behavior consists
also of two parts: an operation (one or more of E, L, R, or P) and a final m-
configuration (that is, the next line number to be executed).
This table (and all succeeding tables of the same kind) is to be understood
to mean that for a configuration described in the first two columns the
operations in the third column are carried out successively, and the
machine then goes over into the m-configuration described in the last
column. (p. 233, my boldface.)
That is, each line of the program should be understood as follows: Under the
circumstances described by the configuration, do the operation and then go to the
instruction at the final m-configuration. Or, to use Turings other terminology: If
your current state of mind is the one listed in the current m-configuration, and if the
symbol on the current square being scanned is the one in the symbol column, then do
the operation and change your state of mind to the one in the final m-configuration
column.
A modern way of thinking about this is to consider it to be a production system.
Production systems are an architecture introduced by Emil Post in his analysis of
computation and used by many researchers in AI [Post, 1941]. A production system
consists of a set of condition-action pairs; if the condition is satisfied, then the
action is carried out. Thats exactly what we have in this Turing-machine table: The
configuration is the condition, and the behavior is the action.23
A further qualification:
When the second column [that is, the symbol column] is left blank, it is
understood that the behaviour of the third and fourth columns applies for
any symbol and for no symbol. (p. 233.)
That is the situation we have in this first example, where None is the entry in each row
of the symbol column. So the only condition determining the behavior of this Turing
machine is its current state of mind, that is, its current line number.
Finally, we need to know what the initial situation that this production system is
intended to apply to:
The machine starts in the m-configuration b with a blank tape. (p. 233.)
Perhaps b stands for begin, with subsequent states of mind (in alphabetical as
well as sequential order) being c, e, and f ( f for final? What happened to d?).
Lets trace this program. We start with a blank tape, which I will show as follows:
[[[[[[[[[[[ . . .
We are in state b.
Looking at the table, we see that if we are in state b, then (because any symbol that
might be on the tape is irrelevant), we should do the sequence of operations P0, R.
23 [Sieg, 2000, 7] notes that even Turing considered Turing machines as production systems.
320 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
Turing hasnt told us what P0 means, but, because P means print, its pretty
obvious that this means print 0 on the currently scanned square.
Note, too, that he hasnt told us which square is currently being scanned! It
probably doesnt matter,24 but its worth thinking about some of the options. One
possibility is that we are scanning the first, or leftmost, square; this is the most
likely option and the one that I will assume in what follows. But another possibility
is that we are scanning some other square somewhere in the middle of the tape.
That probably doesnt matter, because Turing only told us that it would compute the
sequence 010101. . . ; he didnt say where it would be computed! There is one further
possbility, not very different from the prvious one: The tape might not have a first
squareit might be infinite in both directions! And now we need to consider something
that Turing hasnt mentioned: How long is the tape? For all that he has told us, it
could be infinitely long. But many mathematicians and philosophers (not to mention
engineers!) are not overly fond of actual infinities. So, we can say, instead, that, at
any moment, the tape only has a finite number of squares, but there is no limit to the
number of extra squares that we are allowed to add on at one (or maybe both) ends.
(As my former teacher and colleague John Case used to put it, if we run out of squares,
we can always go to an office-supply store, buy some extra squares, and staple them
onto our tape!)
So, lets now show our intial tape as follows, where the currently scanned square is
underlined:
[ [ [ [ [ [ [ [ [ [ [ ...
Performing the two operations on line b converts our initial tape to this one:
0 [ [ [ [ [ [ [ [ [ [ ...
and puts us in state c. That is, we next execute the instruction on line c.
Looking at line c, we see that, no matter what symbol is on the current square (it is,
in fact, blank), we should simply move right one more square and change our mind to
e. So now our tape will look like this:
0 [ [ [ [ [ [ [ [ [ [ ...
Because we are now in state e, we look at line e of the program, which tells us that,
no matter what, if anything, is on the current square, print 1 there, move right again,
and go into state f . So, our tape becomes:
0 [ 1 [ [ [ [ [ [ [ [ ...
Now we are in state f , so, looking at line f , we see that we merely move right once
again, yielding:
0 [ 1 [ [ [ [ [ [ [ [ ...
24 It probably doesnt matter, because all squares on the tape are blank. If the tape is infinite (or endless)
in both directions, then each square is indistinguishable from any other square, at least until something is
printed on one square.
8.10. SECTION 3: EXAMPLES OF COMPUTING MACHINES 321
And we go back into state b. But that starts this cycle all over again; we are indeed in
an infinite loop! One more cycle through this turns our tape into:
0 [ 1 [ 0 [ 1 [ [ [ [ [ ...
Clearly, repeated cycles through this infinitely looping program will yield a tape
consisting entirely of the infinite sequence 010101. . . with blank squares separating
each square with a symbol printed on it:
0 [ 1 [ 0 [ 1 [ 0 [ 1 [ ...
more to it than that; surely, just writing down symbols is only part of computing. The
other parts have to do with which symbols get written down, in what order, and for
1
what reason. If I asked you to compute the decimal representation of 99 , how would
you know that you were supposed to write down 010101. . . ? Surely, that is the heart
of computation. Or is it?
At this point, however, we should give Turing the benefit of the doubt. After all, he
1
did not say that we were going to compute 99 , only that we were going to compute
010101. . . , and, after all, computing that sequence really just is writing it down;
its a trivial, or basic, or elementary, or primitive computation (choose your favorite
adjective). Moreover, arguably, Turing showed us this trivial example so that we could
clearly see the format of his Turing-machine programs before getting a more complex
example.
Before turning to such a more complex program, lets consider the syntax of these
programs a bit more. NEED TO EXPLAIN SYNTAX SOMEWHERE. Each line of
the program has the following, general form:
qB SI O M qE
where:
2. SI is either an input that the machine reads (that is, the symbol on the currently
scanned square), or else it is empty
26 In our first program, the only symbols were 0 and 1; we will see others in subsequent examples.
8.10. SECTION 3: EXAMPLES OF COMPUTING MACHINES 323
go to m-configuration qE
end
else
8.10.2 Example II
We now come to a slightly more difficult example:
As a slightly more difficult example we can construct a machine to
compute the sequence 001011011101111011111. . . . (p. 234.)
First, note that the sequence to be computed consists of the subsequences
0, 1, 11, 111, 1111, 11111, . . .
That is, it is a sequence beginning with 0, followed by the numbers 1, 2, 3, 4, 5,. . .
written in base 1 (that is, as tally strokes)with each term separated by a 0.
But this seems very disappointing! It seems that this more difficult computation
is still just writing down some symbols without computing anything. Perhaps. But
note that what is being written down (or computed) here are the natural numbers.
This program will begin counting, starting with 0, then the successor of 0, the successor
of that, and so on. But, as we saw in 7.7.2, the successor function is one of the basic
recursive functions, that is, one of the basic computable functions.
Being able to (merely!) write down the successor of any number, being able to
(merely!) write down the predecessor of any non-0 number, and being able to find
a given term in a sequence of numbers are the only basic recursive (or computable)
functions. Turings slightly more difficult example will show us how to compute the
first of these. Devising a Turing machine program for computing the predecessor of the
natural number n should simply require us to take a numeral represented as a sequence
of n occurrences of 1 and erase the last one. Devising a Turing machine program for
computing the jth term in a sequence of k symbols should simply require us to move a
certain number of squares in some direction to find the term (or, say, the first square of
a sequence of squares that represents the term, if the term is complex enough to have
to be represented by a sequence of squares).
And any other other recursive function can be constructed from these basic
functions by generalized composition (sequencing), conditional definition (selection),
324 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
and while-recursion (repetition), which are just control structures for how to find a
path (so to speak) through a Turing-machine programthat is, ways to organize the
sequence of m-configurations that the Turing machine should go through.
So, it looks as if computation really is nothing more than writing things down,
moving around (on a tape), and doing so in an order that will produce a desired
result!
Lets now look at this slightly more difficult program:
The first three symbols on the tape will be @@0; the other figures follow
on alternate squares. (p. 234, my italics.)
It may sound as if Turing is saying that the tape comes with some pre-printed
information. But, when we see the program, we will see that, in fact, the first instruction
has us print @@0 on the first three squares before beginning the real computation.
Had the tape come with pre-printed information, perhaps it could have been considered
as innate knowledge, though a less cognitive description could simply have been that
the manufacturer of the tape had simplified our life knowing that the first thing that
the program does to a completely blank tape is to print @@0 on the first three squares
before beginning the real computation. Because that only has to be done once, it
might have been simpler to consider it as pre-printed on the tape.
Note that Turing calls these symbols in the first clause, and then talks about
figures in the second clause. Figures, you may recall from 8.9.2, are the symbols
0 and 1. So, Turing seems to be saying that all subsequent occurrences of 0 and
1 will occur on alternate squares. What happens on the other squares? He tells us:
So, it sounds as if the final tape will begin with @@0; during the computation,
subsequent squares will have 0 or 1 interspersed with x; and at the end of the
computatation, those subsequent squares will only have 0 or 1, and no blanks. Of
course, at the end, we could go back and erase the initial occurrences of @, so that
there would only be figures and no other symbols.
27 The inverted e is called a schwa; it is used in phonetics to represent the sound uh, as in but.
1 R, Px, L, L, L o
o
0 q
Any (0 or 1) R, R q
q
None P1, L p
x E, R q
p @ R f
None L, L p
Any R, R f
f
None P0, L, L o
I think it will be helpful to restate this program in a more readable format:
b begin
print @@0 on the first 3 squares;
P0 on the 5th square;
move back to the 3rd square (which has 0 on it)
go to line o
end
o if current symbol = 1
then begin move right; Px; move back 3 squares; stay in o end
else if current symbol = 0
then go to q
q if current symbol = 0 or current symbol = 1
then begin move right 2 squares; stay in q end
else if current square is blank
then begin P1; move left; go to p end
p if current symbol = x
then begin erase the x; move right; go to q end
else if current symbol = @
then begin move right; go to f end
else if current square is blank
then begin move left 2 squares; stay in p end
f if current square is not blank
then begin move right 2 squares; stay in f end
else begin P0; move left 2 squares; go to o end
326 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
Note that no line of the program ends with the machine changing its state of mind
to m-configuration b. So that line of the program, which is the one that initializes the
tape with @@0 on the first 3 squares, is only executed once. Note also that whenever
an instruction ends with an command to go to that very same line, we are in a loop; a
structured version of the program would use a while. . . do control structure.
There are some odd things to consider in lines o, q, p: What happens if the machine
is in state o but the current symbol is not a figure? What happens in state q if the
current symbol is @ or x? And what happens in state p if the current symbol is a
figure? Turing doesnt specify what should happen in these cases. One possibility
is that he has already determined that none of these cases could occur. Still, modern
software engineering practice would recommend that an error message be printed out
in those cases. In general, in a computer program, when a situation occurs for which the
program does not specify what should happen, anything is legally allowed to happen,
and there is no way to predict what will happen; this is sometimes expressed in the
slogan, garbage in, garbage out.
Turing goes on to illustrate the working of this machine with a table. . . of the
first few complete configurations (p. 234.) Recall that a complete configuration
consists of information about which square is currently being scanned, the sequence
of all symbols on the tape, and the line number of the instruction currently being
executed. Rather than use Turings format, I will continue to use the format that I
used for Example I, adding the line number at the beginning, using underscoring to
indicate the currently scanned square, and assuming that any squares not shown are
blank; any blank square that is between two non-blank squares (if there are any) will
be indicated by our symbol for a blank that has been made visible: [. You are urged to
compare my trace of this program with Turings.
So, we begin with a blank tape. What is the machines initial state of mind, its
initial m-configuration? Turing has forgotten to tell us! But it is fairly obvious that b is
the initial m-configuration, and, presumably, we are scanning the leftmost square (or, if
the tape is infinite in both directions, then we are scanning any arbitrary square), and,
of course, all squares are blank:
b : [, [, . . .
The initial instruction tells us to print @, move right, print another @, move right again,
print 0, move right 2 more squares, print another 0, move 2 squares back to the left,
and go into state o. After doing this sequence of primitive operations, our complete
configuration looks like this:
o : @, @, 0, [, 0, [, . . .
(Just to help you in reading Turings paper, my notation for the initial situation
should be compared with his. Here is his:
:
b
He has a blank (literally), followed by a colon, with the m-configuration b underneath
the blank, marking the currently scanned square.
Instead, I have b: preceding a sequence of (visible) blanks, the first one of which
is marked as being the scanned square.
8.10. SECTION 3: EXAMPLES OF COMPUTING MACHINES 327
@ @ 0 0 :
o
q : @, @, 0, [, 0, [, . . .
Because the machine is now in state q and still scanning a 0, the first case (that
is, the top row) of this third instruction tells us to move two squares to the right but to
stay in state q. So the tape now looks like this:
q : @, @, 0, [, 0, [, . . .
Because the machine is still in state q and still scanning a 0 (although the currently
scanned square is different), we perform the same (third) instruction, moving two more
squares to the right and staying in state q:
q : @, @, 0, [, 0, [, [, . . .
The machine is still in state q, but now there is no scanned symbol, so the second
case (bottom line) of the third instruction is executed, resulting in a 1 being printed
on the current square, and the machine moves left, going into state p.
Whenever the machine is in state p and scanning a blank (as it is now), the third
case (last line) of the fourth instruction is executed, so the machine moves two squares
to the left and stays in state p:
p : @, @, 0, [, 0, [, 1, . . .
Now the machine is in state p scanning a blank, so the same instruction is executed:
It moves two more squares to the left and continues in state p:
p : @, @, 0, [, 0, [, 1, . . .
328 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
But now it is the second case (middle line) of the fourth instruction that is executed,
so the machine moves right and goes into state f :
f : @, @, 0, [, 0, [, 1, . . .
When in state f scanning any symbol (but not a blank), the machine moves two
squares to the right, staying in f :
f : @, @, 0, [, 0, [, 1, . . .
f : @, @, 0, [, 0, [, 1, . . .
And again:
f : @, @, 0, [, 0, [, 1, [, [, . . .
But now it executes the second case of the last instruction, printing 0, moving two
squares to the left, and returning to state o:
o : @, @, 0, [, 0, [, 1, [, 0, . . .
Now, for the first time, the machine executes the first case of the second instruction,
moving right, printing x, moving three squares to the left, but staying in o:
o : @, @, 0, [, 0, [, 1, x, 0, . . .
At this point, you will be forgiven if you have gotten lost in the woods, having
paid attention only to the individual trees and not seeing the bigger picture.28 Recall
that we are trying to count: to produce the sequence 0, 1, 11, 111,. . . with 0s between
each term:
0 0 1 0 11 0 111 0 . . .
@@0[0[1x0[ . . .
Clearly, we are going to have to continue tracing the program before we can see the
pattern that we are expecting; Turing, however, ends his tracing at this point. But we
shall continue; however, I will only show the complete configurations without spelling
out the instructions (doing that is left to the reader). Here goes, continuing from where
28 My apologies for the mixed metaphor.
8.10. SECTION 3: EXAMPLES OF COMPUTING MACHINES 329
we left off:
o: @ @ 0 [ 0 [ 1 x 0 ...
q: @ @ 0 [ 0 [ 1 x 0 ...
q: @ @ 0 [ 0 [ 1 x 0 ...
q: @ @ 0 [ 0 [ 1 x 0 ...
q: @ @ 0 [ 0 [ 1 x 0 [ [ ...
p: @ @ 0 [ 0 [ 1 x 0 [ 1 ...
p: @ @ 0 [ 0 [ 1 x 0 [ 1 ...
q: @ @ 0 [ 0 [ 1 [ 0 [ 1 ...
q: @ @ 0 [ 0 [ 1 [ 0 [ 1 ...
q: @ @ 0 [ 0 [ 1 [ 0 [ 1 [ [ [...
p: @ @ 0 [ 0 [ 1 [ 0 [ 1 [ 1 [...
Hopefully, now you can see the desired pattern beginning to emerge. The
occurrences of x get erased, and whats left is the desired sequence, but with blank
squares between each term and with two leading occurrences of @. You can see from
the program that there is no instruction that will erase those @s; the only instructions
that pay any attention to a @ are (1) the second case of m-configuration p, which only
tells the machine to move right and to go into state f , and (2) the first case of m-
configuration f , which, when scanning any symbol, simply moves two squares to the
right (but, in fact, that configuration will never occur!).
Turing goes on to make some remarks about various notation conventions that he
has adopted, but we will ignore these, because we are almost finished with our slow
reading. I do want to point out some other highlights, however.
330 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
There are certain types of process used by nearly all machines, and these,
in some machines, are used in many connections. These processes include
copying down sequences of symbols, comparing sequences, erasing all
symbols of a given form, etc. (p. 235.)
In skeleton tables there appear capital German letters and small Greek
letters. These are of the nature of variables. By replacing each capital
German letter throughout by an m-configuration and each small Greek
letter by a symbol, we obtain the table for an m-configuration.
(pp. 235236.)
Of course, whether one uses capital German letters, small Greek letters, or something
more legible or easier to type is an unimportant, implementation detail. The important
point is this:
The skeleton tables are to be regarded as nothing but abbreviations: they
are not essential. (p. 236.)
29 As Alfred North Whitehead wrote, Civilisation advances by extending the number of important
operations which we can perform without thinking about them. [Hayes, 2014b, 22].
8.12. SECTION 5: ENUMERATION OF COMPUTABLE SEQUENCES 331
8.12 Section 5:
Enumeration of Computable Sequences
Another highlight of Turings paper that is worth pointing out occurs in his 5: a way
to convert every program for a Turing machine into a number. Let me be a bit more
precise about this before seeing how Turing does it.
First, it is important to note that, for Turing, there really is no difference between
one of his a-machines (that is, a Turing machine) and the program for it. Turing
machines are hardwired to perform exactly one task, as specified in the program
(the table, or machine table) for it. So, converting a program to a number is the
same as converting a Turing machine to a number.
Second, converting to a numberthat is, assigning a number to an objectreally
means that you are counting. So, in this section, Turing shows that you can count
Turing machines by assigning a number to each one.
Third, if you can count Turing machines, then you can only have a countable
number of them. But there are an uncountable number of real numbers, so there will
be some real numbers that are not computable!
Here is how Turing counts Turing machines. First (using the lower-case Greek
letter gamma, ):
A computable sequence is determined by a description of a machine
which computes . Thus the sequence 001011011101111. . . is determined
by the table on p. 234, and, in fact, any computable sequence is capable of
being described in terms of such a table. (p. 239.)
A description of a machine is one of the tables such as those we have been looking
at; that is, it is a computer program for a Turing machine.
But, as we have also seen, it is possible to write these tables in various ways. So,
before we can count them, we need to make sure that we dont count any twice because
we have confused two different ways of writing the same table with being two different
tables. Consequently:
It will be useful to put these tables into a kind of standard form. (p. 239.)
The first step in doing this is to be consistent about the number of separate
operations that can appear in the operations column of one of these tables. Note
that in the two programs we have looked at, we have seen examples in which there
were as few as 0 operations and as many as 10 (not to mention the variations possible
with skeleton tables). So:
In the first place let us suppose that the table is given in the same form as
the first table, for example, I on p. 233. [See our 8.10.1, above.] That
is to say, that the entry in the operations column is always of one of the
forms E : E, R : E, L : Pa : Pa, R : Pa, L : R : L : or no entry at all. The table
can always be put into this form by introducing more m-configurations.
(p. 239, my interpolation.)
In other words, the operation in the operations column will be exactly one of:
332 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
erase
erase and then move right
erase and then move left
print symbol a
Introducing more m-configurations merely means that a single instruction such as:
b 0 P1, R, P0, L f
b 0 P1, R f1
f1 P0, L f
The lines of the table are now of [one of the following three] form[s]
(p. 240):
As Turing notes in the following passage (which I will not quote but merely
summarize), erasing (E) is now going to be interpreted as printing a blank (PS0 ),
and a line in which the currently scanned symbol is S j and the operation is merely to
move right or left is now going to be interpreted as overprinting the very same symbol
(PS j ) and then moving. So, all instructions require printing something: either a visible
symbol or a blank symbol, and then either moving or not moving. As Turing notes:
In this way we reduce each line of the table to a line of one of the forms
(N1 ), (N2 ), (N3 ). (p. 240.)
Turing simplifies even further, eliminating the print command and retaining only
the symbol to be printed. After all, if all commands involve printing something, you
dont need to write down P; you only need to write down what youre printing. So
each instruction can be simplified to a 5-tuple consisting of the initial m-configuration,
the currently scanned symbol (and there will always be one, even if the symbol is
blank, because the blank has been replaced by S0 ), the symbol to be printed (again,
there will always be one, even if its the blank), and the final m-configuration:
From each line of form (N1 ) let us form an expression qi S j Sk Lqm ; from
each line of form (N2 ) we form an expression qi S j Sk Rqm ; and from each
line of form (N3 ) we form an expression qi S j Sk Nqm . (p. 240.)
Let us write down all expressions so formed from the table for the machine
and separate them by semi-colons. In this way we obtain a complete
description of the machine. (p. 240.)
Turings point here is that the set of instructions can be replaced by a single string
of 5-tuples separated by semi-colons. There are two observations to make. First,
because the machine table is a set of instructions, there could (in principle) be several
different strings (that is, descriptions) for each such set, because strings are sequences
of symbols. Second, Turing has here introduced the now-standard notion of using a
semi-colon to separate lines of a program; however, this is not quite the same thing as
the convention of using a semi-colon to signal sequencing, because the instructions of a
Turing-machine program are not an ordered sequence of instructions (even if, whenever
they are written down, they have to be written down in some order).
So, Turing has developed a standard encoding of the lines of a program: an m-
configuration encoded as qi (forget about b, f , etc.), a pair of symbols encoded as
S j , Sk (the first being the scanned input, the second being the printed output; again,
forget about things like 0, 1, x, etc.), a symbol (either L, R, or N) encoding the
location to be moved to, and another m-configuration encoded as qm . Next, he gives an
encoding of these standardized codes:
In this description we shall replace qi by the letter D followed by the
letter A repeated i times, and S j by D followed by C repeated j
times. (p. 240.)
Before seeing why he does this, lets make sure we understand what he is doing. The
only allowable m-configuration symbols in an instruction are: q1 , . . . , ql , for some l
that is the number of the final instruction. What really matters is that each instruction
can be assumed to begin and end with an m-configuration symbol, and the only thing
that really matters is which one it is, which can be determined by the subscript on
q. In this new encoding, D simply marks the beginning of an item in the 5-tuple,
and the i occurrences of letter A encode the subscript. Similarly, the only allowable
symbols are: S1 , . . . , Sn , for some n that is the number of the last symbol in the alphabet
of symbols. What really matters is that, in each instruction, the second and third
items in the 5-tuple can be assumed to be symbols (including a visible blank!), and
the only thing that really matters is which ones they are, which can be determined by
the subscript on S. In our new encoding, D again marks the beginning the next item
in the 5-tuple, and the j occurrences of C encode the subscript.
Turing then explains that:
This new description of the machine may be called the standard
description (S.D). It is made up entirely from the letters A, C, D,
L, R, N, and from ;. (p. 240.)
q3 S1 S4 Rq5
q5 S4 S0 Lq5
8.12. SECTION 5: ENUMERATION OF COMPUTABLE SEQUENCES 335
DAAADCDCCCCRDAAAAA; DAAAAADCCCCDLDAAAAA
If finally we replace A by 1, C by 2, D by 3, L by 4, R
by 5, N by 6, ; by 7 we shall have a description of the machine
in the form of an arabic numeral. The integer represented by this numeral
may be called a description number (D.N) of the machine. (p. 240; Turing
did not capitalize arabic.)
31113232222531111173111113222234311111
31,113,232,222,531,111,173,111,113,222,234,311,111
or, in words, 31 undecillion, 113 decillion, 232 nonillion, 222 octillion, 531 septillion,
111 sextillion, 173 quintillion, 111 quadrillion, 113 trillion, 222 billion, 234 million,
311 thousand, one hundred eleven. That is the Turing number of our 2-line program!
Turing observes that:
The D.N determine the S.D and the structure of the machine uniquely. The
machine whose D.N is n may be described as M (n). (pp. 240242.)
Clearly, given a D.N, it is trivial to decode it back into an S.D in only one way.
Equally clearly (and almost as trivially), the S.D can be decoded back into a program
in only one way. Hence, the structure of the machine encoded by the D.N is
determine[d]. . . uniquely by the D.N. However, because of the possibility of writing
a program for a machine in different ways (permuting the order of the instructions),
two different D.Ns might correspond to the same machine, so there will, in general be
distinct numbers n, m (that is, n 6= m) such that M (n) = M (m). That is, the Turing
machine whose number = n might be the same machine as the one whose number =
m; a given Turing machine might have two different numbers. Alternatively, we could
consider that we have here two different machines that have exactly the same input-
output behavior and that execute exactly the same algorithm. Even in that latter case,
where we have more machines than in the former case, the machines are enumerable;
that is, we can count them. Can we also count the sequences that they compute?
Yes; Turing explains why (with my comments interpolated in brackets):
sequence [that is, each machine prints out exactly one sequence; there is
no way a given machine could print out two different sequences, because
the behavior of each machine is completely determined by its program,
and no program allows for any arbitrary, free, or random choices that
could vary what gets printed on the tape]. The computable sequences and
numbers [remember: every sequence corresponds to a unique number]30
are therefore enumerable [that is, countable]. (p. 241.)
Next, on p. 241, Turing shows how to compute the D.N of program I (the one that
printed the sequence 01). And he gives a D.N without telling the reader what program
corresponds to it.
Finally, he alludes to the Halting Problem:
A number which is a description number of a circle-free machine will be
called a satisfactory number. In 8 it is shown that there can be no general
process for determining whether a given number is satisfactory or not.
(p. 241.)
A satisfactory number is the number of a circle-free Turing machine, that is, a Turing
machine that never halts and that does compute the infinite decimal representation of a
real number. That is, a satisfactory number is the number of a Turing machine for a
computable number. So, in Turings 8, he is going to show that there is no general
processthat is, no Turing machine that can decide (by computing)whether a
given number is satisfactory, that is, whether a given number is the number of a
circle-free Turing machine. It is easy to determine if a given number is the number
of a Turing machine: Just decode it, and see if the result is a syntactically correct,
Turing-machine program. But, even if it is a syntactically correct, Turing-machine
program, there will be no way to decide (that is, to compute) whether it halts or not.
(Remember: For Turing, halting is bad, not halting is good; in modern presentations of
computing theory, halting is good, not halting is (generally considered to be)31 bad.)
we would want to compute with can be represented by a sequence of 0s and 1s, that
is, as a computable number (in binary notation). So, Turings claim is that there is a
single machine that can be used to compute anything that is computable.
Most of you own one. Indeed, most of you own several, some of which are small
enough to be carried in your pocket! They are made by Apple, Dell, et al.; they
come in the form of laptop computers, smartphones, etc. They are general-purpose,
programmable computers.
Your laptop or smartphone is one of these U s. A program or app that you download
to it is an S.D (written in a different programming language than Turings) of a Turing
machine that does only what that program or app does. The computer or smartphone
that runs that program or app, however, can also run other programs, in fact, many
of them. Thats what makes it universal:
But to do all the things a smartphone can do without buying one,. . . [a]
consumer would need to buy the following:
A cellphone. . . .
A mobile e-mail reader. . . .
A music player. . . .
A point-and-shoot camera. . . .
A camcorder. . . .
A GPS unit. . . .
A portable DVD player. . . .
A voice recorder. . . .
A watch. . . .
A calculator. . . .
Total cost: $1,999
In a smartphone, all those devices are reduced to software.
[Grobart, 2011]
How does Turings universal computer work? Pretty much the same way that a
modern computer works: A program (an app) is stored somewhere in the computers
memory; similarly, the S.D of a Turing machine is written at the beginning of the
universal machines tape. The operating system of the computer fetches (that is, reads)
an instruction and executes it (that is, simulates its behavior [Dewdney, 1989, 315]),
then repeats this fetch-execute cycle until there is no next instruction; similarly,
the single program for the universal machine fetches the first instruction on its tape,
executes it, then repeats this cycle until there is no next instruction on its tape. The
details of how it does that are fascinating, but beyond our present scope. (Again,
[Petzold, 2008], as well as [Dewdney, 1989, Chs. 1, 28, 48], cover this in detail.)
338 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
But thats almost exactly what Turings analysis of human computation in his 1936
paper does (at least in part): It takes a humans computational abilities and replaces
them by (abstract) machinery.
Section 10 shows how it can be that many numbers that one might think
are not computable are, in fact, computable. Section 11 proves that Hilberts
Entscheidungsproblem can have no solution (p. 259). And the Appendix proves that
Turings notion of computation is logically equivalent to Churchs.
Except for modern developments and some engineering-oriented aspects of
computer science, one could create an undergraduate degree program in computer
science based solely on this one paper that Turing wrote in 1936!
4. The idea that somehow printing out 010101. . . computes (say) 1/3 in base 2
is related to the idea that TM-computation is automatic or mechanical.
Consider any of the lengthy TM programs in his paper. Does a human following
them understand what s/he is doing? This gives rise to Searles Chinese Room
Argument. Dennett has things to say about this, too, in his Darwins Strange
Inversion paper.
So does Moravec:
But this shows that there are two issues, both of which are consistent with
the strange inversion: First, Moravecs discussion, up to the last sentence,
is clearly about external behavior independent of internal mechanism. In this
342 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
sense, its consistent with the Turing test view of intelligence. Intelligence is
computable, even if it isnt computed. Interestingly, in Deep Blue, it is computed,
just not in the way that humans compute it or that other kinds of computers might
compute it. But the last sentence points to the second interpretation, which is
more consistent with the strange inversion, namely, that, even if the internal
mechanism is computing intelligent behavior in the way that humans do, looking
at it at that level wont make that intelligence manifest. Intelligent behavior at
the macro level can emerge from, or be implemented by, non-intelligent behavior
at the micro-level. This is Dennetts point about the ever-smaller homunculi who
bottom out in ones who can only say yes or no.
5. A TM is to a UTM as a music box is to a player piano: TMs and music boxes
can only play/execute the tune/program that is hardwired into them. UTMs
and player pianos can play/execute any tune/program that is encoded on its
tape/piano-roll. For discussion of this idea, see [Sloman, 2002].
Heres a related question: Why is a player piano not a computer?
[Kanat-Alexander, 2008]. Alternatively, when is a universal Turing machine a
player piano? The instructions on the piano roll cause certain keys to be
played; you can think of each key as a Turing-machine tape cell, with play
or dont play analogous to print-one or print-zero. One difference is that
a player piano would be a parallel machine, because you can play chords.
6. [Sieg, 2006, 13] points out that Turings analysis of (informal) computation
abstracts away from arithmetical computations (such as addition, multiplication,
etc.), in favor of purely symbolic processes (such as making a mark on paper,
moving to a different location on the paper, etc.). Sieg says, It is for this
very reason that Turing most appropriately brings in human computers in a
crucial way and exploits the limitations of their processing capacities, when
proceeding mechanically. Note, too, that this is a move (that abstracts) away
from semantically interpreted processes and towards purely (uninterpreted)
syntactic ones.
This is one of the reasons that people like Searle find it difficult to understand
how a purely syntactic device (a computer) can produce semantic results (can
do arithmetic, can understandor, at least, processnatural language, etc.). We
will return to this issue in Ch. 19. This paradox is discussed in [Dennett, 2009].
And it is related to issues about the goals of an algorithm (see 7.5) and the
relation between the internal workings of an algorithm and its relationships to
the external world (to be discussed in Chs. 10 and 17).
7. [Kleene, 1995, 19] observes that Turings emphasis on not allowing an infinity
of symbols that differ. . . to an arbitrarily small extent (8.7.2.1, above) marks
the distinction between digital computation rather than analog computation.
8. [T]he computer is [not] restricted to taking an ants eye view
of its work, squinting at the symbol on one square at a time.
. . . [T]he Turing-machine squares can corresond to whole sheets of
paper. If we employ sheets ruled into 20 columns and 30 lines, and
8.15. NOTES FOR NEXT DRAFT 343
The intent [of a first computer science course should be] to reveal,
through. . . examples, how analysis of some intuitively performed
human tasks leads to mechanical algorithms accomplishable by a
machine. [Perlis, 1962, 189]
13. That an algorithm should demand no insight or ingenuity on the part of the
human being carrying it out [Copeland, 2000] has the implication that the
human is used as a biological computing machine [PolR, 2009].
First, although something has to carry the algorithm out, it need not be a human
being (though, of course, in Turings analysis, it is, or, at least, it is an idealized
human). So, more generally, the implication is that the interpreter/executor is the
computing machine. So far, so good.
Second, [PolR, 2009]s point is that the human must make no judgment call and
use no skill beyond his ability to apply the rules with pencel and paper. Clearly,
if the executor is not human, it wont be able to make such judgment calls or use
any such skill. Only if the executor is human does this become a worry. This
seems to be what lies behind Searles Chinese Room Argument, to be discussed
in Ch. 19. It is also what underlies Turings strange inversion, namely, that no
such judgment calls or skillsor even biologyare needed at all.
the insect with the white belly and black legs that corresponds to his
own and is sited some four or five leagues away. At this, I became
curious to study this living chrysalis from close up and to watch the
dumbshow that it offers from the bottom of its shell to that other
chrysalis, by pulling bits of string one after the other.
[At the telegraph belonging to the Ministry of the Interior] I
should find people who would try to force me to understand things
of which I would prefer to remain ignorant. . . . . . . I want to keep my
illusions about insects. . . . [Dumas, 1844, Ch. 40, pp. 676677]
16. Related to the previous quote, and perhaps also to the Chinese Room Argument:
17. Need to say something about The Imitation Game movie, including a list
of the other films/plays about Turing. Also cite the websites that serve as
background/critique for The Imitation Game, including:
(a) The Imitation Game: The Philosophical Legacy of Alan Turing, The
Critique (31 December 2014)
http://www.thecritique.com/news/the-imitation-game-the-philosophical-
legacy-of-alan-turing/
(accessed 19 January 2015).
Separately highlight some of the articles.
(b) Anderson, L.V. (2014), How Accurate Is The Imitation Game?, Slate
(3 December),
http://www.slate.com/blogs/browbeat/2014/12/03/the imitation game fact vs fiction how true the new movie is to alan turing
(accessed 19 January 2015).
(c) Caryl, Christian (2015), Saving Alan Turing from His Friends, New York
Review of Books, (5 February): 1921,
http://www.nybooks.com/articles/archives/2015/feb/05/saving-alan-
turing-his-friends/
(accessed 13 February 2015).
(d) von Tunzelmann, Alex (2014), The Imitation Game: Inventing a New
Slander to Insult Alan Turing (20 November),
8.15. NOTES FOR NEXT DRAFT 347
http://www.theguardian.com/film/2014/nov/20/the-imitation-game-
invents-new-slander-to-insult-alan-turing-reel-history
(accessed 19 January 2015).
(e) Woit, Peter (2014), The Imitation Game,, Not Even Wrong,
http://www.math.columbia.edu/woit/wordpress/?p=7365
(accessed 19 January 2015).
18. Here are some of the other films:
(a) Breaking the Code (1986),
http://www.imdb.com/title/tt0115749/,
http://en.wikipedia.org/wiki/Breaking the Code
(b) Enigma (2001),
http://www.imdb.com/title/tt0157583/,
http://en.wikipedia.org/wiki/Enigma (2001 film)
This fictionalized version omits Turing!
(c) Codebreaker: The Story of Alan Turing (2011),
http://www.imdb.com/title/tt2119396/,
http://en.wikipedia.org/wiki/Codebreaker (film)
Half dramatization, half documentary, with interviews of people who
knew Turing (including some who are fictionalized in The Imitation
Game).
19. A man provided with paper, pencil, and rubber [eraser], and subject to
strict discipline, is in effect a universal machine. [Turing, 1948, 416]
20. A Turing machine computing a partial function was called
circular. . . . For some inputs, circular machines did not generate
outputs of the desired type. [Piccinini, 2003, 42n18]
Check this against my interpretation of circular, above. Note that generating
output (for all inputs) makes a function total, but, presumably, generating output
that is not. . . of the desired type is the equivalent of generating garbage or
having unpredictable behavior, that is, of being undefined.
21. The shortest description of Turings accomplishment?:
Compare my theses and both [Thomason, 2003, 328] and [Lamport, 2011, 6]
cited in 9.4.
348 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
Gandy, Robin (1980), Churchs Thesis and Principles for Mechanisms, in Jon
Barwise, H.J. Keisler, & K. Kunen (eds.), The Kleene Symposium (Amsterdam:
North-Holland): 123148.
Gandy, who was Turings only Ph.D. student, argues that Turings analysis of
computation by a human being does not apply directly to mechanical devices.
Sieg, Wilfried, & Byrnes, John (1999), An Abstract Model for Parallel
Computation: Gandys Thesis, The Monist 82(1) (January): 150164.
A follow-up article that simplifies and generalizes Gandys paper.
Israel, David (2002), Reflections on Godels and Gandys Reflections on
Turings Thesis, Minds and Machines 12(2) (May): 181201.
Shagrir, Oron (2002), Effective Computation by Humans and Machines,
Minds and Machines 12(2) (May): 221240.
Haigh, Thomas (2014), Actually, Turing Did Not Invent the Computer,
Communications of the ACM 57(1) (January): 3641.
Discusses the role of the Turing machine in the history of computers,
minimizing its historical importance to the actual development of computing
machines.
Hayes, Brian (2007), Trains of Thought, American Scientist 95(2) (March-April):
108ff.
Accessed 21 February 2014 from:
http://www.americanscientist.org/issues/pub/trains-of-thought
An implementation of a Turing machine using railroad trains. See also Stewart
1994, below.
Hodges, Andrew (2012), Alan Turing: The Enigma; Centenary Edition
(Princeton, NJ: Princeton University Press).
Reviews of first edition of Hodgess biography:
(a) Bernstein, Jeremy (1986), A Portrait of Alan Turing, New Yorker
(20 January): 78, 8187.
Accessed 18 February 2014 from:
http://www.cdpa.co.uk/Newman/MHAN/view-
item.php?Box=5&Folder=6&Item=5&Page=1
(b) Hofstadter, Douglas B. (1983), Mind, Body and Machine, New York
Times Book Review (13 November).
(c) Toulmin, Stephen (1984), Fall of a Genius, New York Review of Books
(19 January): 34, 6.
Accessed 18 February 2014 from:
http://www.nybooks.com/articles/archives/1984/jan/19/fall-of-a-
genius/
See also:
Stern, Howard; & Daston, Lorraine (1984), Turing & the System
(letter to the editor, with reply by Toulmin), New York Review of Books
(26 April): 5253; accessed 18 February 2014 from:
http://www.nybooks.com/articles/archives/1984/apr/26/turing-the-
system/
8.16. FURTHER SOURCES OF INFORMATION 351
See also Hodgess Alan Turing: The Enigma website, accessed 18 February
2014 from:
http://www.turing.org.uk/index.html
Copeland, B. Jack; & Proudfoot, Diane (1996), On Alan Turings Anticipation of
Connectionism, Synthese 108: 361377.
. . . Turing was probably the first person to consider building computing
machines out of simple, neuron-like elements connected together into
networks in a largely random manner. . . . By the application of what
he described as appropriate interference, mimicking education. . . [such a]
machine can be trained to perform any task that a Turing machine can carry
out. . . . (p. 361.)
For more information on this, see:
http://tinyurl.com/CopelandProudfoot199633 (accessed 21 February 2014).
Feferman, Solomon (2006), Turings Thesis, Notices of the AMS 53(10): 1200
1206.
An overview of Turings work focusing on his PhD thesis (not the Church-
Turing thesis) that introduced oracle machines.
Kleene, Stephen C. (1988), Turings Analysis of Computability and Major
Applications of It, in Rolf Herken (ed.), Universal Turing Machine: A Half-
Century Survey; Second Edition (Vienna: Springer-Verlag, 1995): 1549.
Leavitt, David (2005), The Man Who Knew Too Much: Alan Turing and the
Invention of the Computer (W.W. Norton).
Another biography of Turing, reviewed by S. Barry Cooper in Notices of the
AMS 53(10) (2006): 12131217; accessed 13 June 2014 from:
http://www.ams.org/notices/200610/rev-cooper.pdf
Leiber, Justin (2006), Turings Golden: How Well Turings Work Stands Today,
Philosophical Psychology 19(1): 1346.
Michie, Donald (2008), Alan Turings Mind Machines, in Philip Husbands, Owen
Holland, & Michael Wheeler (eds.), The Mechanical Mind in History (Cambridge,
MA: MIT Press), Ch. 4, pp. 6174.
Muggleton, S. (1994), Logic and Learning: Turings Legacy, in K. Furukawa,
D. Michie, & S. Muggleton (eds.), Machine Intelligence 13: Machine Intelligence
and Inductive Learning (Oxford: Clarendon Press): 3756.
[I]n this paper it is shown that there is a direct evolution in Turings ideas
from his earlier investigations of computability to his later interests in machine
intelligence and machine learning.
Myhill, John (1952), Some Philosophical Implications of Mathematical Logic:
I. Three Classes of Ideas, Review of Metaphysics 6(2) (December): 165198.
Contains some observations on what it means for a problem to be solvable.
Myhill, John (1972), What Is a Real Number?, American Mathematical Monthly
79(7) (August-September): 748754.
33 http://www.alanturing.net/turing archive/pages/reference%20articles/connectionism/Turingsanticipation.html
352 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
Not directly related to Turing, but consider[s] the notion of real numbers from
a constructive point of view. The point of view requires that any real number
can be calculated (p. 748), that is, computed, which is (in part) what Turings
1936 paper is about.
Petzold, Charles (2008), The Annotated Turing: A Guided Tour through Alan
Turings Historic Paper on Computability and the Turing Machine (Indianpolis:
Wiley).
Davis, Martin (2008), Touring Turing (review of Petzold 2008), American
Scientist 96(6) (November-December): 520.
Also see websites below.
Piccinini, Gualtiero (2003), Alan Turing and the Mathematical Objection, Minds
and Machines 13: 2348,
http://www.umsl.edu/piccininig/Alan Turing and Mathematical Objection.pdf
(accessed 13 February 2015).
Primarily about Turings views on AI (see Ch. 19), but also discusses his
theory of computation and the role of oracle machines.
Rapaport, William J. (1985), Turing Machines, Appendix B of Morton L.
Schagrin, Randall R. Dipert, & William J. Rapaport, Logic: A Computer Approach
(New York: McGraw-Hill): 327339.
Accessed 7 November 2012 from:
http://www.cse.buffalo.edu/rapaport/Papers/schagrinetal85-
TuringMachines.pdf
A chapter on Turing machines from an introductory logic textbook; see also
Tymoczko & Goodhart 1986 and Lodders website, below.
Rendell, Paul (2000), This Is a Turing Machine Implemented in Conways Game
of Life, accessed 21 February 2014 from:
http://rendell-attic.org/gol/tm.htm
See also:
Rendell, Paul (2001), A Turing Machine in Conways Game Life, accessed
21 February 2014 from:
https://www.ics.uci.edu/welling/teaching/271fall09/Turing-Machine-
Life.pdf
Rendell, Paul (2010), This Is a Universal Turing Machine (UTM) Implemented in
Conways Game of Life, accessed 21 February 2014 from:
http://rendell-attic.org/gol/utm/
Rey, Georges (2012), The Turing Thesis vs. the Turing Test, The Philosophers
Magazine 57 (2nd Quarter): 8489.
Robinson, J.A. (1994), Logic, Computers, Turing, and von Neumann, in
K. Furukawa, D. Michie, & S. Muggleton (eds.), Machine Intelligence 13: Machine
Intelligence and Inductive Learning (Oxford: Clarendon Press): 135.
Accessed 19 February 2014 from:
http://staffweb.worc.ac.uk/DrC/Courses%202013-
14/COMP3202/Reading%20Materials/robinson94.pdf
Reminiscences by one of the leading figures in computation theory.
8.16. FURTHER SOURCES OF INFORMATION 353
Rothstein, Edward (2014), Turings Spirit Hovers at a Restored Estate, New York
Times (29 November): C1, C7;
http://www.nytimes.com/2014/11/29/arts/design/where-the-real-imitation-game-
happened.html
(accessed 25 December 2014)
A review of the Bletchley Park museum.
Shagrir, Oron (2006), Godel on Turing on Computability, in Adam Olszewski,
Jan Woenski, & Robert Janusz (eds.), Churchs Thesis after 70 Years (Ontos-
Verlag): 393419;
http://edelstein.huji.ac.il/staff/shagrir/papers/Goedel on Turing on Computability.pdf
(accessed 11 December 2013).
Explores why Godel believed both that the correct definition of mechanical
computabilty was established beyond any doubt by Turing [Godel, 930s, 168]
and that this definition. . . rest[s] on the dubious assumption that there is a
finite number of states of mind [Shagrir, 2006a, 1].
Sieg, Wilfried (1994), Mechanical Procedures and Mathematical Experience, in
George Alexander (ed.), Mathematics and Mind (New York: Oxford University
Press): 71117.
Accessed 10 December 2013 from:
http://repository.cmu.edu/cgi/viewcontent.cgi?article=1248&context=philosophy
3 contains a detailed analysis of Turings work.
Sieg, Wilfried (1997), Step by Recursive Step: Churchs Analysis of Effective
Calculability, Bulletin of Symbolic Logic 3(2) (June): 154180.
. . . Turings analysis is neither concerned with machine computations nor
with general human mental processes. Rather, it is human mechanical
computability that is being analyzed. . . (p. 171).
Smith, Alvy Ray (2014), His Just Deserts: A Review of Four Books, Notices of
the American Mathematical Society 61(8) (September): 891895,
http://www.ams.org/notices/201408/201408-full-issue.pdf (accessed 24 March
2015).
Reviews four biographies of Turing.
Soare, Robert Irving (2013), Turing and the Art of Classical Computability,
in S. Barry Cooper & Jan van Leeuwen (eds.), Alan Turing: His Work and
Impact (Elsevier): 6570.
Preprint accessed 30 April 2014 on complementary, illustrated website, The
Art of Classical Computability,
http://www.people.cs.uchicago.edu/soare/Art/
Stewart, Ian (1994), A Subway Named Turing, Scientific American (September):
104, 106107.
An implementation of a Turing machine using subway trains. See also Hayes
2007, above.
Tymoczko, Thomas; & Goodhart, Sarah (1986), From Logic to Computers: A
Suggestion for Logic Teachers, Teaching Philosophy 9(1) (March): 1533.
354 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
Church%20Thesis.html
37 http://www.alanturing.net/turing archive/pages/Reference%20Articles/What%20is%20a%20Turing%20Machine.html
356 CHAPTER 8. TURINGS ANALYSIS OF COMPUTATION
(g) Michaelson, Greg (2012), A Visit to the Turing Machine: A Short Story, CS4FN:
Computer Science for Fun 14 (April),
http://www.cs4fn.org/turing/avisittotheturingmachine.php
(accessed 26 February 2014).
(h) Smith, Alvy Ray (2014), Turingtoys.com,
http://alvyray.com/CreativeCommons/TuringToysdotcom.htm
and A Business Card Universal Turing Machine (2 August 2014),
http://alvyray.com/CreativeCommons/BizCardUniversalTuringMachine v2.2.pdf
(both accessed 24 March 2015)
A universal Turing machine on a business card!
For more information, see:
Casselman, Bill (2014), About the Cover: Smart Card, Notices of the
American Mathematical Society 61(8) (September): 872,
http://www.ams.org/notices/201408/201408-full-issue.pdf (accessed
24 March 2015).
(i) Suber, Peter (1997), Turing Machines
http://www.earlham.edu/peters/courses/logsys/turing.htm
accessed 7 November 2012.
A 2-part handout;
click on second hand-out at the end of part I to get to part II:
http://www.earlham.edu/peters/courses/logsys/turing2.htm
accessed 7 November 2012.
8.16. FURTHER SOURCES OF INFORMATION 357
What Is a Computer?
A Philosophical Perspective
359
360CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
3. Strongly Recommended:
(a) 1 of:
Rapaport, William J. (1998), How Minds Can Be Computational Systems,
Journal of Experimental and Theoretical Artificial Intelligence 10: 403419.
i. 1 is relevant to Searle 1990; it presents my understanding of what it means to
say that cognition is computable (as opposed to computational).
ii. 23 criticize two other theories of computationalism; you can just skim
these for now.
(b) Wolfram, Stephen (2002), Introduction to A New Kind of Science (Wolfram
Media)
Accessed 7 November 2012 from:
http://www.stephenwolfram.com/publications/recent/nksmain/
9.2 Introduction
We began our study of the philosophy of computer science by asking what computer
science is. We then asked what it studies: Does it study computers? Or computing? Or
maybe something else? In Chapter 6, we began our investigation into what a computer
is, from a historical perspective. And, in Chapters 7 and 8, we began our investigation
into what computing is.
In the present chapter, armed with the results of these investigations, we return to
our earlier question: If computer science is the study of computers, what is a computer?
At the very least, we might say that a computer is a machine designed (that is,
engineered) to compute, to do computations. But does it have to be a machine?
Does it have to be engineered? Is the brain a computer? If so, then it would seem
that computers could be biological entities (which, arguably, are not machines) that
evolved (which, arguably, means that they were not engineered).
And what kind of computations do computers perform? Are they restricted to
mathematical computations? Even if thats so, is that a restriction? The binary-
representation insight (7.6.1 suggests that any (computable) information can be
represented as a binary numeral; hence, any computation on such information could
be considered to be a mathematical computation.
And what about the difference between a hardwired Turing machine that can
only compute one thing and a universal machine that can compute anything that
is computable? Or the difference between a real, physical computer that can only
compute whatever is practically computable (that is, subject to reasonable space and
time constraints) and an abstract, universal Turing machine that is not thus constrained?
In other words, what is a computer?
If you ask a random person what a computer is, they will probably try to describe
their laptop. If you look up computer in a reference book, you will find things like
this (from the Oxford English Dictionary):
364CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
computer, n.
1. A person who makes calculations or computations; a calculator, a
reckoner; spec[ifically,] a person employed to make calculations in
an observatory, in surveying, etc. Now chiefly hist[orical]
[earliest citation dated 1613]
2. A device or machine for performing or facilitating calculation.
[earliest citation dated 1869]
3. An electronic device (or system of devices) which is used to
store, manipulate, and communicate information, perform complex
calculations, or control or regulate other devices or machines, and
is capable of receiving information (data) and of processing it
in accordance with variable procedural instructions (programs or
software); esp[ecially] a small, self-contained one for individual use
in the home or workplace, used esp. for handling text, images, music,
and video, accessing and using the Internet, communicating with
other people (e.g. by means of email), and playing games.
[earliest citation dated 1945]
(OED, http://www.oed.com/view/Entry/37975)
One common thread in such definitions (ignoring the ones that are only of historical
interest) is that computers are:
1. devices or machines
2. that take input (data, information),
3. process it (manipulate it; or operate, calculate, or compute with it)
4. in accordance with instructions (a program),
5. and then output a result (presumably, more data or information, but also
including control of another device).
There are some other features that are usually associated with computers: The
kind that we are interested in must be, or typically are:
automatic
There is no human intervention (beyond, perhaps, writing the program). Of
course, the holy grail of programming is to have self-programmed computers,
possibly to include having the desire or intention to program themselves (as
9.2. INTRODUCTION 365
in science fiction). Humans might also supply the input or read the output, but
that hardly qualifies as intervention. (We will explore interventionin the
guise of interactive computingin Ch. 11.)
general purpose
A computer must be capable of any processing that is algorithmic, by means
of a suitable program. This is the heart of Turings universal machine. Recall
that a Turing machine runs only one program. The universal Turing machine
is also a Turing machine, so it, too, also runs only one program, namely, the
fetch-execute cycle that simulates the running of another (that is, any other)
single-program Turing machine.
electronic
Modern computers are, as a matter of fact, electronic, but there is
work on quantum computers ([Grover, 1999, Aaronson, 2008, Aaronson, 2011,
Aaronson, 2014, Hayes, 2014b], and other references cited in 31), optical
computers CITE, biological computers [Adleman, 1998], etc. Being electronic
is not essential. The crucial property is, rather, to be constructed in such a way
as to allow for high processing speeds or other kinds of efficiencies.
digital
They should process information expressed in discrete, symbolic (typically,
alpha-numeric) form, but perhaps also including graphical form. The
contrast is typically with being analog, where information is represented by
means of continuous physical quantities (see [Jackson, 1960], [Pour-El, 1974],
[Holst, 2000], [Piccinini, 2008], [Piccinini, 2011] [McMillan, 2013]).
devices for which it might be said that it is not clear whether, or in what sense, they are
computers, such as Atanasoff and Berrys ABC.
So: What is a computer? What is the relation of a computer to a Turing machine and
to a univeral Turing machine? Is the (human) brain a computer? Is your smartphone
a computer? Could a rock or a wall be considered to be a computer? Might anything
be a computer? Might everythingsuch as the universe itselfbe a computer? Or are
some of these just badly formed questions?
(This is what he says. Taken literally, he is sahying that computers are described
in terms of certain numbers. Instead, he might have said that computers are
described in terms of 0s and 1s. In other words, he might have said that
computers are described in terms of certain numerals. Keep this distinction in
mind as we discuss Searles argument!)3
(Syntax is the study of the properties of, and relations among, symbols or
uninterpreted marks on paper (or on some other medium); a rough synonym
is symbol manipulation.4
Of course, this doesnt quite answer our question, What is a computer?. Rather,
the interpretation and truth value of these theses will depend on what Searle thinks a
computer is. Lets look at exactly what Searle says about these claims.
2 For more detailed critiques and other relevant commentary, see [Piccinini, 2006b, Piccinini, 2007b,
Piccinini, 2010a, Rapaport, 2007].
3 Recall the difference between numbers and numerals from 2.3.
4 We discuss the nature of syntax and its relationship to semantics in Ch. 22.
9.3. JOHN SEARLE: ANYTHING IS A COMPUTER 367
If you open up your home computer you are most unlikely to find any 0s
and 1s or even a tape. But this does not really matter for the definition. To
find out if an object is really a digital computer, it turns out that we do not
actually have to look for 0s and 1s, etc.; rather we just have to look for
something that we could treat as or count as or could be used to function
as 0s and 1s. (p. 25.)
function algorithm into a Turing machines 0s and 1s? Not really: Although merci
is used in much the same way in French that thank you is used in English, there is
no part of merci that means thank or you; and the literal translation of je vous
en prie is something like I pray that of you. So there is a way of communicating
the same information in both French and English, but the phrases used are not literally
inter-translatable.
So, something might be a computer without being described in terms of 0s and
1s, depending on exactly what you mean by described in terms of. But lets
grant Searle the benefit of the doubt (perhaps he should have said something like this:
computers are described in terms of the primitive elements of the mathematical model
of computation that they implement), and continue looking at his argument.
for computing GCDs). And you can probably describe it in terms of 0s and 1s,
so you can also say that it is a computer. It seems that if something functions as a
computer, you can describe it in terms of 0s and 1s.
What about the converse? Suppose that the black boxs behavior is inscrutable;
the symbols on the keys are unrecognizable, and the symbols displayed on the screen
dont seem to be related in any obvious way to the input symbols. But suppose that
someone manages to invent an interpretation of the symbols in terms of which the boxs
behavior can be described as computing GCDs. Is that really what it does? Might it not
have been created by some extraterrestrials solely for the purpose of entertaining their
young with displays of meaningless symbols, and that it is only by the most convoluted
(and maybe not always successful) interpretation that it can be described as computing
GCDs?
You might think that the boxs function is more important for determining what it
is. Searle thinks that our ability to describe it syntactically is more important! After all,
whether or not the box was intended by its creators to compute GCDs or to entertain
toddlers, if it can be accurately described as computing GCDs, then, in fact, it computes
GCDs (as well as, perhaps, entertaining toddlers with pretty pictures).
Again, lets grant this point to Searle. He then goes on to warn us:
But this has two consequences which might be disastrous:
1. The same principle that implies multiple realizability would seem to
imply universal realizability. If computation is defined in terms of the
assignment of syntax then everything would be a digital computer,
because any object whatever could have syntactical ascriptions made
to it. You could describe anything in terms of 0s and 1s.
2. Worse yet, syntax is not intrinsic to physics. The ascription of
syntactical properties is always relative to an agent or observer who
treats certain physical phenomena as syntactical. [Searle, 1990, 26]
Lets take these in reverse order.
technical essay, but it contains useful references to the literature on intrinsic properties). ALSO CITE
LEWIS ET AL.
370CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
So, perhaps intrinsic properties are properties that something really has as opposed
to merely being said to have, much the way our black box in the previous section may
or may not really compute GCDs but can be said to compute them. But what does it
mean to really have a property?
Here are some possible meanings for intrinsic:
Another way that an object might have P intrinsically (perhaps this is closer
to what Searle has in mind) is if having P is a natural kind. This is
another controversial notion in philosophy. The idea, roughly, is that a natural
kind is a property that something has as a part of nature and not as a
result of what an observer thinks.6 So, being a bear is a natural kind; there
6 Youll note that several of these concepts are closely related; they may even be indistinguishable. For
instance, perhaps essential properties are natural kinds or perhaps second-order properties are not natural
9.3. JOHN SEARLE: ANYTHING IS A COMPUTER 371
would be bears even if there were no people to see them or to call them
bears. This does not mean that it is easy to define such natural kinds. Is a
bear A heavily-built, thick-furred plantigrade quadruped, of the genus Ursus;
belonging to the Carnivora, but having teeth partly adapted to a vegetable diet
(http://www.oed.com/view/Entry/16537)that is, a heavily-built, thick-furred
mammal that walks on the soles of its four feet, eats meat, but can also eat
plants? What if a bear was born with only three feet, or never eats meat? Is
an animal a bear whether or not it satisfies such definitions, and whether or not
there were any humans to try to give such definitions? If so, then being a bear is
a natural kind and, perhaps, an intrinsic property. As we saw in Chapter 3.4,
Plato once said that it would be nice if we could carve nature into its joints,
that is, find the real, perhaps intrinsic, natural properties of things (Phaedrus
265de). But perhaps the best we can do is to carve joints into nature, that is, to
overlay categories onto nature so that we can get some kind of understanding
of it and control over it, even if those categories dont really exist in nature. Is
being a computer a natural kind? Well, its certainly not like being a bear! There
probably arent any computers in nature (unless the brain is a computer; and
see 9.7.2 on whether nature itself is a computer), but there may also not be any
prime numbers in nature, yet mathematical objects are something thought to exist
independently of human thought. If they do, then, because a Turing machine is a
mathematical object, it might exist independently of human thought and, hence,
being a computer might be able to be considered to be a natural mathematical
kind. So, perhaps Searle is saying that being a computer is not a natural kind in
one of these senses.
[W]e might discover in nature objects which had the same sort of
shape as chairs and which could therefore be used as chairs; but we
could not discover objects in nature which were functioning as chairs,
except relative to some agents who regarded them or used them as
chairs. [Searle, 1990, 28].
kinds. Investigating these relationships is one of the tasks of metaphysics. It is beyond the scope of the
philosophy of computer science.
372CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
Why is syntax not intrinsic to physics? Because syntax is not the name of
a physical feature, like mass or gravity.. . . [S]yntax is essentially an observer relative
notion [Searle, 1990, 27]. I think that what Searle is saying here is that we can analyze
physical objects in different ways, no one of which is privileged or more correct;
that is, we can carve nature into different joints, in different ways. On some such
carvings, we may count an object as a computer; on others, we wouldnt. By contrast,
an object has mass independently of how it is described: Having mass is not relative to
an observer. How its mass is measured is relative to an observer.
But couldnt being a computer be something like that? There may be lots of
different ways to measure mass, but an object always has a certain quantity of mass,
no matter whether you measure it in grams or in some other units. In the same way,
there may be lots of different ways to measure length, but an object always has a certain
length, whether you measure it in centimeters or in inches. Similarly, an object (natural
or artifactual) will have a certain structure, whether you describe it as a computer or as
something else. If that structure satisfies the definition of a Turing machine, then it is a
Turing machine, no matter how anyone describes it.
Searle anticipates this reply:
[S]omeone might claim that the notions of syntax and symbols are
just a manner of speaking and that what we are really interested in
is the existence of systems with discrete physical phenomena and state
transitions between them. On this view we dont really need 0s and 1s;
they are just a convenient shorthand. [Searle, 1990, 27]
Compare this to my example above: Someone might claim that specific units of
measurement are just a manner of speaking and that what we are really interested in is
the actual length of an object; on this view, we dont really need centimeters or inches;
they are just a convenient shorthand.
Searle replies:
But this just repeats his earlier claim; it gives no new reason to believe it. He continues
to insist that being a computer is more like inches than like length.
So, we must ask again: Why is syntax not intrinsic to physics? Perhaps, if a
property is intrinsic to some object, then that object can only have the property in
one way. For instance, color is presumably not intrinsic to an object, because an object
might have different colors depending on the conditions under which it is perceived.
But the physical structure of an object that causes it to reflect a certain wavelength
of light is always the same; that physical structure is intrinsic. On this view, here
is a reason why syntax might not be intrinsic: The syntax of an object is, roughly,
9.3. JOHN SEARLE: ANYTHING IS A COMPUTER 373
its abstract structure (see 14.4 and 19.5.3.2). But an object might be able to be
understood in terms of several different abstract structures (and this might be the case
whether or not human observers assign those structures to the object). If an object has
no unique syntactic structure, then syntax is not intrinsic to it. But if an object has (or
can be assigned) a syntax of a certain kind, then it does have that syntax even if it also
has another one. And if, under one of those syntaxes, the object is a computer, then it
is a computer.
But that leads to Searles next point.
Thus for example the wall behind my back is right now implementing the
Wordstar program, because there is some pattern of molecule movements
which is isomorphic with the formal structure of Wordstar. [Searle, 1990,
27]
Searle does not offer a detailed argument for how this might be the case, but other
philosophers have done so, and we will explore how they think it can be done when we
look at the nature of implementation (Ch. 14). Lets assume, for the moment, that it
can be done.
374CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
In that case, things are not good, because this trivializes the notion of being a
computer. If everything has some property P, then P isnt a very interesting property;
P doesnt help us categorize the world, so it doesnt help us understand the world.
How might we respond to this situation? One way is to bite the bullet and accept
that, under some description, any object (even the wall behind me) can be considered
to be a computer. And not just some specific computer, such as a Turing machine that
executes the Wordstar program:
[I]f the wall is implementing Wordstar then if it is a big enough wall it
is implementing any program, including any program implemented in the
brain. [Searle, 1990, 27]
If a big enough wall implements any program, then it implements the universal Turing
machine!
But perhaps this is OK. After all, there is a difference between an intended
interpretation of something and what I will call a gerrymandered interpretation. For
instance, the intended interpretation of Peanos axioms for the natural numbers is the
sequence h1, 2, 3, . . .i. There are also many other natural interpretations, such as
hI, II, III,. . .i. But extremely contorted ones, such as a sequence of all objects in the
universe arranged alphabetically by their name or description in English, are hardly
good examples. Admittedly, they are examples of natural numbers, but not very
useful ones.
A better reply to Searle, however, is to say that hes wrong: Some things are not
computers. Despite what he said in the last passage quoted above, the wall behind me
is not a universal Turing machine; I really cannot use it to post to my Facebook account
or even to write a letter. It is an empirical question whether something actually behaves
as a computer. And the same goes for other syntactic structures. Consider the formal
definition of a mathematical group (a set of objects [like integers] that is closed under
an associative, binary operation [like addition] that has an identity element [like 0] and
is such that every element of the set has an inverse [in the case of integer n, its negative
n]). Not every set is a group. Similarly, there is no reason to believe that everything
is a Turing machine.
9.3.6 Summary
So, Searle believes that a computer is anything that is a Turing machine, and that
everything is a Turing machine. I think that he is wrong about the second claim. But
is it reasonable to answer the question, What is a computer?, by saying that it is a
Turing machine?
Lets take stock of where we are. Presumably, computers are things that compute.
Computing is the process that Turing machines give a precise description for. That
is, computing is what Turing machines do. And, what Turing machines do is to move
around in a discrete fashion and print discrete marks on discrete sections of the space in
which they move around. So, a computer is a devicepresumably, a physical device
that does that. Searle agrees that computing is what Turing machines do, and he seems
to agree that computers are devices that compute. He also believes that everything is a
computer; more precisely, he believes that everything can be described as a computer
9.4. PATRICK HAYES: COMPUTERS AS MAGIC PAPER 375
(because thats what it means to be a computer). And weve also seen reason to think
that he might be wrong about that last point.
In the next two sections, we look at two other views about what a computer is.
1. What is a computer?
2. Is everything a computer?
Our principal concern is with the first question. Once we have an answer to that, we
can try to answer the others. As weve just seen, Searle thinks that a computer is a
Turing machine, that everything is (or can be correctly described as) a computer, and,
therefore, that the brain is (trivially) a computer.
The AI researcher Patrick J. Hayes [Hayes, 1997] gives two definitions. Heres the
first one:
Definition H1
By computer I mean a machine which performs computations, or which
computes. [Hayes, 1997, 390, my boldface.]
First, I take it as simply obvious both that computers exist and that not
everything is a computer, so that, contra Searle, the concept of computer
is not vacuous. [Hayes, 1997, 390].
So, there are machines that compute (that is, there are things that are machines-that-
compute), and there are things that are not machines-that-compute. Note that the latter
can be true in two ways: There might be machines that dont compute, or there might
be things that do compute but that arent machines. Searle disputes the first possibility,
because he thinks that everything (including, therefore, any machine) computes. But
contrary to what Hayes says, Searle would probably agree with the second possibility,
because, after all, he thinks that everything (including, therefore, anything that is not
a machine) computes! Searles example of the wall that implements (or that can be
interpreted as implementing) Wordstar would be such a non-machine that computes.
So, for Hayess notion to contradict Searle, it must be that Hayes believes that there
are machines that do not compute. Perhaps, that wall is one of them, or perhaps a
dishwasher is a machine that doesnt compute anything.7
7 A dishwasher might, however, be described by a (non-computable) function that takes dirty dishes as
Definition H2
[F]ocus on the memory. A computers memory contains patterns. . . which are
stable but labile [i.e., changeable], and it has the rather special property that
changes to the patterns are under the control of other patterns: that is, some of
them describe changes to be made to others; and when they do, the memory
changes those patterns in the way described by the first ones.. . . A computer is
a machine which is so constructed that patterns can be put in it, and when
they are, the changes they describe will in fact occur to them. If it were paper,
it would be magic paper on which writing might spontaneously change, or new
writing appear. [Hayes, 1997, 393, my boldface]
telegraph key are binary devices, that is, they have but two operating states.
[Samuel, 1953, 1225]
Definition P1
The mathematical theory of how to generate output strings from input strings
in accordance with general rules that apply to all input strings and depend
on the inputs (and sometimes internal states) for their application is called
computability theory. Within computability theory, the activity of manipulating
strings of digits in this way is called computation. Any system that
9.5. GUALTIERO PICCININI:COMPUTERS AS DIGITAL STRING MANIPULATORS379
Definition P2
[A]ny system whose correct mechanistic explanation ascribes to it the
function of generating output strings from input strings (and possibly
internal states), in accordance with a general rule that applies to all strings
and depends on the input strings (and possibly internal states) for its
application, is a computing mechanism. The mechanisms ability to perform
computations is explained mechanistically in terms of its components, their
functions, and their organization. [Piccinini, 2007c, 516, my emphasis]
These are almost the same, but there is a subtle difference between them.
9.5.1 Definition P1
Lets begin with Definition P1. It implies that a computer is any system (presumably,
a physical device, because only something physical can actively perform an action)
that manipulates strings of digits, that is, that generate[s] output strings from input
strings in accordance with general rules that apply to all input strings and [that]
depend on the inputs (and sometimes internal states) for their application. What kind
of general rule? In [Piccinini, 2008, 37], he uses the term algorithm instead of
general rule. This is consistent with the view that a computer is a Turing machine,
and explicates Hayess magic trick as being an algorithm.
The crucial point, according to Piccinini, is that the inputs and outputs must be
strings of digits. This is the significant difference between (digital) computers and
analog computers: The former manipulate strings of digits; the latter manipulate
real variables.
For Piccinini,
real variables are physical magnitudes that (i) vary over time, (ii) (are
assumed to) take a continuous range of values within certain bounds,
and (iii) (are assumed to) vary continuously over time. Examples of real
9 In the other two papers in his trilogy, Piccinini gives slightly different characterizations of what a digit
is, but these need not concern us here; see [Piccinini, 2007c, 510], [Piccinini, 2008, 34].
380CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
variables include the rate of rotation of a mechanical shaft and the voltage
level in an electrical wire [Piccinini, 2008, 48].
So far, so good. Neither Searle nor Hayes should be upset with this characterization.
9.5.2 Definition P2
But Piccininis second definition adds a curious phrase. This definition implies that
a computer is any system whose correct mechanistic explanation ascribes to it the
function of manipulating digit strings according to algorithms. What is the import of
that extra phrase?
It certainly sounds as if this is a weaker definition. In fact, it sounds a bit Searlean,
because it sounds as if it is not the case that a computer is an algorithmic, digit-
string manipulator, but rather that it is anything that can be so described by some kind
of mechanistic explanation. And that sounds as if being a computer is something
external and not intrinsic. So lets consider what Piccinini has in mind here. He
says:
As explained in 14.4 and 19.5.3.2, syntax is the study of the properties of a collection
of objects and the relations among them. If a mechanism is considered as a collection
of its parts, then Piccininis notion of a mechanistic explanation sounds a lot like a
description of the mechanisms syntax. But syntax, you will recall, is what Searle says
is not intrinsic to a system (or a mechanism).
So how is Piccinini going to avoid a Searlean slippery slope and deny that
everything is a computer? One way he tries to do this is by suggesting that even if
a system can be analyzed syntactically in different ways, only one of those ways will
help us understand the systems behavior:
Lets try to apply this to Searles Wordstar wall: From one perspective, the wall
is just a wall; from another, according to Searle, it can be taken as an implementation
of Wordstar. Compare this to Piccininis claim that, from one perspective, a heart is a
pump, and, from another, it is a noisemaker. If youre a doctor interested in hearing the
hearts noises, youll consider the heart as a noisemaker. If youre a doctor interested in
making a medical diagnosis, youll consider it as a pump. Similarly, if youre a house
painter, say, youll consider the wall as a flat surface to be colored, but if youre Searle,
youll try to consider it as a computer program. (Although I dont think youll be very
successful in using it to write a term paper!)
Computers are physical devices; they interact with other physical devices in the
world.
They are physical implementations of Turing machines in the sense that their
input-output behavior is logically equivalent to that of a Turing machine (even
though the details of their processing might not be). A slight modification of
this might be necessary to avoid the possibility that a physical device might be
considered to be a computer even if it doesnt compute: We probably want to
rule out real magic, for instance. So perhaps we need to say that a computer
must be a physical implementation of something that is logically equivalent to a
Turing machine (or a lambda-calculus machine, or a recursive-function machine,
etc.).
addition to the cartoon in Fig. 9.3, see also Is the Universe a Computer?, http://abstrusegoose.com/115
(best viewed online!).
384CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
The second possibility does not necessarily follow from the first. As we just saw in
the case of the brain, there might be a computational theory of some phenomenon,
but the phenomenon itself need not behave computationally. Here are some other
examples: Someone might come up with a computational theory of the behavior of
the stock market, yet the actual stock markets behavior is determined by the individual
decisions made by individual investors. Calculations done by slide rules are done by
analog means, yet the calculations themselves are clearly computable.
Another argument along these lines has been put forth by Stephen Wolfram,
developer of the Mathematica computer program, in [Wolfram, 2002] CITE OTHER
DOCS FROM whatisacomputer.html; CITE ZUSE, FREDKIN. Wolfram argues as
follows:
1. Nature is discrete.
2. Therefore, possibly it is a cellular automaton.
3. There are cellular automata that are equivalent to a Turing machine.
4. Therefore, possibly the universe is a computer.
There are a number of problems with this argument. First, why should we believe
that nature (that is, the universe) is discrete? Presumably, because quantum mechanics
says that it is. But some distinguished physicists deny this [Weinberg, 2002]. So,
at best, for those of us who are not physicists able to take a stand on this issue,
Wolframs conclusion has to be conditional: If the universe is discrete, then possibly it
is a computer.
So, lets suppose (for the sake of the argument) that nature is discrete. Might it
be a cellular automaton? The easiest way to think of a cellular automaton is as a
two-dimensional Turing-machine tape. (For more information on cellular automata,
see [Burks, 1970]. Burks was one of the people involved in the construction of ENIAC
and EDVAC.) But, of course, even if a discrete universe might be a cellular automaton,
it need not be. If it isnt, the argument stops here. But, if it is, then the third premise
is reasonable. The conclusion appears to follow validly from the premises, of which
premise 2 is the one most in need of justification. But even if all of the premises and
(hence) the conclusion are true, it is not clear what philosophical consequences we are
supposed to draw from this.
9.8. EXERCISES FOR THE READER 385
A bit later (p. 1225), he does say that the processing must must be governed by
rules; this gets closer to the notion of an algorithm, though he (so far) puts no
constraints on the rules.
It is only after he discusses the control unit of the computer and its programming
(pp. 1226ff) that he talks about the kinds of control structures (loops, etc.) that
are involved with algorithms.
So, perhaps we could put all of this together and say that, for Samuel, a (digital)
computer is a physical device that algorithmically processes digital data
Further on, he adds the need for input and output devices (p. 1226). Are these
really needed? Are they part of the abstract, mathematical model of a computer,
namely, a Turing machine? Your first reaction might be to say that the tape
serves as both input and output device. But the tape is an integral part of the
Turing machine; it is really more like the set of internal switches of a physical
computer, whereas physical computers normally have input and output devices
(think of keyboards and monitors) as separate, additional components: Think of
a computer like the Mac Mini, which is sold without a keyboard and a monitor.
(This is surely related to issues that we have, or will, discuss elswhere, including
Knuths observations about the necessity of output but the non-necessity of input
(see our discussion of this in 7.5) and our discussion of the relation of computers
to the real world, which we begin in Ch. 10.)
8. This may not be relevant to the present book, but, in line with an observation
I made in [Rapaport, 2012b] about the output of an algorithm being an
interpretation of its input, [Samuel, 1953, 1225] says:
In 4, he proves this theorem. The proof is beyond our scope, so let us accept
it for the sake of the argument. The problem with the Theorem, according to
Copeland, is that the proof only works for a nonstandard interpretation of x,
where by a nonstandard interpretation Copeland means an interpretation that
makes all statements come out true but is not about the entities that the standard
interpretation is about, something like saying that if Moscow is non-standardly
interpreted to mean the number 16, London is non-standardly interpreted to
mean the number 1, and is north of is non-standardly interpreted to mean is
greater than, then Moscow is north of London is true, but is not about Moscow
or London.
So, he refines Searles Theorem to this: e computes f iff there is an L and an A
such that he, Li is an honest model of A, where a model is honest iff it is not
non-standard. [Copeland, 1996, 5, p. 348]
But, he argues, from this it does not follow that, for any x, x is a computer. In
particular, and contra Searle, it does not follow that the brain is a computer. Nor
does it follow that the brain is not a computer. All we can ask is whether there
is a way to label the brain so that we can say honestly that it computes, and
that is an empirical question, not a trivial one. [Copeland, 1996, 8, p. 357]
whether, that is, the brains functioning satisfies one of the (logically equivalent)
characterizations of computingis an empirical issue.
What about the wall behind me? Presumably, it, too, doesnt have to be a
computer in order for its (molecular or subatomic) behavior to be describable
computationally. Or is Searle making a stronger claim, namely, that, not only is
its behavior describable computationally, but it is a computation?
[Ballard, 1997, 11] has an interesting variation on that stronger claim:
Note that this is different from Searles claim that the table (or a wall) might be
computing a word processor. It seems closer to the idea that the solar system
might be computing Keplers law. (See discussion on this elsewhere.)
15. Another claim in the vicinity of Searles and Ballards concerns DNA computing:
Actually, it need not store just 1s and 0s, and, of course, it doesnt store numbers:
It stores numerals (1s, not 1s). Furthermore, the instructions must satisfy the
constraints on algorithms.
From the DNA perspective:
Adleman is more correct about the storage method than Grover, but equally
vague about the operations, if not worse: Surely, not any operations will do.
(Maybe just about is the hedge that saves him; nonetheless, it would be nice to
be a bit more accurate.)
17. Can we define a computer simply as any device that carries out an algorithm?
[Davis, 2000] suggests (but does not explicitly endorse) this. I suppose that
it depends on what carries out means: Surely it has to include as part of its
meaning that the internal mechanism of the device must operate in accordance
withmust behave exactly likeone of the logically equivalent mathematical
models of computation. Surely, any computer does that. Is anything that does
that a computer? Is anything that can be gerrymanderedly described as doing
that a computer?
18. Re Thomason:
A computer is a set of registers with contents (or: switches with settings; if they
are binary switches, each is either on or else off), some of which are interpreted
(by whom? by what?) as data, some as program, and the rest as irrelevant (and
some as output?). Computation changes the contents (the settings).
Other comments (in this section of [von Neumann, 1945], as well as later, in
5.0 (pp. 6ff)) indicate that the code should be binary, hence that the computer
is a digital device (1.0, p. 1). This definition hues closely to being a
physical implementation of a Turing machine, with clear allusions to the required
algorithmic nature of the instructions, and with a requirement that there be both
input and output (recall our discussion of the necessity of thisor lack thereof
in 7.5.
20. Naur 2007 (see Further Sources, below) argues that the nervous system. . . has
no similarity whatever to a computer. His argument is difficult to follow, but
that is another story. Even if true (and others, like Piccinini, think that it is),
it raises another question: Does the nervous system compute? There are several
different versions of this kind of question: We might say that a device x computes
iff:
Computer models are often used to study, simulate, and predict the
behavior of dynamical systems. In most cases, we do not view the
modeled system, e.g., the solar system, as a computer. When studying
the brain, however, our approach is different. In this case, in addition
to using a computer model to simulate the system under investigation,
i.e., the brain, we also take the modeled system itself to compute,
viewing its dynamical processes as computing processes. Why is
this so? What is it about the brain that makes us consider it, along
with desktops and pocket calculators, a species of computer, when
it doesnt even occur to us to accord that status to solar systems,
stomachs and washing machines?
Shagrirs bigger point is that, even if anything can be described (by us) as being
a computereven if being a computer is a matter of perspective (p. 399)
discovering how this can be for a given device (such as the brain) can give
us useful information about the device in terms of what it represents and how
it operates on those representations. And, I suppose, in other cases, this
information is not deemed (at least at the current time) to be useful (as in the
case of Searles wall).
A further point of Shagrirs is that what makes a computational perspective on a
device interesting has to do with semantics, not (just) syntax: assigning content
and information to brain/mental states is often prior to taking the computational
outlook (p. 402). So, semantics can guide us to look for an interpretation of a
device and its activities that will turn out to be a computational interpretation:
Recall Fodors story of the chess computer that can be interpreted as computing
a Civil War battle. There are two ways to describe a given devices (a given
computers) behavior: purely syntactically, or semantically, that is, solely in
terms of the devices own, internal behavior (syntactically), but also in terms
of its relations to other things (semantically). In some cases (Searles wall),
such a semantic interpretation is at best a curiosity. In others (the brain, the
chess computer), it is highly useful and insightful. In still others (the Civil
War interpretation of the chess computer), it may be serendipitously useful or
insightful (Wow, my chess computer does double duty; what a bargain!, or:
How interesting: This chess match has the same structure as this Civil War
battle! (Grant not only metaphorically, but literally, checkmated Lee!)).
output clean blue shirt.)16 Well, yes, but we have not found that to be a useful or
insightful perspective.
What makes a computational analysis more useful than some other analysis (say,
a purely physical or mechanical analysis)? Here is Shagrirs answer:
Note the similarity of this to classic philosophical arguments about dualism (our
mental thoughts have no causal influence, because they are all implemented
in physical mechanisms). But this is exactly right: It is the idea behind
functionalism in the philosophy of mind: It is the functional, or computational
or what Shagrir is calling the semanticlevel of analysis that tells us what it is
that the physical level is doing.
But thats not sufficient to be an algorithm. There are two issues: Does the
brain do anything that we can study? Does it compute? The first question
was answered negatively by the behaviorists. The original cognitivists (such as
[Miller et al., 1960]) answered positively and argued that the mechanism was
computational. But, as Piccinini CITE has argued (and as I pointed out in
9.7.1), there might be an internal mechanism that is not computational. So, what
properly follows from the antededent of the above quotation is this: . . . then the
brain is a computer iff the processing isnot merely computablebut actual
computation. Merely begin able to process information is not sufficient for being
an algorithm.
To be fair, Schyns et al. argue that the information processing that the brain
does is computational, not merely computable. For instance, they claim
that it is possible to translate [a] brain microstate. . . into [an] information
processing macrostate [Schyns et al., 2008, 22; see also pp. 2324], and that
17 Thoughts inspired by discussion with Albert Goldfain, 15 January 2008.
400CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
such macrostates are computational states. However, I will leave the dispute
between Piccinini and them for you to consider on your own.
25. [Newell, 1980, 174] also holds that the brain is a computer:
There must exist a neural organization that is an architecturei.e.,
that supports a symbol structure.
But this does not necessarily follow from a thesis that cognition is computable
(which Newell certainly holds), becauseas we have seen WHERE?it might
be possible that the neural organization of the brain is not computational even
though its behavior is computable.
26. On the GCD discussion in 9.3.2:
See [Goodman, 1987, 484].
27. On intrinsic properties:
[Rescorla, 2014a] uses slightly different terms for similar ideas:
Inherited meanings areise when a systems semantic properties are
assigned to it by external observers, either through explicit stipulation
or through tacit convention. Nothing about the system helps generate
its own semantics. Indigenous meanings arise when a system
helps generate its own semantics (perhaps with ample help from
its evolutionary, desgin, or causal history, along with other factors).
The system helps confer content upon itself, through its internal
operations or its interactions with the external world. Its semantics
does not simply result from external assignment. (p. 180)
28. [Aaronson, 2011] claims that quantum computing has overthrown views
like those of [Wolfram, 2002] that the universe itself is basically a giant
computer. . . by showing that if [it is, then] its a vastly more powerful kind of
computer than any yet constructed by humankind.
29. On magic paper, see Ch. 14, Notes for Next Draft No. 8.
30. Is the brain a computer in this sense? Arguably. For a start, the
brain can be programmed to implement various computations by
the laborious means of conscious serial rule-following; but this is a
fairly incidental ability. On a different level, it might be argued that
learning provides a certain kind of programmability and parameter-
setting, but this is a sufficiently indirect kind of parameter-setting that
it might be argued that it does not qualify. In any case, the question
is quite unimportant for our purposes. What counts is that the brain
implements various complex computations, not that it is a computer.
[Chalmers, 2011, 2.2, esp. p. 336]
There are two interesting points made here. The first is that the brain can simulate
a Turing machine. The second is the last sentence: What really matters is that
the brain can compute, not that it is a computer. To say that it is a computer
9.9. NOTES FOR NEXT DRAFT 401
raises the question of what kind of computer it is: A Turing machine? A register
machine? Something sui generis? And these questions seem to be of less interest
than the fact that it can compute.
One can note that there must be something wrong with this
objection. For there is a trivial sense in which everything represents,
and yet we accept the claim that brains (or minds) represent very
seriously. We do not tend to complain that it is vacuous. I think that
the same is true for computation: everything is a computer in some
trivial sense, and yet it does not follow that the claim that the brain
computes is senseless. The computational properties of the brain are
discovered, and not assigned relative to an observer. [Shagrir, 2010,
277, col. 1, my italics]
Does this argument adequately represent Fekete & Edelmans actual argument?
(See 7.1046.)
ii. A computer is Any piece of matter which can carry out symbolic instructions
and compare data in assistance of a human goal.
(j) Kroes, Peter (2010), Engineering and the Dual Nature of Technical Artefacts,
Cambridge Journal of Economics 34: 5162.
Argues that technical artefacts are physical structures with functional
properties
(k) Lloyd, Seth (2000), Ultimate Physical Limits to Computation, Nature 406
(31 August): 10471054.
i. Pre-prints accessed 4 June 2014 from:
http://arxiv.org/pdf/quant-ph/9908043.pdf?origin=publicationDetail
and
http://cds.cern.ch/record/396654/files/9908043.pdf
ii. Investigates quantitative bounds to the computational power of an ultimate
laptop with a mass of one kilogram confined to a volume of one litre.
(l) Lloyd, Seth (2002), Computational Capacity of the Universe, Physical Review
Letters 88(23) (June): 237901-1237901-4.
All physical systems register and process information. The laws of physics
determine the amount of information that a physical system can register
(number of bits) and the number of elementary logic operations that a system
can perform (number of ops). The Universe is a physical system. The amount
of information that the Universe can register and the number of elementary
operations that it can have performed over its history are calculated. The
Universe can have performed 10120 ops on 1090 bits (10120 bits including
gravitational degrees of freedom). (from the abstract)
(m) Lloyd, Seth (2006), Programming the Universe: A Quantum Computer Scientist
Takes on the Cosmos (New York: Alfred A. Knopf).
See Powell 2006, Schmidhuber 2006 in Strongly Recommended readings,
above.
(n) Marcus, Gary (2015), Fact It, Your Brain Is a Computer, New York Times, Sunday
Review (28 June): SR12,
http://www.nytimes.com/2015/06/28/opinion/sunday/face-it-your-brain-is-a-
computer.html
(accessed 25 August 2015).
For most neuroscientists, this is just a bad metaphor. But its still the most
useful analogy that we have.. . . The sooner we can figure out what kind of
comptuer the brain is, the better.
For a reply, see:
Linker, Damon (2015), No, Your Brain Isnt a Computer, The Week (1 July),
http://theweek.com/articles/563975/no-brain-isnt-computer
(accessed 25 August 2015).
408CHAPTER 9. WHAT IS A COMPUTER?A PHILOSOPHICAL PERSPECTIVE
The Church-Turing
Computability Thesis:
I. What Is a Procedure?
I believe that history will record that around the mid twentieth century
many classical problems of philosophy and psychology were transformed
by a new notion of process: that of a symbolic or computational process.
[Pylyshyn, 1992, 4]
1 http://www.cse.buffalo.edu/rapaport/111F04.html
411
412 CHAPTER 10. WHAT IS A PROCEDURE?
3. Strongly Recommended:
Horsten, Leon; & Roelants, Herman (1995), The Church-Turing Thesis and
Effective Mundane Procedures, Minds and Machines 5(1): 18.
A reply to Cleland 1993.
Cleland, Carol E. (1995), Effective Procedures and Computable Functions, Minds
and Machines 5(1): 923.
A reply to Horsten & Roelants 1995.
Cleland, Carol E. (2001), Recipes, Algorithms, and Programs, Minds and
Machines 11(2) (May): 219237.
Cleland, Carol E. (2002), On Effective Procedures, Minds and Machines 12(2)
(May): 159179.
4. Recommended:
Replies to Cleland:
Israel, David (2002), Reflections on Godels and Gandys Reflections on
Turings Thesis, Minds and Machines 12(2) (May): 181201.
2 http://www.hcde.washington.edu/sites/default/files/people/docs/proceduraldiscourse.pdf
10.1. RECOMMENDED READINGS: 413
10.2 Introduction
Algorithmsincluding procedures and recipescan fail for many reasons; here are
three of them:
2. They can fail to be specific enough (or make too many assumptions):
3. They can be highly context dependent or ambiguous (see the first instruction
below):
The general theme of the next few chapters is this: finding faults with each part of
the informal definition of algorithm:
Let us take stock of where we are. We proposed two possible answers to the
question of what computer science is. The first was that it is the science (or the study,
or the engineering) of computers, and we have just been considering what a computer
is, examining the history and philosophy of computers. The second possible answer
was that perhaps computer science is the science (or the study) of computing, that is,
of algorithms, and we then investigated what algorithms are, their history, and their
analysis in terms of Turing machines.
But some philosophers have questioned the Turing machine analysis of algorithms,
suggesting that a more general notion, sometimes labeled procedure, is needed. In
this chapter, we will consider some issues related to the environment in which a
computation takes place. We will look at other issuesrelated to hypercomputation
(see below)in Ch. 11.
Recall from 7.6.4 that Churchs thesis is, roughly, the claim that the informal
notion of algorithm or effective computation is equivalent to (or is completely
captured by, or can be completely analyzed as) the lambda-calculus.3 Turings thesis
is, roughly, the claim that the informal notion of algorithm or computability
is equivalent to/completely captured by, or completely analyzed as, the notion of a
Turing machine. Turing proved that the lambda calculus was logically equivalent
3 For an elemetary introduction to the lambda-calculus, see [PolR, 2009, Alonzo Churchs Lambda-
Calculus].
416 CHAPTER 10. WHAT IS A PROCEDURE?
to the Turing machine; that is, he proved that any function that was computable by
Churchs lambda calculus was also computable by a Turing machine (more precisely,
that any lambda-computation could be compiled into a Turing machine)4 and
vice versathat any function that was computable by a Turing machine was also
computable by the lambda-calculus (so that the lambda-calculus and Turing machines
were inter-compilable). Consequently, their theses are often combined under the name
the Church-Turing thesis. [Soare, 2009, 12] has argued that it should be called
simply the Computability Thesis, on the grounds thatgiven the equivalence of all
mathematical models of computation (Churchs, Turings, Godels, etc.)there are
really many such theses. I will call it the Church-Turing Computability Thesis.
In this chapter, we will look at one kind of objection to the thesis, namely, that there
is a more general notionthe notion of a procedure. The objection takes the form
of claiming that there are informally computable tasks that are procedures but that are
not computable by Turing machines.
In the next chapter, we will look at a related, but slightly different kind of objection,
namely, that some non-Turing-machine computable functionssuch as the Halting
Problemcan be computed in a formal, mathematical sense of computation that
goes beyond Turing-machine computation. This is called hypercomputation.
phrasing.
5 The third term of the relation is an artifacts purpose or goal [Simon, 1996b, 5].
10.4. WHAT IS A PROCEDURE? 417
Here is the thought experiment: What about the clock that has stopped and one that
is consistently 5 minutes slow? The latter is never correctunless you simply move
the numerals on its face 5 minutes counterclockwise; then it would always be correct!6
The (users?) interpretation of the clocks output seems to be what counts.7
is a semi-technical term that is roughly synonymous with algorithmic. The verb to effect, as used in the
phrase to effect a change (in something), is roughly synonymous with the verb to cause, and it is not
directly related to effective in the previous sense. (For the difference between the verb to effect and the
noun an effect (as well as the similar-sounding verb and noun affect), see [Rapaport, 2013, 4.2.0, affect
vs. effect].)
9 Recall our discussion of falsifiability in science, 4.7.1.
418 CHAPTER 10. WHAT IS A PROCEDURE?
consulted or followed.
2. To say that a mundane procedure is effective means, by definition, that
following it always results in a certain kind of outcome [Cleland, 1993, 291].
The semi-technical notion of effective as it is used in the theory of
computation is, as we have seen (7.5), somewhat ambiguous. As Cleland
notes [Cleland, 1993, 291], Minsky calls an algorithm effective if it is
precisely described [Minsky, 1967]. And [Church, 1936b, 50ff; cf. 357]
calls an algorithm effective if there is a formal system that takes a formal
analogue of the algorithms input, precisely manipulates it, and yields a
formal analogue of its output. Churchs notion seems to combine aspects
of both Minskys and Clelands notions.
A non-terminating program (either one that erroneously goes into an
infinite loop or else one that computes all the digits in the decimal
expansion of a real number) can be effective at each step even though
it never halts. Well return to this notion in Ch. 11, when we look at the
notion of interactive computing.
3. The steps of a recipe can be precisely described (hence, they can be effective in
Minskys sense).
This is certainly a controversial claim; we will explore it in more detail in
10.5.2.
4. A procedure is effective for producing a specific output. For example, a
procedure for producing fire or hollandaise sauce might not be effective for
producing chocolate.
In other words, being effective is not a property of a procedure but a
relation between a procedure and a kind of output. This might seem to be
reasonable, but a procedure for producing the truth table for conjunction
might also be effective for producing the truth table for disjunction by
suitably reinterpreting the symbols.10
10 Here is a truth-table for conjunction, using 0 to represent false and 1 to represent true:
0 0 0
0 1 0
1 0 0
1 1 1
Note that, in the 3rd column, which represents the conjunction of the first two columns, there are three 0s
and one 1, which occurs only in the line where both inputs are 1.
And here is the analogous truth-table for disjunction:
0 0 0
0 1 1
1 0 1
1 1 1
Note that the third column has three 1s and only one 0, which occurs only in the line where both inputs
are 0.
Now suppose, instead, that we represent true by 0 and false by 1. Then the first table represents
420 CHAPTER 10. WHAT IS A PROCEDURE?
a certain molecular structure, expressing difficulty in understanding it. De Bruijn, overhearing them,
thought they were talking about mathematical lattice theory, since everything they said could beand was
interpreted by him as being about the mathematical, rather than the chemical, domain. He told them the
solution of their problem in terms of lattice theory. They, of course, understood it in terms of chemistry.
Were de Bruijn and the chemists talking about the same thing? [Rapaport, 1995, 2.5.1, p. 63]
10.5. CHALLENGES TO THE CHURCH-TURING COMPUTABILITY THESIS421
inert means lacking causal power, then perhaps the non-word ert could mean having causal power;
see the OEDs entry on inert [http://www.oed.com/view/Entry/94999].
422 CHAPTER 10. WHAT IS A PROCEDURE?
(http://www.oed.com/view/Entry/40563).
10.5. CHALLENGES TO THE CHURCH-TURING COMPUTABILITY THESIS423
1. Recipes leave details open (e.g., of ingredients, which play the same role in
recipes that data structures do in programs):
(a) Recipes provide for alternatives: use either yogurt or sour cream.
But couldnt a recipe, or a program for that matter, simply call for a
data-analogue of a typed variable or a subroutine here? The recipe
might call, not for yogurt or else sour cream, but, instead, for a white,
sour, milk-based substance.
And what about non-deterministic algorithms? Here is an example of
a non-deterministic procedure for computing the absolute value of x
using a guarded if control structure:14
if x 0 then return x;
if x 0 then return x;
Here, if x = 0, it does not matter which line of the program is executed.
In such procedures, a detail is left open, yet we still have an algorithm.
Or consider a program that simply says to input an integer, without
specifying anything else about the integer. (As a magician might say,
Think of a number, any number. . . ). This could still be an algorithm.
(b) Recipes specify some ingredients generically: use frosting, without
specifying what kind of frosting.
Here, again, compare typed variables or named subroutines. It does
not matter how the subroutine works; all that matters is its input-output
behavior (what it does). And it doesnt matter what value the variable
takes, as long as it is of the correct type. Typed variables and named
subroutines are generic, yet they appear in algorithms.
(c) Recipes provide for optional ingredients (use chopped nuts if desired).
But compare any conditional statement in a program that is based
on user input. (On the other hand, user input may raise issues for
interactive computing; see Ch. 11.)
2. Recipes leave construction steps (= control structure?) open: For instance, the
order of steps is not necessarily specified (at best, a partial order is given):
cream the butter and sugar, then add the rest of the ingredients (where no order
for adding is given for the rest of the ingredients).
executed. In a guarded if statement, it doesnt matter which one is executed. See [Gries, 1981, Ch. 10] or
http://en.wikipedia.org/wiki/Guarded Command Language#Selection: if
424 CHAPTER 10. WHAT IS A PROCEDURE?
But the same kind of thing can occur in a program, with preconditions that
are assumed but not spelled out, or details hidden in a subroutine. (Perhaps
put cookies on baking sheet is a call to a subroutine of the form: grease
baking sheet; put cookies on it.)
Preston claims that the cook (i.e., the CPU) is expected to do some of the design
work, to supply the missing parts. So, not everything is in the design. She claims
that cooks dont faithfully follow recipes; instead, they improvise. They can even
change other (fixed) parts of the recipe, because of their background knowledge,
based on experience. For example, they can substitute walnuts for pecans in a recipe
for pecan pie. Therefore, the constructor/executor is typically intelligent, in contrast
to an unintelligent CPU. Here, however, compare an intelligent student hand-tracing
a program. DISCUSS DARWINS DANGEROUS INVERSION? [Dennett, 2009].
Preston notes that the control ideal assumes that the world is stable over time and
homogeneous over agents.
But here is a different interpretation of her analysis: Her centralized control
model might describe an algorithm together with a CPU producing a process (i.e.,
an algorithm being executed). But her theory of collaborative improvisation might
describe a specification together with a programmer producing an algorithm. That is,
the development of an algorithm by a programmer from a specification is improvisatory
and collaborative, but the output of an algorithm by a computer from executing the
algorithm is centralized control.
So, recipes are more like design specifications for computer programs than they are
like algorithms. In fact, my counterexamples to differentiate between algorithms and
recipes just show that either recipes are high-level programs requiring implementation
in a lower level, or that recipes are specifications.
10.5.3 Discussion
The Church-Turing Computability Thesis, in any of its various forms, states that the
informal notion of effective computation (or algorithm, or whatever) is equivalent to the
formal notion of a Turing-machine program (or a -definable function, or a recursive
function, or whatever). The arguments in favor of the Church-Turing Computability
Thesis are generally of the form that (1) all known informal algorithms are Turing-
10.5. CHALLENGES TO THE CHURCH-TURING COMPUTABILITY THESIS425
15 This puts it positively. To put it negatively, no one has yet found a universally convincing example of an
And against Prestons example, we have seen that recipes are, perhaps, more like
specifications for algorithms than they are like algorithms.
In the next chapter, we will look at other potential counterexamples to the Church-
Turing Computability Thesis.
10.6. NOTES FOR NEXT DRAFT 427
8. The following quote can go either here or in an earlier chapter on the CTCT. It
is Turings statement of one of the principle justifications for the thesis.
I taught (aimed at students who were computer-phobic) was trying to show me how a spreadsheet worked
(at the time, I had never used one, so, with respect to this, I was as naive as any of the students in the
course!). She gave me those instructions, but I had no idea why I was supposed to do those things. Yet
I could faithfully follow her instructions without understanding them (that is, without understanding their
purpose); cf. [Dennett, 2009].
430 CHAPTER 10. WHAT IS A PROCEDURE?
[Gandy, 1980, 125]. We will not explore this issue here, but some references are
listed in the Further Sources (also see [Deutsch, 1985], who discusses CTCT
in the context of quantum computation).
14. Godels objection to the CTCT:
Godel has objected, against Turings arguments, that the human mind
may, by its grasp of abstract objects [by insight and imaginative
grasp], be able to transcend mechanism. [Gandy, 1980, 124]
As Gandy notes, we need to know much more about the nature and limits of the
human mind than we do in order to adequately evaluate this objection. After all,
what seems to be non-mechanical intelligence need not be. A more detailed
reply to Godel is given in [Kleene, 1987, 492494], the bottom line of which is
this:
The notion of an effective calculation procedure or algorithm
(for which I believe Churchs thesis) involves its being possible to
convey a complete description of the effective procedure or algorithm
by a finite communication, in advance of performing computations in
accordance with it. (p. 493.)
And, according to Kleene, Godels objection fails to satisfy that criterion (as does
the objection raised in [Kalmar, 1959]).
15. On the importance of a physical CTCT:
[Newell, 1980, 148] points out that physical systems are limited in speed, space,
and reliability. Hence, a physical device that implements a Turing machine
will inevitably be more limited than that abstract, ideal machine. So, some
functions that are theoretically computable on a Turing machine might not be
physically computable on a real computer. Hence, a physical version of the
CTCT is going to differ in plausibility from the abstract CTCT. The abstract
version can be made slightly more realistic, perhaps, by redefining, or placing
limits on, some of the terms:
[R]ather than talk about memory being actually unbounded, we will
talk about it being open, which is to say available up to some
point, which then bounds the performance, both qualitatively and
quantitatively. Limited, in opposition to open, will imply that the limit
is not only finite, but small enough to force concern. Correspondingly,
universal can be taken to require only sufficiently open memory, not
unbounded memory. [Newell, 1980, 161]
16. According to many, a computer simulation of a hurricane is not a hurricane,
because it does not get people wet CITE. But it could get simulated people
simulatedly wet. The difference is between a real hurricane and a simulated
one has to do, in part, with the nature of the inputs and outputs. But, as
[Carleton, 1984, 222223] notes, The input to a fire simulation is not oxygen,
tinder, and catalyst. That is, it is not the same input as goes into a natural
10.6. NOTES FOR NEXT DRAFT 433
system which produces fire. . . . [I]t is by virtue of dealing in the right kinds
of input and output that one system can play the role in a situation that is
played by a system we acknowledge to literally undergo the [activity]. . . our
system simulates. Clelands hollandaise-sauce-making program may differ in
output when executed on the moon than on earth; it has the wrong output. But
a hurricane-simulator, a fire-simulator, and a hollandaise-sauce program each
exhibit their relevant behaviors if you ignore the input and the output. So, the
question becomes how central to what it is that a computer program is (supposed
to be) doing is the nature of the inputs and outputs (in general, of the environment
in which it is being executed)? This is relevant to the issues concerning embodied
cognition as well as to Rescorlas emphasis on semantics in computation.
How important are the input and output? Here is a definition from
[Deutsch, 1985, 2]:
17. [Goodman, 1987, 482] raises the question of whether the CTCT is a reduction
of the informal mathematical notion of algorithm. . . [to] the formal set-theoretic
notion of a Turing machine program. The former is intensional in nature,
because An algorithm, in the informal mathematical sense, is a specific
procedure for solving a particular kind of mathematical problem (my italics; see
also p. 483). But the latter is extensional, because the Turing machine program
does not tell you what the program is for. . . . [Only the] documentation contains
the intensional content which is missing from the bare machine code. . . and
brings the program closer to the algorithm which it is intended to implement
(p. 483). This seems to nicely capture Fodors Civil War-chess puzzle: That
a particular program is a computational model of a Civil War battle rather
than of a chess match is a matter of its intensional description; extensionally,
they are the same program (modulo input-output encoding). Ah, but perhaps
that is where the intensionality can be put back in the Turing machine: in the
input-output encoding. But that is not really part of the machine; it is part
of a users interaction with the machine or how a user treats or interprets the
machines output, how a user interprets what the machine is doing. Here, what
the machine is doing is potentially ambiguous between, say, modeling a Civil
War battle (a description from Dennetts intentional stance) and some design-
stance description that would be neutral between modeling a Civil War battle
and modeling a chess match (see [Goodman, 1987, 483] for a very similar
discussion).
However, Goodman does not believe that the CTCT is
434 CHAPTER 10. WHAT IS A PROCEDURE?
just numbers. Can numbers represent things? Yes, but only insofar as we
humans who use the numbers to represent things are thereby using them as
if they were symbols.
Is computation just about numbers? Functions are not limited to numbers,
so why should computation be thus limited? The broader notion of
computation (not limited to numbers) includes number computation.
(b) Lets grant Rescorlas point that (semantic) computation of
number-theoretic functions is distinct from (syntactic) computation of
numeral/symbolic-theoretic functions in the Turing-machine sense. After
all, Turing machines manipulate marks on paper, not numbers (at least, not
directly). But now lets imagine a Platonic, number-theoretic, Turing-like
machine as follows: The machine contains an infinite supply of boxes,
each of which can contain a natural number. (If you prefer, each box can
only contain the number 1, and other natural numbers would be represented
by sequences of boxes containing 1s.) The machine can look into a box to
see what number (if any) is in it, and it can place any number in any box
(putting a number in a box that already has a number in it just replaces
the previous number). It can move one box to the left or one box to
the right of its current location. In other words, it can do exactly what a
normal Turing machine can do, except that, instead of dealing with marks
on paper, it deals with numbers in boxes. If we consider an abstract Turing
machine to be a (perhaps set-theoretically defined) mathematical structure,
then both numeral-based and number-based Turing machines are (abstract)
Turing machines. The CTCT can be interpreted to be saying that informal
computation is Turing-machine computation in any of these three senses of
Turing machine. Is there anything a number-theoretic Turing machine can
or cant do that a numerical-based Turing machine can or cant do? If they
are equally powerful (which I believe that they are), then I dont think
that Rescorlas argument here is significant.
On second thought, maybe not. The version of a number-theoretic Turing
machine that allows any real number to be placed in a box may be too
powerful: How would you add two numbers? I dont see how you could
unless you had addition as a primitive operation (which it isnt). On the
other hand, if you only allow the number 1 to be placed in a box, and you
represent other numbers by sequences of boxes of 1s, then you just have
a version of the numeral-theoretic Turing machine with the number 1 in
a box representing a mark on paper (or representing the numeral 1). In
that case, the number-theoretic Turing machine is just a very odd kind of
numeral-theoretic Turing machine.
(c) A nice example of the which Turing machine is this?/what does this Turing
machine do? contrast is this example of Rescorlas. (Note: The symbol
x represents a sequence of x strokes, where x is a natural number.)
Different textbooks emply different correlations between Turing
machines syntax and the natural numbers. The following three
438 CHAPTER 10. WHAT IS A PROCEDURE?
d1 (n) = n.
d2 (n + 1) = n.
d3 (n + 1) = n, as an input.
d3 (n) = n, as an output.
Note that this blocks a Turing machine from being a hypercomputer (see
Ch. 11.
As Piccinini goes on to point out, the output might have different colors
depending on the colors of the input threads, but the pattern will remain the
same. The pattern is internal; the colors are external, to use the terminology
above. If you want to weave an American flag, you had better use red, white, and
blue threads in the appropriate ways. But even if you use puce, purple, and plum
threads, you will weave an American-flag pattern. Which is more important: the
pattern or the colors? Thats probably not exactly the right question. Rather, the
issue is this: If you want a certain pattern, this program will give it to you; if you
want a certain pattern with certain colors, then you need to have the right inputs
(you need to use the program in the right environment). (This is related to issues
in the philosophy of mathematics concerning structuralism: Is the pattern, or
structure, of the natural numbers all that matters? Or does it also matter what the
natural numbers in the pattern really are? CITE)
(b) This issue is also related to Darwins and Turings strange inversion.
Compare this quote:
The possibility of the deliberate creation of living organisms from
elementary materials that are not themselves alive has engaged the
human imagination for a very long time. [Lewontin, 2014, 22]
to this paraphrase:
The possibility of the deliberate creation of intelligent behavior
from elementary operations that are not themselves intelligent has
engaged the human imagination for a very long time.
26. How do you know when a thing just begins to boil? How can you be
sure that the milk has scorched but not burned? Or touch something
too hot to touch, or tell firm peaks from stiff peaks? How do you
define chopped? [Gopnik, 2009b, 106]
27. Hopcroft & Ullman (CITE) distinguish a procedure, which they vaguely define
(their terminology!) as a finite sequence of instructions that can be mechanically
carried out, such as a computer program (to be formally defined in their
Ch. 6), from an algorithm, which they define as A procedure which always
terminates. (See pp. 23 of their text.)
28. [Copeland and Sylvan, 1999, 46] (see also [Copeland, 1997]) distinguish
between two interpretations of the CTCT. The one that they claim was actually
stated by Church and by Turing concerned the functions taht are in principle
computable by an idealised human being unaided by machinery. This one,
they claim, is correct. The other interpretation is that the class of well-defined
computations is exhausted by the computations that can be carried out by Turing
machines.
So, one possible objection to Cleland is that cooking (for example) is not
something that can be carried out by an idealized human being unaided by
442 CHAPTER 10. WHAT IS A PROCEDURE?
29. [Church, 1936a, 40, my italics] calls his 1936 statement of what we now
name Churchs thesis a definition of the commonly used term effectively
calculable .
Of course, improvisational music (for example, certain kinds of jazz) also have
tht kind of interactive nature.
31. Modifications of the CTCT, such as the physical CTCT, really arent concerned
with the kind of computation that Hilbert cared about, any more than Euclid
would have cared about geometric constructions that went beyond compass and
straightedge.
33. [Shapiro, 2001] argues that computer science is the natural science of
procedures. In support of this claim, we might consider this related claim of
[Rescorla, 2014b, 2, p. 1279]:
In other words, computer science developed formal methods for making the
notion and expression of procedures mathematically precise. Thats what makes
is a science of procedures.
[Egan, 2014, 122] points out, with respect to [Shadmehr and Wise, 2005]s
characterization of the motor-control mechanism [for moving our hand to grasp
an objectsee comments below] allows us to see that a mariner who knew
the distance and bearing from his home port to his present location and the
444 CHAPTER 10. WHAT IS A PROCEDURE?
distance and bearing from his home port to a buried treasure could perform the
same computationvector subtractionto compute the course from his present
location to the treasure. Similarly, a Civil War buff might be able to use the
same computer program that describes a particular battle to help her win a chess
game:
This relates to Clelands hollandaise sauce example: Egan says that the visual
filter would compute the same mathematical function in any environment, but
only in some environments would its doing so enable the organism to see
[Egan, 2010, 256, col. 2, my italics]. Similarly, Clelands recipe would compute
the same (culinary?) function in any environment, but only on Earth (and not on
the Moon) would it doing so result in Hollandaise sauce.
That is, we can see what it implements by looking at its semantic interpretation.
(We will discuss this further in 14.4.)
Does this mean that algorithms are not intentional, as Hill argues when she says
that all algorithms must have the form: To accomplish task X, do this.
[Egan, 2014] takes up these themes again, in more detail. She gives another
example, due to [Shadmehr and Wise, 2005], concerning how we are able to
move our hand to grasp an object. Note that our brain presumably actually
10.6. NOTES FOR NEXT DRAFT 445
The Church-Turing
Computability Thesis:
II. What Is Hypercomputation?
449
450 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
(a) Eberbach, Eugene; & Wegner, Peter (2003), Beyond Turing Machines, Bulletin
of the European Association for Theoretical Computer Science (EATCS), No. 81
(October): 279304
Accessed 8 November 2012 from:
http://www.eatcs.org/images/bulletin/beatcs81.pdf
Another useful survey, but it opens with some seriously misleading comments
about the history of computation and the nature of logic.2
(b) On Putnam-Gold machines:
John Cases COLT Page
accessed 8 November 2012 from: http://www.eecis.udel.edu/case/colt.html
2 For example, contrary to what the authors say, (1) [Turing, 1936] was not primarily a mathematical
demonstration that computers could not model mathematical problem solving (p. 279) (although it did
include a mathematical demonstration that there were some mathematical problems that a computer could
not solve); and (2) Hilbert did not take the Entscheidungsproblem as a basis that all mathematical problems
could be proved true or false by logic (p. 279), simply because mathematical problems cannot be proved
true or false (rather, mathematical propositions might be provable or not, and they might be true or false,
but truth and falsity are semantic notions incapable of proof, whereas provability is a syntactic notion).
452 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
Nowak, Martin A.; Komarova, Natalia L.; & Niyogi, Partha (2002),
Computational and Evolutionary Aspects of Language, Nature 417 (6 June):
611617.
Accessed 4 June 2014 from:
http://people.cs.uchicago.edu/niyogi/papersps/NKNnature.pdf
11.2. INTRODUCTION 453
11.2 Introduction
[A] computer linked with a human mind is a more powerful tool than
an unassisted human mind. One hope of many computer scientists is to
demonstrate. . . that the computer/human team can actually accomplish far
more than a human alone. [Forsythe, 1967a, 3].
One might also ask whether that team could accomplish far more than a computer
alone, say by interacting with the computer while it is computing [Lohr, 2013,
Steed, 2013].
We have seen that it can be argued that computer science is the systematic study of
computing, that computing is the mathematical study of algorithms, and that algorithms
are best understood mathematically in terms of Turing machines (or anything logically
equivalent to Turing machines).
But are they best understood that way? We saw in the previous chapter that it can
be argued that there might be other kinds of algorithms that are not computable by a
Turing machine. In this chapter, we will look at some of the arguments for this point
of view and at some of the kinds of algorithms that are allegedly not computable by a
Turing machine.
takes two inputs: x and y (another way to say this is that its single input is the
ordered pair (y, z)). Then there exists another partial recursive function s(x,y)
that is, we can find another partial recursive function that depends on s (two)
inputs (and the dependence is itself a recursive function, s)such that s(x,y) is
input-outputequivalent to x when y is fixed, and which is such that s(x,y) is a
function with y (that is, with part of x s input) stored internally as data.
Here is an example of these two kinds of Turing machines (with a program for
x (y, z) on the left and a program for s(x,y) (z) on the right:
begin begin
input(y, z); constant := y;
output := process(y, z); input(z);
print(output) output := process(constant, z);
end. print(output);
end.
In other words, data can be stored effectively (that is, algorithmically) in
programs; the data need not be input from the external world.
In this way, any interactive program could, in principle, be shown to be logically
equivalent to a non-interactive program. That is, any interactive program can be
simulated by an ordinary Turing machine by pre-storing the external input.
The catch here is whether you need to know in advance what the external input
is going to be. But the Substitution Property theorem does seem to say that, once
you know what that input is, you need only an ordinary Turing machine, not an
interactive hypercomputer.
The constraints about a finite number of steps or a finite amount of time can be
relaxed.
MOVE THIS TO A SECTION THAT ELABORATES ON IT?:
This would be the case with what has been called a Zeus machine or
an accelerating Turing machine [Boolos and Jeffrey, 1974]. Turing placed
456 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
But there is another version of this algorithm, which we saw could not be so
converted:
[I]if the machine has most recently printed yes, then we know that
the. . . [input has been accepted] unless the machine is going to change its
mind; but we have no procedure for telling whether it will change its mind
or not. The. . . [problems] for which there exist decision procedures in
this widened sense are decidable by empirical meansfor, if we always
posit that the most recently generated answer is correct, we will make a
finite number of mistakes, but we will eventually get the correct answer.
(Note, however, that even if we have gotten to the correct answer (the end
of the finite sequence) we are never sure that we have the correct answer.)
[Putnam, 1965, 49, italics in original]
coudnt compute at all (namely, partial ones). This would be equally detrimental.
But, says Kugel, there is a third option: Let the mind be a universal Turing machine
with pre-computed or default values for those undefined inputs. Such a machine is
not a Turing machine, because it could solve the Halting Problem! Give it a program C
and input i, and simply let it immediately output loops and only then start determining
whether C halts on i. If C does halt on i, let this machine output halts. That is, its
real output is the last thing that it outputs, not the first thing. It is a trial-and-error
machine.
(It is interesting to compare such machines to heuristic programming. In Chapter 7,
we saw that a heuristic program was one that gave an approximate solution to a
problem. It would seem that trial-and-error machines do just that: Each output is an
approximation to the last output. Ideally, each output is a closer approximation than
each previous output.)
Again, Putnam-Gold machines (NOTE: DECIDE WHETHER TO CALL THEM
PGM OR T&EM) are such that, for each input, they allow an unlimited, but finite,
number of outputs (trials). The last output (not any of the intermediate guesses)
is considered to be the computed value of the input. (If there is no first output, or no
last output, then the result is technically undefined.) Both Putnam-Gold machines and
Turing machines use the same machinery, but they use it in different ways.
Is there an aspect of intelligence that is not Turing-machinecomputable, but that is
Putnam-Goldcomputable? Yes: learning a function from its values. In Golds version,
you are given the initial outputs of a function f : f (1), f (2), . . ., and you are asked if
you can infer, or guess, or compute what function f is. This is called computational
learning theory or inductive inference. It is an abstract way of describing the
problem that a child faces when learning its native language: f (i) is what the child
hears at time t = i, and f is the grammar of the language. Putnam-Gold machines are
precisely defined to model this. ELABORATE ON GOLDS THEORY
11.5 Summary
Martin Davis seems to have a good refutation of some hypercomputation theories,
namely, of course you should expect to get non-computable output if you allow non-
computable input.
Only two theories of hypercomputation seem useful: Interaction machines and
trial-and-error machines. But both of these seem to be only minor extensions
of the Turing analysis of computation. Interaction machines give rise to relative
computation, which still seems to be a version of Turings original analysis. The only
case in which an interaction machine differs significantly from a Turing machine is
when the interactive machine doesnt halt and its input stream allows for an oracle-
supplied, non-computable number. But this seems to fall under Daviss objection to
hypercomputation. Notably (as we will see in Ch. 19), the Turing test is interactive;
insofar as interaction is not modeled by a Turing machine, this would seem to be a
trivial gap.
Trial-and-error machines, on the other hand, seem to have potential, but,
importantlydespite being technically not the computation of a resultthey abide by
460 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
all of Turings constraints on what counts as computing, with the possible exception of
knowing whether it has halted. So, perhaps intelligence is not a computable function,
not because it is not computable, but because it is not a function!4
4 Some of the observations in this summary are based on a personal conversation with Jonathan Buss,
6 March 2007.
11.6. NOTES FOR NEXT DRAFT 461
4. Need to elaborate on the notion of interactive computing and its relation to oracle
machines.
6. Some games that involve tossing dice might be like oracle or interactive Turing
machines. Still, by the Subst Thm, any such game/Turing machine, after it has
462 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
been played, can be simulated by a deterministic Turing machine. I.e., for each
such oracle Turing machine, there is some deterministic Turing machine whose
i-o and algorithmic behavior is identical, except it cant be determined in advance
which one it is.
7. There are things. . . bees can do that humans cannot and vice versa
[Sloman, 2002, 3.3]. Does that mean that bees can do non-computable
tasks? Iff do means something different from compute, such as physical
performance. Cf. Cleland
8. See [Hayes, 1990], as discussed in 11, suggesting that interactive and classical
Turing computation differ only in the source of input information.
9. On Turing on fallibility, related to 11.4.1:
[O]ne can show that however the machine [that is, a computer] is
constructed there are bound to be cases where the machine fails to
give an answer [to a mathematical question], but a mathematician
would be able to. On the other hand, the machine has certain
advantages over the mathematician. Whatever it does can be
relied upon, assuming no mechanical breakdown, whereas the
mathematician makes a certain proportion of mistakes. I believe that
this danger of the mathematician making mistakes is an unavoidable
corollary of his [sic] power of sometimes hitting upon an entirely new
method. [Turing, 1951, 256]
This gives support Kugels claims about fallibility. Such trade-offs are common;
for example, as Godel showed, certain formal arithmetic systems can be
consistent (infallible?) or else complete (truthful?), but not both. An analogy
is this: In the early days of cable TV (the late 1970s), there were typically two
sources of information about what shows were onTV Guide magazine and
the local newspaper. The former was consistent/infallible in the sense that
everything that it said was on TV was, indeed, on TV; but it was incomplete,
because it did not list any cable-TV shows. The local newspaper, on the other
hand, was complete in the sense that it included all broadcast as well as all
cable-TV shows, but it was inconsistent/fallible, because it also erroneously
included shows that were not on TV or cable (but there was no way of knowing
which was which except by being disappointed when an advertised show was
not actually on).
(It is also of interest to note that, in this talk, Turing envisaged what has come to
be known as The Singularity: it seems probably tht once the machine thinking
method had started, it would not take long to outstrip our feeble powers. There
would be no question of the machines dying, and they would be able to converse
with each other to sharpen their wits. At some stage therefore we should have
to expect the machines to take control, in the way that is mentioned in Samuel
Butlers Erewhon (pp. 259260).)
10. Concurrent computation can be thought of in two ways. In the first way,
a single computer (say, a (universal) Turing machine) executes two different
algorithms, not one after the other (sequentially), but in an interleaved fashion,
in much the way that a parallel computation can be simulated on a serial
computer: On a serial computer (again, think of a Turing machine), only one
operation can be executed at a given time; on a parallel computer, two (or
more) operations can be executed simultaneously. But one can simulate parallel
computation on a serial computer by interleaving the the two operations. The
difference between parallel and concurrent computation is that the latter can also
be thought of in the second way mentioned above: Two (or more) computers
(say, non-universal Turing machines) can each be executing two different, single
algorithms simultaneously in such a way that outputs from one can be used as
inputs to the other.5
In fact, heres an interesting way to think about it: A single Turing machine
can be thought of as a model of a human computer solving a single task. But
humans can work on more than one task at a time (concurrently, if not in
parallel). And two or more humans can work on a single problem at the same
time. Moreover, there is no reason why one humans insights (outputs) from
work on one problem couldnt be used (as inputs) in that same humans work
on a distinct problem. And there is surely no reason why one humans insights
from work on a given problem couldnt be used by another humans work on
that same problem. Surely even Hilbert would have accepted a proof of some
mathematical proposition that was done jointly by two mathematicians. So,
insofar as concurrent computation is a kind of hypersomputation, it seems to
be a benign kind.
11. [Wegner, 1995, 45] identifies interaction machines with Turing machines with
oracles and with modeling reactive processes (citing work by Pneuli).
Moreover, Churchs thesis. . . becomes invalid if the intuitive notion of
computability is extended to include interactive computation. Church and Turing
identify effective computability with purely automatic computation, while
interaction machines model patterns of distributed interactive computations
coordinated by protocols [Wegner, 1995, 46]. Here, I think, we can
begin to see where a disagreement with Wegner over the invalidity of
the CTCT even for someone who might agree with him about the way in
which interactive computing might be hyper: I wouldnt want to say that
CTCT identifies effective computability with purely automatic computation,
because I would distinguish the latter notion from the intutive notion, taking
automatic computation as a synonym for -computation or Turing-machine
computation and then understanding the CTCT as identifying the intuitive notion
with the more formal, mathematical notion of automatic/-/Turing-machine
computation.
But heres an interesting question: If you dont allow oracles (or physically
impossible computations, or black-hole computations, etc.), can interactive
computation make the Halting Problem computable? Put another way, the
Halting Problem is not classically computable; is it interactively computable?
More fully:
Today, computing scientists face their own version of the mind-
body problem: how can virtual software interact with the real world?
In the beginning, we merely wanted computers to extend our minds:
to calculate trajectories, to sum finances, and to recall addresses. But
as time passed, we also wanted computers to extend our bodies: to
guide missiles, to link telephones, and to proffer menus.
The classic models of computation are analogous to minds
without bodies. For Turings machine, a calculation begins with a
problem on its tape, and ends with an answer there. . . .
Eventually, interactive models of computation emerged,
analogous to minds in bodies. . . . A single input at initiation and
a single output at termination are now superseded by multiple inputs
and outputs distributed in time and space.
13. As [Hintikka and Mutanen, 1997, 181] note, the Halting Problem algorithm in its
trial-and-error form is not recursive, even though it is obviously mechanically
determined in a perfectly natural sense. They also note that this perfectly
natural sense is surely part of the informal notion of computation that the
CTCT asserts is identical to recursiveness, hence that the CTCT is not valid
(p. 180). (Actually, theyre a bit more cautious, claiming that the informal
notion is ambiguous: We doubt that our pretheoretical ideas of mechanical
calculability are so sharp as to allow for only one explication (p. 180).
14. Heres another term for interactive/reactive (etc.) computing:
466 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
Related to all this is the role of non-halting programs like operating systems,
ATMs, etc. Some of my colleagues say that those programs dont express
algorithms, because algorithms, by definition, must halt. But even Turings
original Turing machines didnt halt: They computed infinite decimals, after
all! The central idea behind the Halting Problem is to find an algorithm that
distinguishes between programs that halt and those that dont. Whether halting
is a Good Thing is independent of that.
16. [Copeland and Sylvan, 2000, 8.1, esp. pp. 190191] offer an interesting
11.6. NOTES FOR NEXT DRAFT 467
They then identify two kinds of relativity: resource relativity and logical
relativity. The former includes relativity in procedures, methods or in
the devices available for computing, which includes the analogue and
physical categories discussed above, as well as o-machines. Different
procedures might include different basic operations or instructions (in
much the same way that different geometric systems might go beyond
straightedge and compass to include measuring devices (or might go below
to replace a collapsible compass with a fixed compasson this, see
http://en.wikipedia.org/wiki/Compass equivalence theorem). But its not clear
if such procedural relativity necessarily goes beyond (if not below) Turing
computability.
18. In [Knuth, 2014, Question 13], Alfred Aho asks about reactive distributed
systems that maintain an ongoing interaction with their environmentsystems
like the Internet, cloud computing, or even the human brain. Is there a universal
model of computation for these kinds of systems?
468 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
Note that phrasing the question this way suggests that computation is a very
general term that includes not only Turing-machine computation but other kinds
of computing as well (perhaps even hypercomputation).
This brief discussion suggests that the proper way to consider such reactive
or distributed or interactive systems is not as some new, or hyper, model
of computation, but simply as the study of what might happen when two or
more Turing machines interact. Theres no reason to expect that they would
not be more powerful in some sense than a single Turing machine. Clearly, if
a Turing machine interacts with something that is not a Turing machine, then
hypercomputation can be the result; this is what Davis notes. Even if it is two
Turing machines that are interacting, and even if that produces the ability to
compute non-Turing-machine-comptable functions, that would not indicate
that there is any limitation to the CTCT (and this may be what Copeland had
in mind when he distinguishes two interpretations of the CTCT).
19. On the Substitution Property:
An interactive system is a system that interacts with the environment
via its input/output behavior. The environment of the system is
generally identified with the components which do not belong to it.
Therefore, an interactive system can be referred to as an open system
because it depends on external information to fulfil its task. If the
external resources are integrated into the system, the system no longer
interacts with the environment and we get a new, closed system. So,
the difference between open and closed systems lies in the eye of the
beholder. [Prasse and Rittgen, 1998, 359, my italics]
The components which do not belong to it would presumably include external
input. The italicized sentence is a nice statement of my interpretation of the
Substitution Property.
[Prasse and Rittgen, 1998], by the way, admirably call attention to the vagueness
and informality of the claims in [Wegner, 1997] (see especially 4.4 and 4.6).
20. On interaction machines:
[Prasse and Rittgen, 1998, 359] consider a program such as the following:
begin
let b be a Boolean variable;
let x be an integer variable;
input(b);
while b = true do
11.6. NOTES FOR NEXT DRAFT 469
input(x);
output(x2 );
input(b);
end
They say of a program such as this:
Neglecting input/output, each iteration can be interpreted as a
computation performed by a Turing machine. However, the influence
of the (unknown) user input on the control flow makes it hard to
determine what overall function is computed by this procedure (or
if the procedure can be seen as a computation at all). . . .
The input will be determined only at run-time. The overall
function is derived by integrating the user into the computation, thus
closing the system.
It is evident that Turing machines cannot model this behavior
directly due to the missing input/output operations. Therefore, we
need models that take into account inputs and outputs at run-time to
describe computer systems adequately.
Wegner would agree, though Prasse & Rittgens point is that Wegners
interpretation that this violates the CTCT is incorrect. Still, this is a nice example
of the kind of hypercomputation that Wegner has in mind.
They also note that Wegners concept of computability focuses more on real
computers and systems than on the theoretical, function-oriented view of Church,
Kleene, Markov, Post and Turing (p. 362). This is certainly consistent with
some of Smiths claims, to be discussed in 21.7.1.
21. Consistent with the organizing principle for the chapter of considering lifting
restrictions on Turing machines, if we ignore temporal requirements, then
we can get accelerating (or Zeus) machines: Neither Turing nor Post, in
their descriptions of the devices we now call Turing machines, made much
mention of time. . . . They listed the primitive operations that their devices
perform. . . but they made no mention of the duration of each primitive operation
[Copeland, 1998, 150]6
22. A tae-machine (such as the tae version of the Halting Problem program), if
implemented on an accelerating Turing machine, will always let us know when
it is finished guessing:
(where H(p, d) is the halting function such that H(p, d) = 1 if Turing machine p
halts on input d and H(p, d) = 0 otherwise).
6 [Copeland, 1998, 151, fn 2] distinguishes between accelerating Turing machines and Zeus
machines.
11.6. NOTES FOR NEXT DRAFT 471
[Copeland, 1998, 154] observes that the hooter-enhanced machine is not a Turing
machine.
23. [Shagrir, 1999, 2, pp. 132133] observes that The Church-Turing thesis is
the claim that certain classes of computing machines, e.g., Turing-machines,
compute effectively computable functions. It is not the claim that all computing
machines compute solely effectively computable functions. This is consistent
with Kugels views on tae-machines; it is also consistent with the view that what
makes interaction machines more powerful than Turing machines is merely how
they are coupled with either other machines or with the environment, and not
with the machinery itself. Shagrirs goal is to argue for a distinction between
algorithms and computation, with the latter being a wider notion.
24. On interaction:
We interact with the world through programs all the time. Very often,
programs we use interact with a network of unseen programs so that
their ends and ours may be realized. We are acted on by programs all
the time. These entities are not just agents in the sense of being able
to take actions; they are also agents in the representative sense, taking
autonomous actions on our behalf. [Chopra, 2014]
Similarly, the nature of ubiquitous computing seems both to clearly call
for such interaction as well as to consider it part of computing (not
hypercomputing); see, for example, [Dublon and Paradiso, 2014].
25. Some have argued that Turings model of computation is based on what humans
can do. Yet it is an idealized human who is modeled, for example, one that
has no limits on space (recall that the tape is infinite). [Cleland, 2004, 212]
points out that, in that case, one could allow other idealizations, such as no
limits on speed of computation. That would make a Zeus machine at least as
plausible as a Turing machine. (This fits in with the idea that hypercomputation,
in general, investigates the lifting of restrictions on the classical informal notion
of algorithm.) However, [Cockshott and Michaelson, 2007, 2.5, p. 235] reject
these relaxations out of hand.
26. For a refutation of Wegner, see:
http://blog.computationalcomplexity.org/2006/07/principles-of-problem-
solving-tcs.html
27. My point about a Turing machine being
able to simulate an interactive/reactive/coupled computer (via the Substitution
Property) is also mentioned in [Teuscher and Sipper, 2002].
28. [Fortnow, 2010] nicely refutes three of the major arguments in favor of
hypercomputation (including analog computation). Of most interest to us is this
passage, inspired by Turings comment that The real question at issue is What
are the possible processes which can be carried out in computing a number?
[Turing, 1936, 9, p. 249] (see 8.7.2.1, above):
472 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
29. Good idea for intro section: [Cockshott and Michaelson, 2007, 2.5, p. 235]
wonder whether hypercomputation is a Kuhnian revolutionary challenge to the
normal science of computer science.
The Turing o-machine is a better model to study them [that is, to study
online computing devices which can access or interact with some
external database or other device] because the Turing a-machine
lacks this online capacity. [Soare, 2009, 9, p. 387]
However, the interesting point is that all of these are extensions of Turing
machines, not entirely new notions. Moreover, Soare does not disparage, object
to, or try to refute the CTCT; rather, he celebrates it [Soare, 2009, 12].
behavior.
9 This can be thought of as interaction with the environment in the form of intermediate input.
474 CHAPTER 11. WHAT IS HYPERCOMPUTATION?
Program Q: x := 3
and run it in parallel with P1 and P2 in turn:
Program R1 : P1 par Q Program R2 : P2 par Q
then the programs R1 and R2 have different meaning. (Even if an
assignment statement is executed indivisibly, R1 can end up with x
equal to 2, 3, or 4, while R2 can only end up with x equal to 2 or
3.) So a compositional semantics must be more refined; it has to take
account of the way tghat a program interacts with the memory.
To see why R1 can have any of those three possible values, consider that Q
could be thought of as being executed before x := 1, immediately after it,
or after x := x + 1. To make the relevance to Wegners claims clearer, note
that Q could have been input(x), instead of an assignment statement. But
note Milners conclusion: It is not that such interactive programming refutes the
CTCT, nor that this is a form of computation that goes beyond classical Turing-
machine computation; rather, it is merely the claim that a more refined form
of semantics is needed. (Wegner & Goldin 2003 chastise Milner for avoid[ing]
the question.)
I can design a program that never crashes if I dont give the user any
options. And if I allow the user to choose from only a small number
of options, limited to htings that appear on a menu, I can be sure that
nothing anomalous will happen, becasue each option can be foreseen
in advance and its effects can be checked. But if I give the user the
ability to write programs that will combine with my own program, all
hell might break loose. [Knuth, 2001, 189190]
Cf. also [Gurevich, 1999, 93, 98], which talks about algorithms that are closed
in the sense that they do not interact with their environments and ones that
do so interact (5, pp. 111115). Gurevich also notes that, in the case of
non-deterministic algorithms, the active environment will make the choices
(p. 116).
[Ekdahl, 1999, 3, pp. 262263] has a nice example that illustrates how
interactive computing is modeled by o-machines and relative computability. The
essence of the example considers a simplified version of an airline-reservation
program. Such a program is a standard example of the kind of interactive
program that Wegner claims is not Turing-machine computable, yet it is not
obviously an o-machine, because it does not obviously ask an oracle for the
solution to a non-computable problem. Suppose our simplified reservation
program is this:
begin
while true do:
input(passenger, destination);
output(ticket(passenger, destination))
end while
end.
Ekdahl observes that, although writing the passenger and destination information
on the input tape is computable and can equally well be done by another Turing
machine, when our reservation program then asks for two new inputs,
which [inputs are] going to [be written] on the tape is not a recursive process.
. . . So, the input of [passenger and destination] can be regarded as a question to
an oracle. An oracle answers questions known in adavance but the answers are
not possible to reckon in advance (italics in original; my boldface).
someone who wishes to know the correct answer would have no way
to know at any given time whether the latest output is the correct
output (Quoted by [Nayebi, 2014, 286] from:
Davis, Martin (2006), The Church-Turing Thesis: Consensus and
Opposition, Lecture Notes in Computer Science 3988: 125132.)
That is, a trial and error machine does compute the uncomputable, but we
cant reliably use the result. Really? What about language learning and heuristic
satisficing?
But the faith that truth exists, and that our minds can find it, may
be held in two ways. We may talk of the empiricist way and of the
absolutist way of believing in truth. The absolutists in this matter say
that we not only can attain to knowing truth, but we can know when we
have attained to knowing it; whilst the empiricists think that although
we may attain it, we cannot infallibly know when. To know is one
thing, and to know for certain that we know is another. [James, 1897,
The Will to Believe, V, p. 465]
Compare: The faith that a problem has a computable (or algorithmic) solution
exists, and that our computers can find it, may be held in two ways. We may
talk of the trial-and-error way and of the Turing-algorithmic way of solving
a problem. The Turing algorithmists in this matter say that we (or Turing
machines) not only can solve computable problems, but we can know when
we (or they) have solved them; while the trial-and-error hypercomputationalists
think that although we (or our computers) may solve them, we cannot infallibly
know when. For a computer to produce a solution is one thing, and for us to
know for certain that it has done so is another.
39. [Feferman, 1992, 315] claims that notions of relative (rather than absolute)
computability (that is, notions based on Turings o-machines rather than on
his a-machines) have primary significance for practice and that these relative
notions are to be understood as generalization[s]. . . of computability [and of
the Church-Turing Thesis] to arbitrary structures. So this seems to fly in the
face of Wegners claims that interaction is something new while agreeing with
the substance of his claims that interaction is more central to modern computing
than Turing machines are.
40. [Feferman, 1992, 321] notes that o-machines (where o is an oracle that solves a
non-computable problem) can be generalized to that of a B-machine for any set
B:
In the register machine model, one simply adds to the basic
instructions, ones of the form:
(1) r j := 1 if rk is in B, else r j := 0.
More importantly, Feferman goes on to observe that the arguments for the
Church-Turing Thesis lead one strongly to accept a relativized version: (C-T)r [a
set] A is effectively computable from B if (and only if) A is Turing computable
from (or Turing reducible to) B. To say that A is Turing computable from (or
Turing reducible to) B is to say that x is in A iff the B-machine outputs 1 when its
input is x (where output 1 means yes, x is in A). This is called Feferman then
says that Turing reducibility gives the most general concept of relative effective
computability.
41. Perhaps the issue is not so much whether it is possible to compute the
uncomputable (by extending or weakening the notion of Turing-machine
computation), but whether it is practical to do so. [Davis, 2006a, 126] finds
this to be ironic:
2. Websites:
12 http://www.haverford.edu/cmsc/slindell/Presentations/Revisiting%20finite-visit%20computations.pdf
13 http://www.haverford.edu/cmsc/slindell/Presentations/A%20physical%20analysis%20of%20mechanical%20computability.pdf
Chapter 12
487
488 CHAPTER 12. SOFTWARE VS. HARDWARE
12.2 Introduction
[NOTE FOR NEXT DRAFT: This section could be re-written as a general introduction
to the Part on What Is a Computer Program?, whose first chapter would be
Software vs. Hardware.]
We have just been exploring what an algorithm is. We are now going to ask about
the relation between algorithms and computer programs: In the course of the next few
chapters, we will ask these questions:
What are software and hardware, and how are they related?
How can a program written on paper be considered a different thing from the very same
program written on a floppy disk? What if the paper that the program was written on
was Hayess magic paper that was discussed in 9.4? But isnt that exactly what a
floppy disk is, at least, when it is being read by a computer?
Lets begin our discussion with an examination of James H. Moors theory of the
nature of software [Moor, 1978]. According to Moor, both computers and computer
programs can be understood on different levels: They can be understood as physical
objects, subject to the laws of physics, electronics, and so on; a computer disk
containing a program would be a clear example of this level. But they can also be
understood on a symbolic level: A computer can be considered as a calculating device,
and a computer program can be considered as a set of instructions; the text of the
computer program that is engraved on the disk would be a clear example of this level.
1 This case is discussed at length in [Colburn, 1999].
12.3. WHAT IS SOFTWARE AND ITS RELATION TO HARDWARE? 491
So far, we merely have a restatement of the dual nature. But the larger point
is that, for very many phenomena, a single entity can be viewed from multiple
perspectives or stances: The philosopher Daniel C. Dennett has suggested that a
chess-playing computer or its computer program can be understood in three different
ways [Dennett, 1971]:
physically:
From the physical stance, its behavior can be predicted or explained on the basis
of its physical construction together with physical laws. Thus, we might say that
it made (or failed to make) a certain move because its logic gates numbered 5, 7,
and 8 were open, or because transistor #41 was broken.
semantically:
From the design stance, its behavior can be predicted or explained on the
basis of information or assumptions about how it was designed or how it is
expected to behave, assuming that it was designed to behave that way and isnt
malfunctioning. Thus, we might say that it made (or failed to make) a certain
move because line #73 of its program has an if-then-else statement with an
infinite loop.
intentionally:
From the intentional stance, its behavior can be predicted or explained on the
basis of the language of folk psychology: ordinary peoples informal (and not
necessarily scientific) theories of why people behave the way they do, expressed
in the language of beliefs, desires, and intentions. For instance, I might explain
your behavior by saying that (a) you desired a piece of chocolate, (b) you
believed that someone would give you chocolate if you asked them for it, so
(c) you formed the intention of asking me for some chocolate. Similarly, we
might say that the chess-playing computer made a certain move because (a) it
desired to put my king in check, (b) it believed that moving its knight to a certain
square would put my king in check, and so (c) it formed the intention of moving
its knight to that position.
Each of these stances has different advantages for dealing with the chess-playing
computer: If the computer is physically broken, then the physical stance can help us
repair it. If the computer is playing poorly, then the design stance can help us debug
its program. If I am playing chess against the computer, then the intentional stance can
help me figure out a way to beat it.
Moor offers a definition of computer program that is neutral with respect to the
software-hardware duality:
Definition 1:
Let C be a computer.
Let P be a set of instructions.
Then P is a computer program for C =de f
Definition 2:
Let C be a computer.
Let P be a set of instructions.
Let A be an activity.
Then P is a computer program for C to do A =de f
Definition 2 makes the activity A a bit more perspicuous. We looked at the role of an
algorithms purpose in Ch. 7. But, for now, it might be easier to focus on Definition 1.
On that definition, being a computer program is not simply a property of some
set of instructions. Rather, it is a binary relation between a set of instructions and a
computer.2 A set of instructions that is a computer program for one computer might
not be a computer program for a different computer, perhaps because the second one
lacks an effective procedure for knowing how to follow it.
For instance, the Microsoft Word program that is written for an iMac computer
running MacOSX differs from the Microsoft Word program that is written for a PC
running Windows, because the underlying computers use different operating systems
and different machine languages. This would be so even if the two programs look
and feel (that is, what the user sees on the screen and how the user interacts with the
program) were identical.
There are several questions we can ask about this definition:
I just want to focus on the role of the computer, which is why were just going to consider Definition 1.
12.3. WHAT IS SOFTWARE AND ITS RELATION TO HARDWARE? 493
sense to say that the rules of grammar merely describe our linguistic behavior?
Note, however, that a computer programmed to understand and generate natural
language might, in fact, speak and write by explicitly following rules of grammar
that are encoded in its suite of natural-language-processing programs. We have
also seen a similar question when we considered whether the solar system
follows Keplers laws of planetary motion or whether the planets movements
are merely best described by Keplers laws (9.7.2). It might be useful to have a
neutral term for what it is that a computer does when it is doing its processing,
whether it is a Turing machine or a universal Turing machine; perhaps execute
could be used for this purpose. So, we could say that a Turing machine executes
the instructions in its machine table, but doesnt follow them, whereas a universal
Turing machine executes the fetch-execute cycle and thereby follows the program
encoded on its tape.
Is the set of instructions physical, that is, hardwired? Or are the instructions
written in some language? (Could they be drawn, instead, perhaps as a
flowchart? Could they be spoken?) Here, Moors answer seems to be that
it doesnt matter, as long as there is a way for the computer to interpret
the instructions and thus carry them out. Importantly, the way that the
computer interprets the instructions must itself be a computable function (it
must be effective). Otherwise, it might require some kind of built-in, non-
computable method of understanding what it is doing.
Begin Digression
HERE, DISCUSS INTEPRETATION VS COMPILATION OF PROGRAMS,
JUST FOR CLARIFICATION THAT THIS IS *NOT* WHAT I MEAN BY
INTERPRETATION.
End Digression
Moors next distinction is between software and hardware. The informal and
traditional distinction is that a computer program is software and a computer is
hardware. But this raises the problem of whether the hardwiring in a hardwired
computer is hardware (because it involves physical wires) or software (because it is
494 CHAPTER 12. SOFTWARE VS. HARDWARE
the computers program). And, of course, it gives rise to the problem mentioned by
Wallich at the beginning of this chapter. So, Moor suggests a better set of definitions:
For a given person and computer system the software will be those
programs which can be run on the computer system and which contain
instructions the person can change, and the hardware will be that part of
the computer system which is not software [Moor, 1978, 215].
In line with this, [Vahid, 2003, 27, my boldface, original italics] notes that, in the
early days of computing, the frequently changing programs, or software, became
distinguished from the unchaning hardware on which they ran.
Again, lets make this a bit more precise:
Definition 3:
Let C be a computer.
Let P be a person, perhaps Cs programmer.3
Let S be some entity (possibly a part of C).
Then S is software for computer C and person P =de f
1. S is a computer program for C,4 and
2. S is changeable by P.
and H is hardware for C and P =de f
1. H is (a physical) part of C, and
2. H is not software for C and P.
Note that being software is a ternary relation among three entities: a computer
program, a programmer, and a computer;5 it is not a simple property such that
something either is, or else it isnt, software. In other words, software is in the eye
of the beholder: One persons software might be anothers hardware!
And a physical part of a computer will be hardware for a programmer and that
computer if either it is not a computer program for that computer or it is not changeable
by that programmer.
That seems to allow for the following possibility: Suppose that there is a computer
program PJava written in Java that runs on my computer. Even if PJava is changeable
by the programmer who wrote it or the lab technician who operates the computerand
therefore software for that personit will be hardware for me if I dont know Java or
dont have access to the program so that I could change it.
So, if a programmer can rewire a computer, then that computers program is
software, even if it is physical.
in the sense that anything doable in hardware is doable in software, and vice versa.
How does this relate to Moors definition?
brains, but only minds (which is the view called idealism, associated primarily with
the philosopher George Berkeley) or else only brains (the view called materialism).
Similarly, one might hold that either software is abstract or else it is concrete, but it
cannot be both. No matter how strong the arguments for, say, materialism might be as
the best answer so far to the mind-body problem, monism as a solution to the software-
hardware problem fails to account for its dual nature (according to Colburn).
So lets consider dualism. In the mind-body problem, there are several versions
of dualism (the view that there are both minds and brains). They differ in how they
explain the relationship between minds and brains. The most famous version is called
interactionism, due to Descartes. This says that (1) there are minds (things that think,
but are not physical, and that obey only psychological laws), and (2) there are brains
(things that are physically extended in space and that obey only physical and biological
laws), and (3) minds and brains interact. The problem for interactionism as a solution
to the mind-body problem is that there is no good explanation of how they interact.
After all, one is physical and the other isnt. So you cant give a physical explanation
of how they would interact, because the laws of physics dont apply to the mind. And
you cant give a psychological explanation of how they interact, because the laws of
psychology dont apply to the brain. Similarly, according to Colburn, when applied
to the software-hardware problem, an interactionist perspective fails to account for the
relation between abstractions and concrete things, presumably because the relations
themselves are either abstract, in which case they dont apply to concrete things, or
they are concrete and, so, dont apply to abstractions. (There is, however, a possible
way out, which we will explore in depth in Ch. 14, namely, perhaps the relationship
between them is one of implementation, or semantic interpretation, along the lines of
Subers theory.)
There is another version of dualism, called the dual-aspect theory, due to Spinoza.
Here, instead of saying that there are two different kinds of substance, mental
substance and physical substance, it is said that there is a single, more fundamental
kind of substance of which minds and brains are two different aspects. (For Spinoza,
this more fundamental substance, which he believed had more than just two aspects,
though we humans are only cognizant of those two, was nature, which he identified
with God.) As a solution to the software-hardware problem, Colburn points out that
we would need some way to characterize that more fundamental underlying substance,
and he doesnt think that any is forthcoming. Again, however, an alternative possibility
is to think of how a single abstraction can have multiple implementations.
Finally, another dualism is known as parallelism: There are minds, and there
are brains; they are not identical (hence this is a dualistic theory), but they operate
in parallel, and so there is no puzzle about interaction. There are two versions of
parallelism. One, called occasionalism, says that God makes sure that every mental
event corresponds to a parallel brain event (this keeps God awfully busy on very small
matters!). Another, called pre-established harmony, says that God set things up so that
minds and their brains work in parallel, much in the way that two clocks can keep
the same time, even though neither causally influences the other. For Colburn, this
would mean that a concrete or hardwired program would behave the same way as an
abstract or textual program CHECK THIS. It is also consistent with my view that a
single abstraction can have two parallel implementations.
12.3. WHAT IS SOFTWARE AND ITS RELATION TO HARDWARE? 497
begin
x := 5;
while x > 0 do
x := x 1;
end
different things (think of actors like Richard Burton, Laurence Olivier, etc.),
such as different sets, Arabic numerals, etc. In that case, the number-numeral
relationship is also many-many.
2. Turings work clearly showed the extensive interchangeability of
hardware and software in computing. [Hartmanis, 1993, 11]
3. In a Turing machine, is its machine table software, or hardware? Its certainly
hardwired. If you think that it is a kind of category mistake to talk about whether
an abstract, mathematical entity such as a Turing machine can have software or
hardware, then consider this: Suppose you have a hardwired, single-purpose,
physical computer that (lets say) does nothing but accept two integers as input
and produces their sum as output. (This would be a physical implementation of
a Turing machine.) Is the program that runs this adder software or hardware? I
would say that its hardware.
In a universal Turing machine, is its machine table (which is (a description of?)
its fetch-execute cycle) software, or hardware? And what about the program that
is stored on its tape? Again, if you prefer to limit the discussion to physical
computers, then consider this: Suppose that you have a smartphone, one of
whose apps is a calculator that also can add two integers (but, not only can
the calculator do other mathematical operations, the smartphone itself can do
many other things (play music, take pictures, make phone calls, etc.), and it
can download new apps that will allow it to do many other things. (This would
be a physical implementation of a universal Turing machine.) Is the program
that runs the smartphones adder (calculator) software? And is the program that
allows the smartphone to do all of the above hardware? Id say that the program
that is stored on the Turing machines tape (for example, the smartphones
calculator app) is software; therefore, the universal Turing machines machine
table (for example, the smartphones CPU) is hardware; and, therefore, the
Turing machines machine table (for example, the adders program) is also
hardware.
4. On claims that hardware and software are logically equivalent:
Similar or analogous cases of such logical equivalence of distinct things are
Turing machines, the lambda-calculus, and recursive functions. Also, such
an equivalent-but-different situation corresponds to the intensional-extensional
distinction: Two intensionally distinct things can be extensionally identical.
5. On Moors definitions of software and hardware:
I cant modify a Java program, because I dont know Java. Is a Java program
therefore hardware for me? Suppose Pat cant modify the Java program, even
though Pat is a Java programmer (perhaps Pat has no access to the source code).
Is that Java program hardware for Pat? These are probably different senses of
cant.
6. On Subers definitions:
How (if at all) does Subers position relate to Searles [Searle, 1990] claim that
anything can be considered to be a computer, even the wall behind me.
500 CHAPTER 12. SOFTWARE VS. HARDWARE
12. On the idea that some kinds of software, in particular, computer programs (and
the activity of programming) are mathematical in nature, see [Dijkstra, 1974,
Scherlis and Scott, 1983, Hoare, 1986]. Hoare, for example, says that computer
programs are mathematical expressions (p. 115). This suggests that (at
least some kinds of) software are abstract, mathematical entities (or linguistic
expressions thereof, perhaps more along the lines of numerals than of numbers).
13. [Vahid, 2003, 27, 31, 32] suggests that the processors, memories, and buses
what we previously considered a systems unchangeable hardwarecan actually
be quite soft (p. 32). What he seems to mean by this is that embedded
systemshidden computing systems [that] drive the electronic products around
us (p. 27)can be swapped for others in the larger systems that they are
components of, thus becoming changeable in much the way that software is
normally considered to be. But this seems to me to just be the same as the old
rewiring of the early days of programming (except that, instead of changing the
wires or switches, it is entire, but miniaturized, computers that are changed).
14. In an unpublished talk given to the Center for Cognitive Science at SUNY
Buffalo (21 September 2005), Amnon H. Eden offers three ways to think about
what a computer program is. The first is as a mathematical expression (citing
the work of C.A.R. Hoare). This is consistent with the view mentioned elsewhere
in this chapter of a program being like a numeral, where an algorithm is like
a number. But it is a bit different, I think; here, the idea is that programs
themselves are mathematical objects capable of being studied mathematically.
We will return to this theme in Chapter 16.
The second way is as a natural kind (see 3.4). Computer programs exist, so
we should study them as we find them in nature, so to speak. We can try to
6 Thanks to James Geller for this idea.
12.4. NOTES FOR NEXT DRAFT 503
categorize them, identify their properties, determine there relative merits, and so
on.
The third way is as an engineered artefact. Whereas the study of programs
as natural kinds is more or less descriptive, the study of them as engineered
artifacts is normative: We should try to specify ways in which programs can
be designed so as to be more efficient, more reliable, etc.
Finally, Eden offers a fourth way: as a cognitive artefact: Software is conceived
and designed at a level of abstraction higher than the programming language.
interpretations?: One pianists version of, say, Bachs Goldberg Variations will
sound very different from anothers, yet, presumably, they are using the same
software. Are there analogies to these with respect to software? (In addition,
problems about small changes in software seem analogous to issues of personal
identity through time.)
[Irmak, 2012, 68] says, the idea that software and musical works are created
is. . . central to our beliefs. Perhaps, but here there are similarities with issues
in the philosophy of mathematics: Are theorems or proofs similarly created?
Or should we take a mathematically Platonic attitude towards all of these kinds
of things, and revise our manifest image view that they are created to a more
scientific image view that they are discovered? Mendelssohn (or Mill?) is
alleged to have been depressed when he learned that there were only a finite
number of possible combinations of notes, hence only a finite number of possible
musical compositions.
For more on the relationships between software and improvisational music, see
10.5.2.
18. [H]ardware is at least tangible. Software by contrast is elusively
intangible. In essence, it is the behavior of the machines when
running. It is what converts their architecture to action. . . .
[Mahoney and Haigh (ed.), 2011, 33].
On this view, programs (as texts) are part of the hardware; it is the process that is
the software. Whether or not one wants to draw the boundary there, it does point
out the different role of process from both computer and program. As a historian,
Mahoney is also concerned with the fact that processes are ephemeral: They
leave no record, and are difficult, if not impossible, to repeat (legacy software
can only be run on machines that no longer exist).
19. Possible discussion question for end of chapter exercise:
Is the machine table of a Turing machine software or hardware? It is certainly
hardwired, at least in the sense that it is unchangeable: It is, after all,
definitional of that Turing machine, that is, an essential property of it.
21. Not sure where to put this, but possibly relevant to Subers notion that anything
can be considered to be software:
The presentation in [Denning and Martell, 2015, 40, Fig. 3.3] of Shannons
theory of the communication of information suggests that the encoding of a
message is communicated along a channel to be decoded by a receiver. This
is very similar to the idea of input being converted into output. Of special
interest is the idea that noise is any disruption that alters the signal. Wouldnt a
computation performed on an input signal alter it? In that case, one could either
consider such a computation to be noise, or one could consider noise to be a
computation.
506 CHAPTER 12. SOFTWARE VS. HARDWARE
Eden, Amnon H.; & Turner, Raymond (2007), Problems in the Ontology of Computer
Programs, Applied Ontology 2(1): 1336.
Argues that technical artefacts are physical structures with functional properties
509
510 CHAPTER 13. COPYRIGHT VS. PATENT
13.2 Introduction
We are trying to understand what algorithms, computer programs, and software are,
and how they are related to each other. One way to approach these questions is by
considering the legal issues of whether any of them can be copyrighted or patented.
(There is also a legal notion of trade-secret protection, which we will not explore.)1
One of the first questions is what kind of entity might be copyrighted or patented:
algorithms?
(These seem to be abstract, mathematical entities. Can abstract, mathematical
entitiessuch as numbers, formulas, theorems, proofs, etc.be copyrighted or
patented?)
computer programs?
(These seem to be implementations of algorithms, expressed in a programming
language. We have seen that programs might be analogous to numerals (as
opposed to numbers)can numerals be copyrighted or patented?)
software?
(Software might be a neutral term covering both algorithms and programs, or
software might be a more controversial entity not necessarily indistinguishable
from certain kinds of hardware, as we saw in the previous chapter.)
Here are some excerpts from the legal definitions. The full sources are: Copyright
Basics, accessed 5 August 2014 from: http://www.copyright.gov/circs/circ01.pdf
and United States Patent and Trademark Office, accessed 5 August 2014 from
http://www.uspto.gov/patents/index.jsp
Note what is said about computer programs, procedures, methods, and processes!
Copyright:
Copyright is a form of protection provided by the laws of the United States (title 17,
U.S.Code) to the authors of original works of authorship, including literary, dramatic,
musical, artistic, and certain other intellectual works. . . . [T]the owner of copyright [has]
the exclusive right to do and to authorize others to do the following:
1 But see the Further Readings for essays dealing with trade secrets, especially Bender 1985-1986, and
Bond 2005.
13.2. INTRODUCTION 513
1. literary works
2. musical works, including any accompanying words
3. dramatic works, including any accompanying music
4. pantomimes and choreographic works
5. pictorial, graphic, and sculptural works
6. motion pictures and other audiovisual works
7. sound recordings
8. architectural works
These categories should be viewed broadly. For example, computer programs and most
compilations may be registered as literary works; maps and architectural plans may be
registered as pictorial, graphic, and sculptural works.
works that have not been fixed in a tangible form of expression (for example,
choreographic works that have not been notated or recorded, or improvisational
speeches or performances that have not been written or recorded)
titles, names, short phrases, and slogans; familiar symbols or designs; mere
variations of typographic ornamentation, lettering, or coloring; mere listings of
ingredients or contents
ideas, procedures, methods, systems, processes, concepts, principles, discoveries,
or devices, as distinguished from a description, explanation, or illustration
works consisting entirely of information that is common property and containing
no original authorship (for example: standard calendars, height and weight charts,
tape measures and rulers, and lists or tables taken from public documents or other
common sources)
514 CHAPTER 13. COPYRIGHT VS. PATENT
Patents:
A patent is an intellectual property right granted by the Government of the United States
of America to an inventor to exclude others from making, using, offering for sale, or
selling the invention throughout the United States or importing the invention into the
United States for a limited time in exchange for public disclosure of the invention when
the patent is granted.
There are three types of patents. Utility patents may be granted to anyone who invents
or discovers any new and useful process, machine, article of manufacture, or composition
of matter, or any new and useful improvement thereof. . . . Design patents may be
granted to anyone who invents a new, original, and ornamental design for an article of
manufacture. Plant patents may be granted to anyone who invents or discovers and
asexually reproduces any distinct and new variety of plant.
13.4 Copyright
What does it mean to copyright something? For a person to copyright a text is to give
that person the legal right to make copieshence the term copyrightof that text for
the purpose of protecting the expression of ideas. An idea cannot be copyrighted; only
the expression of an idea can be copyrighted. Ideas are abstract, perhaps in the way that
algorithms are abstract. But if you express that idea in languageif you implement
it in languagethen the expression of that idea in that language can be copyrighted,
perhaps in the way that a computer program that implements an algorithm might be
copyrightable.
Consider [Mooers, 1975, 50] on the distinction between an uncopyrightable idea
and a copyrightable expression of an idea:
Where does the expression leave off, and the idea take over? The
best insight into this matter comes from discussions of copyright as applied
to novels and dramatic productions. In these, expression is considered
to include the choice of incident, the personalities and development of
character, the choice of names, the elaboration of the plot, the choice of
locale, and the many other minor details and gimmicks used to build the
story. In other words, expression is considered to include not only the
marks, words, sentences, and so on in the work, but also all these other
details or structures as they aggregate into larger and larger units to make
up the expression of the entire story.
In other words, after the bare abstract idea has been chosen (e.g.,
boy meets girl, boy loses girl, boy wins girl), the expression to which
copyright applies covers the remaining elements of original choice and
artistry which are supplied by the author in order for him [sic] to develop,
express, and convey his version of the bare idea.
Recall FROM SOME EARLIER CHAPTER ON SYN VS SEM our picture of two
domains: the world and our description of the world in some language. The former is
516 CHAPTER 13. COPYRIGHT VS. PATENT
the realm of a semantic interpretation of the latter, which is the realm of syntax. Perhaps
copyright is something that applies only to the realm of syntax, whereas patents are
things that apply only to entities in the world.
Algorithms, construed abstractly, seem more like ideas than like expressions,
which would suggest that they cannot be copyrighted. On this view, it would be a
computer programa text written in some languagethat would be copyrightable.
Programs are definitely expressions: They are non-dramatic literary works. Why
literary? After all, they dont seem to read like novels! (But see the references cited
at the end of Ch. 7 on literate computing.) But all that literary means in this context
is that they can be written and read. Moreover, programs can be performed, that is,
executed, just like lectures, plays, or movies.
On the other hand, there is an entity that is even more abstract than an algorithm,
and with respect to which it is the algorithm that appears to be a detailed expression,
namely, the function that the algorithm computes. So, one could argue that it is a
function that is more like a bare abstract idea (boy meets girl, etc.) and that it is an
algorithmwhich would have to specify how the boy meets the girl, etc.that is more
like an expression (in this case, an expression of a function). On this view, it is the
algorithm that would be copyrightable!
So, here are two problems to consider:
Problem #1
Consider the input-output behavior of a program-being-executed (a process;
see 3.7). That is, consider how the process looks and feels to a user. A
clever programmer could create a new algorithm (or recreate an old one) and
then implement a new program that will have the same look and feel. Should
that new program be separably copyrightable?
Consider two computer designcompanies; call them Pear Computers and
Macrohard. Pear Computers might write an operating system with windows,
icons, and a mouse. Macrohard, seeing how this operating system works,
might write their own operating system that also uses windows, icons, and a
mouse and that would have the same (or almost the same) functionality and the
same (or almost the same) look and feel, but it would be a different expression
of that same (or almost the same) idea, hence separably copyrightable. Or would
it?3
Problem #2
It is part of copyright law that you cannot copyright an article of utility; thats
something that can only be patented.
IS THAT RIGHT? NEED TO FIND SOURCE OF QUOTE
But surely an executable program is useful; that is, it is an article of utility.
3 This is not far from the actual situation that allegedly existed between the Xerox Palo Alto Research
Center and Apple Computer, on the one hand, and (later) between Apple and Microsoft, on the other. The
story is that Apple borrowed or was inspired by Xerox PARCs creation of the graphical user interface and
used it for its Mac OS, and that Microsoft borrowed or was inspired by Apples version and used it for
Windows. See [Fisher, 1989], [Samuelson et al., 1994, 23342335], [Gladwell, 2011], and
http://en.wikipedia.org/wiki/Apple Computer, Inc. v. Microsoft Corp. (accessed 8 February 2014).
13.5. PATENT 517
13.5 Patent
Patents are weird: Not just anything can be patented, but lots of strange things can
be! (I have read patents for devices or techniques that claim to be based on carefully
developed scientific theories, but that I know, from personal experience, are not based
on any such thing, and I have read patents that claim to provide mechanisms for
completely solving problems that have not yet been solved, and may never besuch
as fully automatic, high-quality machine translation.)
The purposes of a patent are to foster invention and to promote the disclosure of
an invention. So, the inventors ideas must be made public. (Does that mean that they
have to be implemented?)
It follows that you cannot patent something that would inhibit invention, namely,
you cannot patent any of the following:
abstract ideas
mathematical processes
scientific principles
laws of nature (and yet genes have been patented!)
mental processes
But you can patent any new and useful process, machine, article of manufacture,
or composition of matter, or any new and useful improvement thereof (see the
definition of patent, above). Does process here include software?
Here are some problems to consider:
Each step of certain cognitive algorithms (such as those used in reasoning,
perception, or natural-language generation and understanding) are mental
processes. Does that mean that some algorithms cannot be patented, even
if others can? If so, how does one distinguish between these two kinds of
algorithms?
Lots of software are mathematical processes. Does this mean that some, but not
all, software cannot be patented?
If too much software is patented, that might impede invention, contrary to one of
the explicit purposes of patent law.
518 CHAPTER 13. COPYRIGHT VS. PATENT
The bottom line is that there are two intellectual tasks: A philosophical and
computer-scientific task is to devise good models (ontologies) of algorithms and
other computer-scientific items. This is a task that people like Amnon Eden, Barry
Smith, Brian Cantwell Smith, and Ray Turner are working on. (See [Smith, 1996,
Smith, 2002, Eden, 2007], CITE TURNER, CITE BARRY SMITH)
A legal task is to devise good legal structures to protect these computational items.
This is a task that people like David Koepsell and Pamela Samuelson investigate. (See
[Koepsell, 2000] and Samuelsons writings in the Further Sources of Information at
the end of this chapter.)
I close with a quotation from [Newell, 1986, 1035, my italics]:
I think fixing the models is an important intellectual task. It
will be difficult. The concepts that are being jumbled together
methods, processes, mental steps, abstraction, algorithms, procedures,
determinismramify throughout the social and economic fabric. . . . The
task is to get. . . new models. There is a fertile field to be plowed here, to
understand what models might work for the law. It is a job for lawyers
and, importantly, theoretical computer scientists. It could also use some
philosophers of computation, if we could ever grow some.
Readers of this book, take note!
520 CHAPTER 13. COPYRIGHT VS. PATENT
\item
Pollock, John L.\
(2008),
What Am I?
Virtual Machines and the Mind/Body Problem,
{\it Philosophy and Phenomenological Research\/}
76(2) (March): 237--309.
2. [Galbi, 1971] offers a useful history of computer patents. One point that becomes
clear from reading it is that the issue of whether software can or should be
13.7. NOTES FOR NEXT DRAFT 521
[The primary source of value in a program is its behavior, not its text.
[Samuelson et al., 1994, 2315]
Does this mean that its the idea, not its expression that counts? I dont
think so, simply because the behavior of a program is more than merely the
idea. (The idea might be more akin to the specifications, or the input-
output behavior.) But behavior here might be something akin to look and
feel. So, what to the authors mean, exactly, by behavior?
6. Third, programs are, in fact, machines (entities that bring about useful
results, i.e., behavior) that have been constructed in the medium of
text (source and object code). The engineering designs embodied
in programs could as easily be implemented in hardware as in
software, and the user would be unable to distinguish between the
two. [Samuelson et al., 1994, 2316]
But programs, even if engraved on a CD-ROM rather than merely inked on
paper, cant be executed without some kind of interpreting (and behaving (e.g.,
printing) machine. So, its not really the program by itself that can bring about
useful results, but the combination of program and intepreting/behavingin
short, executingdevice.
The second point in this quote about hardware and software, is, of course, the
point about the relation of a Turing machine to a universal Turing machine.
(Could there be a Turing test imitation game to disguish between these?!) I
think that this is a separate issue from the question about whether a program is a
machine.
This is clarified a bit later:
Not only do consumers not value the text that programmers write
(source code), they do not value any form of program text, not
even object code. Computer science has long observed that software
and hardware are interchangeable: Any behavior that can be
accomplished with one can alsob e accomplished with the other. In
principle, then, it would be possible for a puchaser of, say, a word
processor to get a piece of electronic hardware that plugged into her
computer, instead of a disk containing object code. When using
that word processor, the purchaser would be unable to determine
whether she was using the software or the hardware implementation.
[Samuelson et al., 1994, 2319]
a play. But that may be the wrong analogy. What about a moved on a DVD?
We cant read the DVD any more than we can read a CD-ROM (in both cases,
we need a machine to interpret them, to convert them to a humanly perceivable
form). Or even a movie on film: We dont typically look at the individual frames;
we need them projected at a certain speed.
But the same is true for a program, whether written in ink on paper, as source
code entered into a computer, or as object code after compilation: It still takes
a physical machine to do what the program tells it to do. The physical
machine translates or associates parts of the program text (however inscribed)
with switch settings in the computer. Once those switches are set in accordance
with the program, the computerthe physical machinewill perform the task.
the computer that behaves, that does something, that performs a task. And it
does so in virtue of its program. But the program by itself is static, not dynamic.
What tasks to programmed computers perform? A Turing machine can print,
erase, and move; and it can do anything else that can be decomposed into those
primitive actions. More sophisticated computers can, of course, do many other
things, though, at bottom, all theyre doing are forms of printing, erasing,
and moving (such as printing certain pixels on a screen)
10. Behavior is not a secondary by-product of a program, but rather an
essential part of what programs are. To put the point starkly: No
one would want to buy a program that did not behave, i.e., that did
nothing, no matter how elegant the source code prose expressing
that nothing. [Samuelson et al., 1994, 2317]
I suspect that Samuelson et al. are using program not to refer to text but to a
product intended to be installed in a computer and executed. For mathematically
speaking, there can certainly be programs that have no output (but see 7.5.
This becomes clearer later, when they point out that:
People pay substantial sums of money for a program not because
they have any intrinsic interest in what its text says, but because
they value what it does. . . (its behavior). The primary proof that
consumers buy behavior, rather than text, is that in acquiring a
program, they almost never get a readable instance of the program
text. [Samuelson et al., 1994, 2318]
11. Hence, every sensible program behaves. This is true even though the
program has neither a user interface nor any other behavior evident to
the user. [Samuelson et al., 1994, 2317]
In a footnote, they define user interface as the means by which the user and the
program interact to produce the behavior that will accomplish the users tasks.
A sensible program (by which I will now understand the program-as-product
that I described above) with no user interface might be akin to a Turing machine
that simply computes with no input other than what is pre-printed on its tape.
Having a user interface would seem to turn a sensible program into an
Wegnerian interactive program or an o-machine.
12. Two programs with different texts [such as Microsofts Excel
and Apples Numbers, to use a contemporary example] can have
completely equivalent behavior. A second comer can develop
a program having idential behavior, but completely different text
through. . . black box testing. This involves having a programmer
run the program through a variety of situations, with different inputs,
making careful motes about its behavior. A second programmer
can use this description to develop a new program that produces
the specified behavior (i.e., functionally identical to the firsomething
program) without having access to the text of the first program, let
13.7. NOTES FOR NEXT DRAFT 525
Program text is, thus, like steel and plastic, a medium in which other
works can be created. A device built in the medium of steel or plastic,
if sufficiently novel, is patentable; an original sculpture built of steel
or plastic is copyrightable. In these cases, we understand quite well
that the medium in which the work is made does not determine the
character of the creation. The same principle applies to software. The
526 CHAPTER 13. COPYRIGHT VS. PATENT
This suggests that patent is more appropriate than copyright. But what about a
program whose sole purpose is to produce an image on a screen, like a painting
or a film? Wouldnt copyright be more appropriate then? Still, the point remains
that its the behavior of the program (when executed by a machine! that is more
important than the text.
(a) Patent law requires an inventive advance ofver the prior art
(b) But the innovations in functional program behavior, user interfaces, and
the industrial design of programs. . . are typically of an incremental sort.
(d) a patent could be given for one method of producing a result, but that
would not prevent the use of another method.
(e) If it is the result, not the method, that is the principal source of value of
a program, then the patent on the one method would not protect the result
produced by the other method
Their argument against the appropriateness of copyright law boils down to this
[Samuelson et al., 1994, 2350]:
(a) computer programs are machines whose medium of construction is text
(b) Copyright law does not protect the behavior of physical machines (nor
their internal construction)
Terrific question. Two things. First of all, under the copyright law,
permission is required and royalties may be charged for a public
performance even if no admission is charged. If you read a play
with friends in your living room, that is probably not public, but
if you do it anywhere else and people come to see it, even just
people you know, with no admission charge, I consider that a public
performance, requiring authors permission. The legal basis for the
permission requirement is in the Copyright Act (Section 106), which
gives the Copyright Owner the exclusive right to do and authorize
any of the following: . . . (4) in the case of literary, musical, dramatic
and choreographic works, pantomines, and motion pictures and other
audiovisual works, to perform the copyrighted work publicly.
Section 117 relates to Limitations on exclusive rights; Computer
programs.
I hope this is helpful.
20. Abstract ideas are not patentable subject matter. In order to prevent
abstract ideas from being indirectly patented, there are exceptions
in the law that will not allow patenting an invention made of
printed text based on the content of the text. The implication of
Godel. . . [numbering] is that the symbols that represent an abstract
13.7. NOTES FOR NEXT DRAFT 529
idea need not be printed text. The symbols can be something abstract
like exponents of prime numbers. They can be something physical
like electromagnetic signals or photonic signals. . . . Does the law
exempt abstract ideas from patenting only when they are written in
text or does it exempt all physical representations? [PolR, 2009,
Symbols and Reducibility]
This seems to be another version of the paradox that this chapter opened with.
Heres another:
Now consider the Church-Turing thesis that computer programs
are the same thing as recursive functions. . . . Would this be of
consequence to the patentability of software? Developing a computer
program that fulfills a specific purpose is mathematically the same
thing as finding a number that has some specific properties. Can you
patent the discovery of a number?
Another way to look at it is that there is a list of all the possible
programs. We can make one by listing all possible programs in
alphabetic order. Any program that one may write is sitting in this list
waiting to be written. In such a case, could a program be considered
an invention in the sense of patent law? Or is it a discovery because
the program is a preexisting mathematical abstraction that is merely
discovered?
This idea that programs are enumerable numbers is supported by
the hardware architecture of computers. Programs are bits in memory.
Strings of 0s and 1s are numbers written in binary notations. Every
program reads as a number when the bits are read in this manner.
Programming a computer amounts to discovering a number that suits
the programmers purpose. [PolR, 2009, Enumerability]
21. Related to an issue that [Samuelson et al., 1994] raised (see above, somewhere),
[PolR, 2009, A Universal Algorithm] notes that if
I am sued for infringement on a software patent[,] I may try
defending myself arguing I did not implement the method that is
covered by the patent. I implemented the lambda-calculus algorithm
which is not covered by the patent. And even if it did, lambda-
calculus is old. There is prior art. What happens to software patents
then?
Anyone that argues in favor of method patents on software must
be aware that the current state of technology permits this possibility.
22. On [Samuelson et al., 1994]s suggestion that it is the virtual machine that should
be legally protected (whether by copyright, patent, or something sui generis),
compare this:
For example consider this sentence from In re Alappat:[4 ]
4 See http://digital-law-online.info/cases/31PQ2D1545.htm
530 CHAPTER 13. COPYRIGHT VS. PATENT
Petroski, Henry (2008), Twists, Tags and Ties, American Scientist 96(3) (May-
June): 188192.
On the role of implementation: As with any well-written patent, in the one
granted to McHenry he is careful not to restrict his invention to only one
embodiment. . . (p. 192).
Samuelson, Pamela (1988), Is Copyright Law Steering the Right Course?,
IEEE Software (September): 7886.
An excellent overview of the copyright-vs.-patent dispute, arguing in favor of
patent protection for software.
Samuelson, Pamela (1991), Digital Media and the Law, Communications of the
ACM 34(10) (October): 2328.
Six characteristics of digital media seem likely to bring about significant
changes in the law: ease of replication, ease of transmission and multiple
use, plasticity (related to Moors 12.3.1 notion of softwares changeability),
equivalence of works in digital form (referring to the fact that, when digitized,
different kinds of copyrightable works all get implemented in the same
medium), compactness (digitized works take up little space, hence are more
prone to theft), and nonlinearity (due to the availability of hyperlinks, for
instance).
Samuelson, Pamela (2003), Unsolicited Communications as Trespass?,
Communications of the ACM 46(10) (October): 1520.
Accessed 9 November 2012 from:
http://people.ischool.berkeley.edu/pam/papers/acm vol46 p15.pdf
Abstract: Attempting to stretch existing laws to address previously
unforeseen technological issues.
Samuelson, Pamela (2007), Software Patents and the Metaphysics of
Section 271(f), Communications of the ACM 50(6) (June): 1519.
Accessed 24 September 2014 from:
https://www.law.berkeley.edu/php-
programs/faculty/facultyPubsPDF.php?facID=346&pubID=187
Microsoft argues that neither the intangible sequence of ones and zeros of
the object code, nor the master disks onto which the ogject code has been
loaded, should be considered a component of a patented invention. . . . Only
when object code has actually been installed on a. . . computer does it become
a physical component of a physica device. . . (pp.1516).
Samuelson, Pamela (2007), Does Copyright Law Need to Be Reformed?,
Communications of the ACM 50(10) (October): 1923.
Samuelson, Pamela (2008), Revisiting Patentable Subject Matter,
Communications of the ACM 51(7) (July): 2022.
Is everything under the sun made by humans patentable subject matter?
Samuelson, Pamela (2013), Is Software Patentable?, Communications of the
ACM 56(11) (November): 2325.
Accessed 26 September 2014 from:
https://www.law.berkeley.edu/php-
programs/faculty/facultyPubsPDF.php?facID=346&pubID=257
13.8. FURTHER SOURCES OF INFORMATION 533
Figure 13.3:
for serial machine mach.lang 1 serial parallel serial parallel
13.8. FURTHER SOURCES OF INFORMATION
-- -- -- ETC. -- -- --
What Is Implementation?
537
538 CHAPTER 14. WHAT IS IMPLEMENTATION?
14.2 Introduction
One concept that has repeatedly cropped up in our discussions is that of
implementation:
In Chapter 3 (3.8), we saw that [Denning et al., 1989, 12] said that computer
science studies (among other things) the implementation of algorithmic
processes.
In Chapter 5 (5.5), we read that [Loui, 1987] said that computer science
is, among other things, the software- and hardware-implementation of
algorithms.
In Chapter 9 (9.3.5), we saw [Searle, 1990] saying that the wall behind
my back is right now implementing the Wordstar program, and we
talked about physical implementations of Turing machines and human
cognition. . . implemented by neuron firings.
In Chapter 10 (10.5.2), we discussed implement[ing] a plan [by] copy[ing] an
abstract design into reality.
In Chapter 12, we talked about programs implementing algorithms and the
idea of there being multiple implementations.
And in Chapter 13, we looked at how copyright only applies to
implementations of ideas in language, and we considered the possibility of
there being implementations of implementations.
In computer science, we talk about algorithms implementing functions, about
computer programs implementing algorithms, about data structures implementing
abstract data types, and about computers implementing Turing machines. So, what
is an implementation?
In this chapter, we will look at two theories about the nature of implementation.
One, due to David Chalmers, was designed to reply to [Searle, 1990]. The other will
illuminate the nature of the relation between syntax and semantics.
implemented, or being realized, or doing the describing is, typically, an abstract thing
(or a linguistic description).)
That is, we need a theory of what implementation is. And one reason we need
such a theory is in order to refute [Searle, 1990]s claim that any given [physical]
system can be seen to implement any computation if interpreted appropriately
[Chalmers, 2011, I, my italics].
On the first version of Chalmerss theory of implementation, a physical system P
implements a computation C when the causal structure of P mirrors the formal
structure of C.
There are many aspects of this that need clarification:
What kind of physical system is P?
In this figure, the physical system P is represented by a set of dots, each of which
represents a physical state of P. These dots are partitioned into subsets of dots, that is,
subsets containing the physical states. Each subset represents a state-type, that is, a set
of states that are all of the same type. That takes care of part 1 of Chalmerss account.
The computation C is also represented by a set of dots. Here, each dot represents
one of Cs formal states. The arrows that point from the dots in C (that is, from Cs
formal states) to the subsets of dots in P (that is, to the state-types in P) represent the
11 map from C to P. To make it a 11 map, each formal state of C must map to a
distinct physical state-type of P.1 That takes care of part 2 of Chalmerss account.
The arrows in set C represent the abstract state-transition relation between Cs
formal states. And the arrows in set P between Ps subsets represent the causal
state-transition relation between Ps state-types. Finally, because Cs formal states are
mapped onto Ps physical state-types, the 11 map is a bijection. Chalmers also says
that Cs abstract state-transition relations correspond to Ps causal state-transition
relations. I take it that this means that the 11 map is a homomorphism (that is, a
structure-preserving map).2 Because the map is also onto, it is an isomorphism.
(An isomorphism is a structure- or shape-preserving bijection.) So, P and C have the
same structure. That takes care of part 3 of Chalmerss account.
The only other clarifications that we need to make are that a state is formal if its
part of the abstractthat is, non-physicalcomputation C, and a state is causal if
its part of the physical system P: Here, formal just means abstract, and causal
just means physical.
We can then say that a physical system (or a physical process?) P implements
an abstract computation C (which might be a Turing machine, or a less-powerful
finite-state automaton,3 or a combinatorial-state automaton4 ) if and only if there
is a reliably causal5 isomorphism f : C P. Such an f is a relation between
an abstract, computational model and something in the real, physical, causal world.
This f is 11 and onto6 a structure-preserving homomorphism such that the abstract,
input-output and processing relations in C correspond to reliably causal processes in P.
It follows from this analysis that:
Every physical system implements some computation. That is, for every physical
system P, there is some computation C such that P implements C.
But not every physical system implements any given computation. That is, it is
1 More precisely, a function from set A to set B is 11 = 0
de f for any two members a, a of A, and for any
member b of B, if f (a) = f (a0 ), then a = a0 . In other words, a function is 11 if, whenever two of its outputs
are the same, then their inputs must have been the same. Yet another way to put it is this: A function is 11
if no two (distinct) objects in its domain have the same image in its range.
2 f is a homomorphism =
de f f (R(c1 , . . . , cn )) = f (R)( f (c1 ), . . . , f (cn )). That is, if the ci are related by
some relation R, and if that relationship is mapped by f , then the image of (R(c1 , . . . , cn ) will be the image
of R applied to the images of the ci . Thats what it means to preserve structure.
3 EXPLAIN WHAT THIS IS AND WHY ITS LESS POWERFUL
4 EXPLAIN
5 EXPLAIN
6 Really? Even if C is abstract? Typically, if C is abstract and P is physical, P will have more parts (will
be more detailed) than C. But if f is a bijection, then every part of P must map to some part of C, which
seems to violate the abstract-physical distinction. Perhaps, however, the parts of P that are due merely to its
being physical (that is, the implementation-dependent details) can be ignored.
542 CHAPTER 14. WHAT IS IMPLEMENTATION?
not the case that, for every P and for every C, P implements C. That is, there
is some P and there is some C such that P does not implement C. For example,
it is highly unlikely that the wall behind me implements Wordstar, because the
computation is too complex.
A given physical system can implement more than one computation. That is, for
any P, there might be two different computations C1 6= C2 such that P implements
C1 and P implements C2 . For example, my computer, right this minute as I type
this, is implementing the VI text-processing program, a clock, Powerpoint, and
several other computer programs.
2. rest(l), which returns a list consisting of all the original items except the first,
and
3. make-list(i, l) (or cons(i, l)), which recursively constructs a list by putting item i
at the beginning of list l.
14.4. IMPLEMENTATION AS SEMANTIC INTERPRETATION 543
(a) These are assumed to have no interpretation, no meaning, hence the term
marker. The racecar token in Monopoly isnt interpreted as a racecar
in the game; its just a token that happens to be racecar shaped, so as to
distinguish it from the token that is top-hat shaped. (And the top-hat token
isnt interpreted as a top hat in the game: Even if you think that it makes
sense for a racecar to travel around the Monopoly board, it makes no sense
for a top hat to do so!)
(b) Examples of such atomic symbols include the letters of an alphabet, or
(some of) the vocabulary of a language, or (possibly) neuron firings, or
even states of a computation.
(a) These rules might be spelling rules (if the atomic symbols are alphabet
letters), or grammar rules (if the atomic symbols are words), or bundles
of synchronous neuron firings (if the atomic symbols are single neuron
firings).
(b) If the molecular symbols are linear (1-dimensional), then they can be
thought of as strings (that is, sequences of atomic symbols), or words
(if the atomic symbols are letters), or sentences (if the atomic symbols
are words). If the molecular symbols are 2-dimensional, then they are
something called complexes.
The syntax of such a system is the study of the properties of the symbols of
the system and the relations among the symbols. Among these relations are the
grammatical relations, which specify which strings of symbols are well formed
(according to the rules of grammar), and the proof-theoretic (or logical) relations,
which specify which sequences of wffs are proofs of theorems (that is, which wffs are
derivable by means of the rules of inference).
Here is an analogy: Consider a new kind of monster/building-block toy system,
consisting of Lego blocks that can be used to construct Transformer monsters. (This
wouldnt be a very practical real toy, because things made out of Legos tend to fall
apart. Thats why this is a thought experiment, not a real one!) The basic Lego blocks
are the primitive symbols of this system. Transformer monsters that are built from
Legos are the wffs of the system. And the sequences of moves that transform the
monsters into trucks are the proofs of theorems.
Real examples of formal systems include propositional logic, first-order logic,
Douglas Hofstadters Mu system [Hofstadter, 1979], Subers S,7 and a system
discussed at http://www.cse.buffalo.edu/rapaport/Papers/book.ch2.pdf. (Parts of that
document will be included here as an appendix to this chapter.)
The important fact about a formal system and its syntax is that there is no mention
of truth, meaning, reference, or any other semantic notion.
The semantics of a formal system is the study of the relations between the
symbols of the system (on the one hand) and something else (on the other hand). The
something else might be what the symbols represent, or what they mean, or
what they refer to, or what they name, or what they describe. Or it might be
the world. If the formal system is a language, then semantics studies the relations
between, on the one hand, the words and sentences of the language and, on the other
hand, their meanings. If the formal system is a theory, then semantics studies the
relations between the symbols of the theory and the worldthe world that the theory
is a theory of .
Semantics, in general, requires three things:
it looks as if we can say that semantic domains implement syntactic domains. That
is, implementation is the relation of semantic interpretation.
Typically, implementations are physical realizations of abstractions. But
physical realizations are a special case, as shown by the example of a linked list that
implements a stack, both of which are abstract. So, what we really have is the following
relationship:
(student-record:
(name Lucy)
(student-number 12345)
(major computer-science)
(gpa 3.99)
)
This is merely a piece of syntax: a sequence of symbols. You and I reading it might
think that it represents a student named Lucy whose student number is 12345, whose
major is computer science, and whose GPA is 3.99. But as far as the computer
(program) is concerned, this record might just as well have looked like this:
(SR:
(g123 n456)
(g124 12345)
(g125 c569)
(g126 3.99)
)
As long as the program knows how to input new data, how to compute with these
data, and how to output the results in a humanly readable form, it really doesnt matter
what the data look like to us. That is, as long as the relationships among the symbols
are well specified, it doesnt matteras far as computing is concernedhow those
symbols are related to other symbols that might be meaningful to us. That is why it is
syntax.
Now, there are at least two ways in which this piece of syntax could be
implemented. One implementation, of course, is Lucy herself in the real world: A
14.4. IMPLEMENTATION AS SEMANTIC INTERPRETATION 547
person named Lucy, with student number 12345, who is majoring in computer science,
and who has a GPA of 3.99. This Lucy is an implementation of that data structure; she
is also a semantic interpretation of it.
Another implementation is the way in which that data structure is actually
represented in the computers machine language. That is, when the program containing
that data structure is compiled into a particular computers machine language, that data
structure will be represented in some other data structure expressed in that machine
language. That will actually be another piece of syntax. And that machine-language
syntax will be an implementation of our original data structure.
But when that machine-language program is being executed by the computer,
some region of the computers memory will be allocated to that data structure (to the
computers representation of Lucy, if you will), which will probably be an array of 0s
and 1s, that is, of bits in memory. These bits will be yet another implementation of
the original data structure, as well as an implementation of the machine-language data
structure.
Now, here is a question to think about: What is the relation between the human
(Lucy herself) and this region of the computers memory? Does the memory location
simulate Lucy? (Do bits simulate students?) Does the memory location implement
Lucy? (Do bits implement students?) Also: The 0s and 1s in memory can be thought
of as the 0s and 1s on a Turing-machine tape, and Lucy can be thought of as an
interpretation of that Turing-machine tape. Now, recall from 10.5.1 what Cleland said
about the difference between Turing-machine programs and mundane procedures: The
former can be understood independently of any real-world interpretation (that is, they
can be understood purely syntactically, to use the current terminology)understood
in the sense that we can describe the computation in purely 0/1 terms. (Can we?
Dont we at least have to interpret the 0s and 1s in terms of a machine-language
data structure, interpretable in turn in terms of a high-level programming-language data
structure, which is interpretable, in turn, in terms of the real-world Lucy?) Mundane
procedures, on the other hand, must be understood in terms of the real world (that is,
the causal world) that they are manipulating. (This is a good topic for class discussion!)
So, why do I think that implementation is semantic interpretation? The word
implement comes from a Latin word meaning to fill up, to complete, as in filling in
the details of an abstraction. And I have suggested the following:
I is an implementation of A in medium M
means:
I is a semantic interpretation of syntactic domain A in semantic
domain M.
548 CHAPTER 14. WHAT IS IMPLEMENTATION?
individuation:
the relation between the lowest level of a genus-species tree (such as dog
or human) and individual dogs or humans (for example, my cat Bella
individuates the species Felis catus).
instantiation:
the relation between a specific instance of something and the kind of thing that it
is (for example, the specific redness of my notebook cover is an instance of the
color red).
exemplification:
the relation between a (physical) object and a property that it has (for example,
Bertrand Russell exemplifies the property of being a philosopher).
reduction:
the relation between a higher-level object and the lower-level objects that it is
made of (for example, water is reducible to a molecule consisting of two atoms of
hydrogen and one atom of oxygen, or, perhaps, the emotion of anger is reducible
to a certain combination of neuron firings).
In [Rapaport, 1999] and [Rapaport, 2005b], I argue that each of these may be
implementations, but not vice versa, and that all of them are semantic interpretations.
14.5. NOTES FOR NEXT DRAFT 549
5. The ideas that Abstractions can implement other Abstractions and that there can
be continua of implementations is a consequence of what [Lycan, 1990, 78]
refers to as the relativity of implementation: He wants
to attack the dichotomies of software/hardware. . . . . . . my
objection is that software/hardware talk encourages the idea of
a bipartite Nature. . . as against reality, which is a multiple hierarchy
of levels of nature. . . . See Nature as hierarchically organized in
this way, and the function/structure distinction goes relative:
something is a role as opposed to an occupant, a functional state [that
is, an Abstraction, in my terms] as opposed to a realizer [that is, an
Implementation], or vice versa, only modulo a designated level of
nature.
6. The relationships among a chess game, a Civil War battle, and a computer
program whose input-output relationships can be interpreted as either of those
can be viewed as an implementation (chess game) that is abstracted (into a
computer program), which is then re-implemented as a Civil War battle. One
consequence of. . . [this] approach is that isomorphic models are equivalent. If
there is a one-to-one function from the domain of one model onto the domain of
another that preserves the relations of the model, then any sentence of the formal
language that is true in one model is true in the other. . . . [T]he best a formal
theory can do is to fix its interprettion up to isomorphism. Any model of the
theory can be changed into another model just by substituting elements of the
domain and renaming [Shapiro, 1996, 158159]. Here, models are just
7. Its surely worth mentioning somewhere that the problem of what
implementation is is closely related to the mind-body (or the mind-brain)
problem (very roughly, (how) is the mind implemented in the brain?). Also,
there is a wide literature in philosophy on realization (especially as related to
the mind-brain problem), which is only briefly touched on here and in the Further
Sources bibliography. For a nice discussion of this, see [Scheutz, 2001, 1]
8. Perhaps another great insight (see Ch. 7, 7.6)and one that Peter Denning
would probably applaud (Ch. 7, 35)is that the first three insights can be
implemented in matter. Alan Kay divides this insight into a triple whammy:
The core of computer science (Guzdials phrase). . .
. . . is all about the triple whammy of computing.
1 Matter can be made to remember, discriminate, decide and do
2 Matter can remember descriptions and interpret and act on them
3 Matte can hold and interpret and act on descriptions that describe
anything that matter can do.
He later suggests that the third item is the most powerful, followed
by the first, and then the second. He also suggests that issues about
the limits of computability and multiple realizability are implicit in these.
[Guzdial and Kay, 2010]
14.5. NOTES FOR NEXT DRAFT 551
Note that the triple whammy is closely related to Pat Hayess notion of magic
paper (9.4).
9. [Rescorla, 2013, 1, p. 682] usefully dubs Chalmerss view of implementation
structuralism about computational implementation. It is the fact that the
structure of the physical system matches (mirrors, in Chalmerss terms; more
precisely, is isomorphic to) the structure of the computational system that
matters. Although Rescorla agrees that such structural identity is necessary for a
physical system to implement a computation, he denies that it is sufficient. That
is, although any physical system that implements a computation must have the
same structure as the computation, there are (according to Rescorla) physical
systems that have the same structure as certain computations but that are not
implementations of them (1, p. 683). This is because semantic relations to the
social environment sometimes help determine whether a physical system realizes
a computation (Abstract, p. 681). The key word here is sometimes: On
my position, the implementation conditions for some but not all computational
models essentially involve semantic properties (2, p. 684). Thus, Rescorla
disagrees both with those such as [Ladyman, 2009] who hold to the semantic
view of computational implementation (the view that if a physical system
implements a computation. . . [then] the system has representational properties)
and with those such as [Chalmers, 1995] and [Piccinini, 2006a] who hold to the
non-semantic view (the view that semantics [n]ever informs computation
(2, p. 683).
To argue for this, Rescorla must provide a counterexample to the non-semantic
view (1, p. 684). That is, he must provide an example of a physical
implementation that requires a representational feature (that requires semantics).
It is not enough to find an implementation that merely has a semantics; there are
plenty of those, because a semantic interpretation can always be given to one. So
here is one example that he gives, a Scheme program for Euclids algorithm for
computing GCDs (4, p. 686):
(define (gcd a b)
(if (= b 0)
a
(gcd b (remainder a b))))
Rescorla points out that, To do that, the machine must represent numbers. Thus,
the Scheme program contains content-involving instructions. . . (4, p. 687).
A content-involving instruction is [one that] is specified, at least partly, in
semantic or representational terms (3, p. 685; he borrows this notion from
[Peacocke, 1995]). So, the Scheme program is specified in semantic terms
(specifically, it is specified in terms of integers). Therefore, if a physical system
is going to implement the program, that physical system must represent integers;
that is, it requires semantics. Hence, The Scheme program is a counter-example
to the non-semantic view of computational implementation (4, p. 687).
I can see that the machine does represent numbers (or can be interpreted as
representing them). But why does he say that it must represent them? I can even
see that for an agent to use such a physical computer to compute GCDs, the agent
must interpret the computer as representing numbers. But surely an agent could
use this computer, implementing this program, to print out interesting patterns
of uninterpreted symbols.
To respond to this kind of worry, Rescorla asks us to consider two copies of this
machine, calling them M10 and M13 . The former uses base-10 notation; the latter
uses base-13. When each is given the input pair (115, 20), each outputs 5.
But only the former computes the GCD of 115 and 20. (The latter was given
the integers 187 and 26 as inputs; but their GCD is 1.) So M10 implements the
program, but M13 does not; yet they are identical physical computers.
One possible response to this is that the semantics lies in the users interpretation
of the inputs and outputs, not in the physical machine. Thus, one could say
that the machines do both implement the program, but that it is the users
interpretation of the inputs, outputs, and that programs symbols that makes all
the difference. After all, consider the following Scheme program:
(define (MYSTERY a b)
(if (= b 0)
a
(MYSTERY b (remainder a b))))
The programs formal structure does not even begin to fix a unique
semantic interpretation. Implementing the program requires more
14.5. NOTES FOR NEXT DRAFT 553
I agree with the first sentence: We can interpret the MYSTERY program in
many ways. I disagree with the term requires in the second sentence: I would
say that implementing the program only requires instantiating the mirroring
causal structure. But I would go on to say that if one wanted to use the physical
implementation to compute GCDs, then one would, indeed, be required to do
something extra, namely, to provide a base-10 interpretation of the inputs and
outputs (and an interpretation of MYSTERY as GCD).
In fact, Rescorla agrees that the semantic interpretation of MYSTERY as GCD
is required: there is more to a program than meaningless signs. The signs have
an intended interpretation. . . (4, p. 689). But it is notoriously hard (some
would say impossible) to pin down what the intended interpretation of any
formal system is.
Further discussion of Rescorlas arguments would take us too far afield, but here
are some questions to consider: Are the inputs to the Euclidean GCD algorithm
numerals (like 10) or numbers (like 10 or 13)?9 What about the inputs to a
computer program written in Scheme that implements the Euclidean algorithm:
Are its inputs numerals or numbers? (It may help to consider this analogous
question: Is the input to a word-processing program the letter a or an electronic
signal or ASCII-code representing a?)
10. [Rescorla, 2012a, 12; italics in original] gives another example of semantic
computation, in the sense of a computation that requires numbers, not (merely)
numerals:
I agree that this is a semantic computation. Note that it is not a Turing machine
(which would be a purley syntactic computation). And note that there cannot be
a physical numerical register machine, only a syntactic one. This is not because
there are no numbers, but because (if numbers do exist) they are not physical!
The difference in focus is due in part to the fact that Rescorla is more interested
in the special case of implementation of a computation, whereas I am more
interested in implementation more generally.
13. One place where Chalmers very clearly states that (what I call) an Abstraction is
a description of (what I call) an implementation is here:
14.5. NOTES FOR NEXT DRAFT 555
Examines the association between numbers and the physical world that is made
in measurement and argues that implementation and (measurement-theoretic)
representation are a single relation (or concept) viewed from different angles
(p. 276).
Eden, Amnon H.; & Turner, Raymond (2007), Problems in the Ontology of Computer
Programs, Applied Ontology 2(1): 1336.
Ladyman, James (2009), What Does It Mean to Say that a Physical System Implements
a Computation?, Theoretical Computer Science 410(45) (17 February): 376383.
Scherlis, William L.; & Scott, Dana S. (1983), First Steps towards Inferential
Programming, in R.E.A. Mason (ed.), Information Processing 83: 199212,
http://repository.cmu.edu/cgi/viewcontent.cgi?article=3542&context=compsci
(preprint accessed 16 February 2015).
2 discusses the relation between a specification the program that implements it.
Scheutz, Matthias (1998), Implementation: Computationalisms Weak Spot, Conceptus
Journal of Philosophy 31(79): 229239.
558 CHAPTER 14. WHAT IS IMPLEMENTATION?
Scheutz, Matthias (1999), When Physical Systems Realize Functions, Minds and
Machines 9: 161196.
Sloman, Aaron (2008), Why Virtual Machines Really Matterfor Several Disciplines,
lecture slides accessed 27 October 2014 from:
http://www.cs.bham.ac.uk/research/projects/cogaff/talks/information.pdf
14.6. FURTHER SOURCES OF INFORMATION 559
Wilson, Robert A. (2001), Two Views of Realization, Philosophical Studies 104: 131.
Figure 14.2: P is a physical system whose physical states (dots) are grouped into state
types (partitions of P) related by causal state-transtion relations; C is a computation
whose formal states (dots), which are related by abstract state-transition relations, are
mapped to Ps physical-state types by abstract state-transition relations.
14.6. FURTHER SOURCES OF INFORMATION 561
. . . within ten years most theories in psychology will take the form of
computer programs, or of qualitative statements about the characteristics
of computer programs.
[Simon and Newell, 1958, 78]
563
564 CHAPTER 15. ARE PROGRAMS THEORIES?
3. Strongly Recommended:
Moor, James H. (1978), Models and Theories, 4 of his Three Myths
of Computer Science, British Journal for the Philosophy of Science 29(3)
(September): 213222.
4. Highly Recommended:
Simon, Herbert A.; & Newell, Allen (1956), Models: Their Uses and Limitations,
in Leonard D. White (ed.), The State of the Social Sciences (Chicago: University of
Chicago Press): 6683.
Makes many of the same points as Simon 1996, but goes into a bit more detail
on the nature of theories and models.
5. Recommended:
Wilks, Yorick (1990?), One Small Head: Models and Theories, pp. 121134,
in 4 (Programs and Theories) of Derek Partridge & Yorick Wilks (eds.), The
Foundations of Artificial Intelligence: A Sourcebook (Cambridge, UK: Cambridge
University Press).
Published in slightly different form as:
Wilks, Yorick (1974), One Small HeadModels and Theories in
Linguistics, Foundations of Language 11(1) (January): 7795.
Has a useful, if sometimes confusing, overview of the many meanings of
theory and model.
Daubert v. Merrell Dow Pharmaceuticals (92-102), 509 U.S. 579 (1993)
http://openjurist.org/509/us/579 (accessed 13 November 2012).
15.1. RECOMMENDED READINGS: 565
15.2 Introduction
The issue raised in the quote that opens this chapter, from a former graduate student
at my university, is whether an algorithm, which is a pretty formal, precise thing,
is different from a formal theory. Some might say that her algorithm is her theory.
Does it really make sense to say that you dont have a formal theory of something if
you do have a formal algorithm that implements your theory? Roger Schank, an AI
researcher famous for taking a scruffythat is, non-formalapproach to AI used
formal algorithms to express his non-formal theories. That sounds paradoxical.
As part of our investigation into the nature of computer programs, we have
seen that algorithms are said to be implemented in computer programs. But, if
implementation is semantic interpretation, then computer programs are semantic
interpretations of algorithms, in the medium of some programming language. However,
some philosophers have argued that computer programs are theories; but theories are
more like abstractions than they are like implementations. And others have argued that
computer programs are simulations or models of real-world situations, which sounds
more like an implementation than an abstraction. In this chapter, we will look into the
relation of a program to that which it models or simulates, the nature of simulation, and
whether programs are (scientific) theories.
This is only a rough definition, because I have not said what is meant by system,
model, or understand, not to mention real, imagined, or experiment! Typically,
a computer program (x) is said to simulate some real-world situation y when program
x is a model of situation y. If we want to understand the situation, we can do so
by experimenting with the program; perhaps the program is easier to deal with or to
manipulate than the real-world situation. In an extreme case, x simulates y if and only
if x and y have the same input-output behavior, but they might differ greatly in some of
the details of how they work.
And, following [Habib, 1983], lets say that
15.3. THREE DISTINCTIONS 567
In general, x emulates y if and only if x and y not only have the same input-output
behavior (x not only simulates y) but x also uses the same algorithms and data structures
as y.
It is unlikely that being a simulation and being an emulation are completely distinct
notions. More likely, they are the ends of a spectrum, in the middle of which are xs
and ys that differ in the level of detail of the algorithms and data structures that x
uses to do ys job. At the pure simulation end of the spectrum, only xs and ys
external, input-output behavior agree; at the pure emulation end, all of their internal
behavior also agree. Perhaps, then, the only pure example of emulation would be
y itself! Perhaps, even, there is no real distinction between simulation and emulation
except for the degree of faithfulness to what is being simulated or emulated (and except
for cases in which y is only an imagined situation, whereas x will always be something
real).
This, by the way, is one reason that people who believe in the theory of evolution
and those who dont are often talking at cross purposes, with the former saying that
evolution is a true, scientific theory:
Referring to biological evolution as a theory for the purpose of contesting
it would be counterproductive, since scientists only grant the status
of theory to well-tested ideas. (Terry Holliday, Kentucky education
commissioner, 2011; cited in Science 337 (24 August 2012): 897.)
and the latter saying that, if it is only a theoryif, that is, it is a mere conjecturethen
it might not be true:
The theory of evolution is a theory, and essentially the theory of evolution
is not scienceDarwin made it up. (Kentucky state Representative Ben
Waide, 2011; cited in Science 337 (24 August 2012): 897.)
They are using the word in very different senses.
Further complicating the issue, there are at least two views within the philosophy
of science about what scientific theories are:
On the syntactic approach to theories (due to the Logical Positivists
[Uebel, 2012]), a theory is an abstract description of some situation (which usually
is, but need not be, a real-world situation) expressed in a formal language with an
axiomatic structure; that is, a theory is a formal system (see 14.4). Such a theory
is typically considered to be a set of sentences (linguistic expressions, well-formed
formulas) that describe a situation or that codify (scientific) laws about a situation.
(This is the main sense in which the theory of evolution is a theory.) Such a
description, of course, must be expressed in some language. Typically, the theory
is expressed in a formal, axiomatic language that is semantically interpreted by rules
linking the sentences to observable phenomena. These phenomena are either directly
observableeither by unaided vision or with the help of microscopes and telescopes
or are theoretical terms (such as electron) that are definable in terms of directly
observable phenomena (such as a vapor trail in a cloud chamber). (Well say more
about this in 15.4 CHECK THIS!.)
On the semantic approach to theories (due largely to the philosopher
Patrick Suppes [Frigg and Hartmann, 2012]), theories are the set-theoretic models
of an axiomatic formal system. Such models are isomorphic to the real-
world situation being modeled. (Weaker semantic views of theories see
them as state spaces (http://en.wikipedia.org/wiki/State space) or prototypes
(http://en.wikipedia.org/wiki/Prototype), which are merely similar to the real-world
situation.)
the idea sounds circular, so lets see if we can be a bit more precise. First, consider
these passages from their writings (my italics throughout):
15.5 Models
The notion of model is associated with the Puzzle of the Model in the Middle, or the
Model Muddle [Wartofsky, 1966], [Wartofsky, 1979], [Rapaport, 1995].
There are different uses of the term model: It can be used to refer to a syntactic
domain, as in the phrase mathematical model of a real-world situation. And it can
be used to refer to a semantic domain, as in the phrase set-theoretic model of a
mathematical theory.
15.6. COMPUTER PROGRAMS ARENT THEORIES 571
This dual, or Janus-faced,1 nature of models leads to what [Smith, 1987] called
a correspondence continuum: Scientists typically begin with data that they then
interpret or model using a formal theory; so, the data are the syntactic domain, and
the formal theory is its semantic domain. The formal theory can then be modeled set-
theoretically or mathematically; so, the formal theory is now the syntactic domain, and
the set-theoretic or mathematical model is the semantic domain. But that set-theoretic
or mathematical model can be interpreted by some real-world phenomenon; so, the
model is now the syntactic domain, and the real-world is the semantic domain. To
close the circle, that real-world phenomenon is just the some of the kind of data that
we started with! (Compare the example of student records and students at the end of
our discussion of implementation, in 14.4.)
1 http://en.wikipedia.org/wiki/Janus
572 CHAPTER 15. ARE PROGRAMS THEORIES?
(a) Here are one or two (or three?) arguments to the effect that programs are
theories:
i. They equate model and theory (p. 66), but they admit that some
people limit the notion of model to mathematical theory. They also
state that mathematics is a language (p. 66), one of three main kinds
of scientific languages or theories: the mathematical, the verbal, and
the analogical (p. 67).
2. Where Simon and Newell 1956 consider models and theories to be the same
thing, others distinguish them. [Apostel, 1961, 12] suggests that a computer
can be a model of the central nervous system, and that that model might be
easier to study than the system itself. If it is the computer that is the model, then
it makes sense to say that the computers program expresses the theory that the
model is a model of. (Keep in mind, however, that there is an ambiguity over
whether the model is a model of a theory or of some other phenomenon.)
3. For [Weizenbaum, 1976, Ch. 5, pp. 140143], A theory is first of all a text,
hence a concatenation of the symbols of some alphabet. But A theory
is. . . not merely any grammatically correct text that uses a set of terms somehow
symbolically related to reality. It is a systematic aggregate of statements of laws.
Its content. . . lies at least as much in the structure of the interconnections that
relate its laws to one another, as in the laws themselves. And we have to be abel
to draw. . . consequences from it. So, a theory, for Weizenbaum, is what we
have elsewhere (WHERE?) called a formal theory: a set of axioms (laws) and
rules of inference expressed in some formal language. With a few modifications
15.7. NOTES FOR NEXT DRAFT 575
(such as to convert this kind of declarative system into an imperative one), this
can be seen to describe a computer program expressed in some programming
language.
I would make a slight distinction between the theory (the program) and the model
(the computer or process).
For [Weizenbaum, 1976, 143144], a model satisfies a theory; that is, a model
obeys those laws of behavior that a corresponding theory explicitly states or
which may be derived from it. We may say, given a theory of a system B, that A
is a model of B if that theory of B is a theory of A as well. So, a model (all by
itself) is a (semantic) implementation of a theory. And a model of some system
is a distinct implementation of a theory of that system. We begin with some
system, we develop a theory about it (so the original system is a model of that
theory), and then we can find or create another system that is also a model of
that theory. If the second system is easier to understand than the original system,
then we can use both the theory and the new model to understand the original
system.
If a computer program is such a theory, then what would count as a model of it?
One possibility, consistent with what others have said, is that a computer that is
executing the program is the model. (Another possibility is that the process that
is being executed is the model.)
4. Not sure exactly where this comment should go. Possibly much earlier, in Ch. 3,
where I talk about computer science as the study of what is computable. Or
possibly later, in Ch. 19, when I discuss computationalism in cognitive science.
In any case, [Weizenbaum, 1976, Ch. 6, esp. p. 157] makes am important point
about computer programs as theories (and computers as models). He notes that,
576 CHAPTER 15. ARE PROGRAMS THEORIES?
The problem that Weizenbaum is pointing to is that, while B might be a good way
to understand some aspects of X, it is unlikely to give us a full understanding of
X or to be the best or only way to understand X. There are limitations to any
theory and to any model.
This does not mean, however, that one shouldnt try to understand X via B.
5. On [Thagard, 1984]:
(a) [Thagard, 1984, 77] argues that, on two conceptions of what a theory is
the syntactic and the semanticcomputer programs are not theories.
He also argues that programs are not models. Rather, a program is a
simulation of a model which approximates to a theory.
Another question that can be raised is this: Suppose that we are looking for
a buried treasure. I might say, I have a theory about where the treasure is
buried: Walk three paces north, turn left, walk 5 paces, and then dig. Ill
be that you find the treasure. Is this not a theory? I suppose that Thagard
might say that it isnt. But isnt there a sentential theory that is associated
with itperhaps something like The treasure is buried at a location that
is three paces north and 5 paces west of our current location. Doesnt my
original algorithm for finding the treasure carry the same information as
this theory?
15.7. NOTES FOR NEXT DRAFT 577
But this seems very close to what a model is. In fact, [Thagard, 1984, 79]
says that a real system R is a system of the kind defined by the theory T .
But how is that different from saying that R is an implementation of (that
is, a model of) T ?
(c) Two good quotations about the nature of science (perhaps they should go
in Ch. 4?):
. . . scientists do not assert that they know what is immutably
truethey are committed to searching for new, temporary
theories to explain, as best they can, phenomena (Brief for
Nicolaas Bloembergen et al. as Amici Curiae 9, cited in Daubert
at II.B.24 in the online version, my italics)
and
Science is not an encyclopedic body of knowledge about the
universe. Instead, it represents a process for porposing and
refining theoretical explanations about the world that are subject
to further testing and refinement. (Brief for American Association
for the Advancement of Science and the National Academy of
Sciences as Amici Curiae 78, cited in Daubert at II.B.24)
(d) Justice Blackmun, writing in Daubert at II.B.24, citing these two quotes,
states that in order to qualify as scientific knowledge, an inference or
assertion must be derived by the scientific method. So, if a computer
program that can, say, identify handwriting is a good scientific theory of
handwriting, then its creator is a scientific expert on handwriting?
There are two concerns with this: First, a computer program that can
identify handwriting need not be a good scientific theory of handwriting. It
might be a lucky guess not based on any scientific theory, or it might not
even work very well outside carefully selected samples. Second, even if it
is based on a scientific theory of handwriting and works well on arbitrary
samples, the programmer need only be a good interpreter of the theory, not
necessarily a good handwriting scientist.
However, if a computer scientist studies the nature of handwriting and
develops a scientific theory of it that is then expressed in a computer
program capable of, say, identifying handwriting, then it would seem to
be the case that that computer scientist is (also) a scientific expert in
handwriting.
(e) Blackmun, writing in Daubert at II.C.28, suggests four texts of whether
a theory or technique [NB: which could include a computer program,
whether or not such programs are (scientific) theories] is scientific
knowledge:
i. Testability (and falsifiability) (II.C.28): computer programs would
seem to be scientific on these grounds, because they can be tested and
possibly falsified, by simply running the program on a wide variety of
data to see if it behaves as expected.
ii. Peer review (II.C.29): Surely, a computer program can (and should!)
be peer reviewed.
iii. Error rate (II.C.30): Its not immediately clear what Blackmun might
have in mind here, but perhaps its something like this: A scientific
580 CHAPTER 15. ARE PROGRAMS THEORIES?
The argument that Thagard makes that programs cant be theories because
they are not sets of declarative sentences just seems parochial. They are
surely sets of (imperative) statements that have the additional benefit that
they can become an instance of what they describe (alternatively: that they
can control a device that becomes an instance of what they describe).
This duality gives them the ability to be self-testing theories. And their
precision gives them the ability to pay attention to details in a way
that theories expressed in English (and perhaps theories expressed in
mathematics) lack.
(d) Simon hedges a bit, however:
582 CHAPTER 15. ARE PROGRAMS THEORIES?
10. Theres a nice definition of simulation in [Peschl and Scheutz, 2001b, 1],
ascribed to Shannon (but not in the cited work):
12. [Humphreys, 2002] suggests a view of computational models that can account
for the Civil War-chess example discussed in earlier chapters: one of the
characteristic features of mathematical [including computational] models is that
the same model. . . can occur in, and be successfully employed in, fields with quite
different subject matters (p. S2, my italics). He goes on to say, Let the analog
computer solve one and you automatically have a solution to the other (p. S5)
but there seems no reason not to include digital computers in this observation.
13. Further discussion of simulation can be found in [Denning and Martell, 2015,
212213].
584 CHAPTER 15. ARE PROGRAMS THEORIES?
Argues that computer programs are good simulations (and even implementations)
of cognition, but only as long as they respect the temporal metric imposed by
physics.
13. Shieh, David (interviewer) (2009), The Trouble with Computer Simulations: Linked in
with Sherry Turkle, Chronicle of Higher Education (March 27): A14,
http://chronicle.com/article/The-Trouble-With-Computer/5386
(accessed 13 November 2012).
14. Simonite, Tom (2009, August 29), Soap Bubbles to Take the Drag out of Future Cars,
New Scientist,
http://www.newscientist.com/article/dn17706-soap-bubbles-to-take-the-drag-out-of-
future-cars.html
(accessed 13 November 2012).
16. Tymoczko, Thomas (1979), The Four-Color Problem and Its Philosophical Significance,
Journal of Philosophy 76(2) (February): 5783,
http://www.thatmarcusfamily.org/philosophy/Course Websites/Math S08/Readings/tymoczko.pdf
(accessed 15 December 2014).
17. Winsberg, Eric (2001), Simulations, Models, and Theories: Complex Physical Systems
and Their Representations, Proceedings of the 2000 Biennial Meeting of the Philosophy
of Science Association, Part I: Contributed Papers, Philosophy of Science 68(3)
(September) Supplement: S442S454.
Chapter 16
587
588 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
(c) Gries, David (1981), The Science of Programming (New York: Springer-Verlag).
A classic textbook. Contrast its title with that of [Knuth, 1973].
4. Recommended:
Any of the following articles, which are representative of the battle that resulted
from Fetzer 1988 and Ardis et al. 1989.
(a) Pleasant, James C.; AND Paulson, Lawrence; Cohen, Avra; & Gordon,
Michael; AND Bevier, William R.; Smith, Michael K.; & Young, William D.;
AND Clune, Thomas R.; AND Savitzky, Stephen (1989), The Very Idea
(5 letters to the editor), Technical Correspondence, Communications of the
ACM 32(3) (March): 374377.
(b) Fetzer, James H. (1989), Program Verification Reprise:
The Authors Response (to the above 5 letters), Technical Correspondence,
Communications of the ACM 32(3) (March): 377381.
(c) Dobson, John; & Randell, Brian (1989), Program Verification: Public Image
and Private Reality, Communications of the ACM 32(4) (April): 420422.
(d) Muller, Harald M.; AND Holt, Christopher M.; AND Watters, Aaron (1989),
More on the Very Idea (3 letters to the editor, with reply by James H. Fetzer),
Technical Correspondence, Communications of the ACM 32(4) (April): 506
512.
(e) Hill, Richard; AND Conte, Paul T.; AND Parsons, Thomas W.; AND Nelson,
David A. (1989), More on Verification (4 letters to the editor), ACM Forum,
Communications of the ACM 32(7) (July): 790792.
(f) Tompkins, Howard E. (1989), Verifying Feature-Bugs (letter to the editor),
Technical Correspondence, Communications of the ACM 32: 11301131.
Barwise, Jon (1989), Mathematical Proofs of Computer System Correctness,
Notices of the American Mathematical Society 36: 844851.
A cooler head prevails. Besides being an admirably clear and calm summary
of the Fetzer debate, it discusses:
(a)
(b) the relation between algorithms and programs
(c) the possibility of finding fault with an argument yet believing its
conclusion (see A of this book)
(d) the nature of philosophy of X (see 2.8 of this book)
(e) the difference between the truth of a premise and agreeing with it (see A
of this book)
(f) the relation of math to the world
(g) the nature of models, and the difference between models and the real
thing
(h) [Smith, 1985], to be discussed in Ch. 17.
See also:
Dudley, Richard (1990), Program Verification (letter to Jon Barwise (ed.),
Computers and Mathematics column, with a reply by Barwise), Notices of the
American Mathematical Society 37: 123124.
590 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
16.2 Introduction
Is computer programming like mathematics? Or is it more like engineering? After
all, many people identify computer programming with software engineering. Yet
many others think of a program as being like a mathematical proof: a formal structure,
expressed in a formal language. For example, [Suber, 1997a] compares programs to
proofs this way: A programs input is analogous to the axioms used in a proof; the
programs output is analogous to the theorem being proved; and the program itself
is like the rules of inference that transform axioms into theorems, with the program
transforming the input into the output.1
Or perhaps a program is more like the endpoint of a proof, namely, a mathematical
theorem. In that case, just as theorems can be proved (and, indeed, must be proved
before they are accepted), perhaps programs can be proved (and, perhaps, should be
proved before they are used). Can we prove things about programs? What kinds of
things might be provable about them?
Two answers have been given to the first of these questions: yes and no. (Did you
expect anything else?) One of the most influential proponents of the view that programs
can be proved is Tony Hoare:
Computer programming is an exact science in that all the properties of a
program and all the consequences of executing it in any given environment
can, in principle, be found out from the text of the program itself by means
of purely deductive reasoning. [Hoare, 1969, 576, my emphasis]
When the correctness of a program, its compiler, and the hardware of the
computer have all been established with mathematical certainty, it will be
possible to place great reliance on the results of the program, and predict
their properties with a confidence limited only by the reliability of the
electronics. [Hoare, 1969, 579, my emphasis]
And among those arguing that programs are not like mathematical proofs are the
computer scientists Richard De Millo, Richard Lipton, and Alan Perlis:
. . . formal verifications of programs, no matter how obtained, will not play
the same key role in the development of computer science and software
engineering as proofs do in mathematics. [De Millo et al., 1979, 271]
And the philosopher James Fetzer argues that the things that we can prove about
programs are not what we think they are:
1 Suber makes a stronger claim, that computers are physical implementations of formal systems. This
would require the rules of inference to satisfy the constraints of being an algorithm, but not all formal
systems require that.
592 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
and if S is executed,
then Q correctly describes the state of the computer (or the state of the
world) after S is executed.
16.3. PROGRAM VERIFICATION 593
The state of the computer includes such things as the values of all registers (that is,
the values of all variables).
So, if we think of a program as being expressed by a sequence of executable
statements:
begin S1 , S2 , . . . , Sn end.
then the program annotated for program verification will look like this:
begin {I & P1 }S1 {Q1 }, {P2 }S2 {Q2 }, . . . , {Pn }Sn {Qn }, {O} end.
where:
P1 is a proposition describing the initial state of the computer (or the world),
Qn is a proposition describing the final state of the computer (or the world),
The claim of those who believe in the possibility of program verification is that we
can then logically prove whether the program does what its supposed to do without
having to run the program. We would construct a proof of the program as follows:
premise: If Q1 , then P2 .
conclusion: P2 .
... ...
conclusion: The final state is Qn .
premise: If Qn , then O.
conclusion: O.
594 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
(If the program isnt a straight-line program such as this, but is a structured
program with separate modules, then it can be recursively verified by verifying each
module.)
If debugging a program by running it, and then finding and fixing the bugs, is part
of practical software engineering, then you can see why program verification can be
thought of as theoretical software engineering.2
Moreover, this annotation technique can also be used to help develop programs that
would thereby be guaranteed to be correct, another reason why program verification is
argued to be an important part of software engineeing [Gries, 1981].
hA1 , . . . , An , P1 , . . . , Pm , S1 , . . . , Sl i
the Ai are axioms, that is, propositions that are necessarily true by virtue of
their meanings (or assumed to be true for the time being),
the Pj are premises, that is, propositions that are contingently or empirically
assumed to be true (but that would normally require some justification), and
Then to say that this sequence is a (valid) demonstration (or proof) of Sl from
the axioms and premises means (by definition) that each Sk follows from previous
propositions in the sequence by a (valid) rule of inference.
This is a fairly standard definition of a logical proof of a theorem Sl . Note that if
n = 0 (that is, if there are no axioms, and, especially, if m = 0 alsothat is, if there
are no premises), then there will typically have to be lots of rules of inference, and
the demonstration is said to be done by natural deduction (because it is the way that
logicians naturally prove things [Pelletier, 1999]).
Now, again following Fetzers terminology,
2 On the history of the term bug, see [Hopper, 1981], [Krebs and Thomas, 1981]. However, the idea that
the first computer bug was really a bug (actually, a moth), is an urban legend, because the term was used in
the non-entomological sense as early as 1889; see [Shapiro, 1985] and the OED online at:
http://www.oed.com/view/Entry/24352?rskey=qWlUWg&result=2#eid (accessed 7 November 2013).)
For a photo of the allegedly first bug, see http://www.catb.org/jargon/html/B/bug.html
(accessed 6 November 2013).
16.4. THE FETZER CONTROVERSY 595
you mathematically or logically prove that the (physical) bell will (actually) ring or
that a (physical) circle will (actually) be drawn? How can you logically prove that the
(physical bell works or that the pen has ink in it? Fetzers point is that you cant.
(And the controversy largely focused on whether thats whats meant by program
verification.) This should remind you of the discussion in Ch.10 about Clelands
interpretation of the Church-Turing Computability Thesis: Is preparing Hollandaise
sauce, or physically ringing a bell, or physically drawing a circle a computable task?
But, according to Fetzer, its not just ringing bells, drawing circles, or, for that
matter, cooking thats at issue. What about the PRINT command that is required
of all Turing-machine programs? And, according to Fetzer, its not just a matter of
causal output, because you can replace every PRINT(x) command with an assignment
statement: p := x. Even this is a causal statement, because it instructs the computer
to change the values of bits in a physical register p, and so Fetzers argument goes
through: How can can you logically prove that the physical computer will actually
work? Indeed, the history of early modern computers was largely concerned with
ensuring that the vacuum tubes would be reliable [Dyson, 2012b].
The point, according to Fetzer, is that we must distinguish between the program
and the algorithm that it implements. The former implements the latter: A program is
a causal model of a logical structure, and, while algorithms might be capable of being
absolutely verified, programs cannot.
It might be replied, on behalf of the pro-verificationists, that we can still do relative
verification: verification relative to causal axioms that relate these commands to
causal behaviors. So, we can say that, if the computer executing program P is in
good working order, and if the world (the environment surrounding the computer) is
normal, then P is verified to behave in accordance with its specifications.
No, says Fetzer: Algorithms and programs that are only intended for abstract
machines can be absolutely verified (because there is nothing physical about such
machines; they are purely formal). But programs that can be compiled and executed
can only be relatively verified.
16.5 Summary
The bottom line is that programs of the latter type need causal rules of inference of
the form: input I causes output O. Perhaps the BEEP command would have to be
annotated something like this:
If such causal rules are part of the definition of an abstract machine, then we can have
absolute verification of the program. But if they are merely empirical claims, then we
can only have relative verification of the program.
Even so, absolute verification is often thought to be too tedious to perform and can
lure us into overconfidence. The former problem seems to me not to be overly serious;
its tedious to prove theorems in mathematics, too; in any case, techniques are being
devised to automate program verification. The latter problem is more important, for
16.5. SUMMARY 597
precisely the reasons that Fetzer adduces. Just because youve proved that a program
is correct is no reason to expect that the computer executing it will not break down.
The general tone of the responses to Fetzer included these objections:
How dare you publish this! [Ardis et al., 1989]
So what else is new? We program verificiationists never claimed that you could
logically prove that a physical computer would not break down.
Verification techniques can find logical faults; it is logically possible to match a
program or algorithm to its specifications.
You can minimize the number of IcO (??) rules such that they only apply to
descriptions of logic gates and the physics of silicon.
Many programs are incorrect because, for example of the limits of accuracy in
using real numbers.
Verifiably incorrect programs can be better than verifiably correct programs if
they have better average performance (cf. [Moor, 1979]).
598 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
4 http://www.perseus.tufts.edu/hopper/text?doc=Perseus%3Atext%3A1999.01.0086%3Abook%3D1%3Atype%3DProp%3Anumber%3D1
16.6. NOTES FOR NEXT DRAFT 599
Of course, another way to read this (as well as the entire program verification
debate) is to recognize that no one, and no thing, is perfect. Theres always
the chance of error or malfunction, and the point is, at least, to minimize it (if
complete elimination is physically impossible).
Adapting this to the Fetzer controversy, we might want to say that it is not
sufficient merely to verify the static computer program (and its components),
but also the way that program is dynamically executed.
I should like to ask the same question that Descartes asked. You
are proposing to give a precise definition of logical correctness
which is to be the same as my vague intuitive feeling for logical
correctness. How do you intend to show that they are the same?
. . . [T]he average mathematician. . . should not forget that intuition is
the final authority. . . . [Rosser, 1978, 4,11], slightly incorrectly cited
in [De Millo et al., 1979, 271]
[De Millo et al., 1979] cite this presumably to support their argument that formal
proofs dont always yield acceptance or belief. (My college friend Alan Arkawy
always advised that you had to believe a mathematical proposition before you
could try to prove it.)
600 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
Note the similarity to the CTCT; this is not accidental. The Descartes cited
in the quote is not the real Descartes, but a fictional version visited by a time-
traveling mathematician who tries to convince him that the modern and formally
precise, - definition of a continuous curve is equivalent to Descartess
intuitive definition in terms of being able to be drawn without lifting pencil from
paper. They agree that, despite the informality of Descartess definition and the
formality of the mathematicians, they can be verifiedbut not provedto
be equivalent by seeing that they agree on a wide variety of cases. The cited
quotation is the mathematicians response to a logician who tries to convince the
mathematician that the mathematicians intuitive notion of proof bears the same
relation to Descartess intuitive notion of continuity that the logicians formal
and logical definition of proof bears to the mathematicians intuitive notion of
proof.
(a) They argue that program verification and development should go hand-in-
hand, rather than verification coming after a program is complete. Others
have made the same point (e.g., Dijkstra, Gries: CITE), but Scherlis
& Scotts notioninferential programmingdiffers from program
derivation. Whereas program derivations [are] highly structured
justifications for programs[,] inferential programming [is] the process of
building, manipulating,and reasoning about program derivations (p. 200,
my italics).
(b) A correctness proof [shows] that a program is consistent with its
specifications (p. 201), where Specifications differ from programs in
that they describe aspects or restrictions on the functionality of a desired
algorithm without imposing constraints on how that functionality is to be
achieved. (p. 202)
(c) They take issue with [De Millo et al., 1979]. First, they observe that
the claim that Mathematicians do not really build formal proofs in
practice; why should programmers? (p. 204) is fallacious, because
formalization plays an even more important role in computer science
than in mathematics, and this, in turn, because computers do not run
informal programs (p. 204). Moreover, formalization in mathematics
has made possible much advancement independent of whether there is
any sense in looking at a complete formalizatio of a whole proof. Often
there is not. (p. 204)
(d) They advocate, not for a complete proof of correctness of a completed
program, but for proofs of correctness of stages of development, together
with a justification that derivation steps preserve correctness. This is
exactly the way in which proofs of theorems are justified: If the axioms
and premises are true, and if the rules of inference are truth-preserving,
then the conclusions (theorems) will be true (relative to the truth of the
axioms and premises).
16.6. NOTES FOR NEXT DRAFT 601
(e) Where [De Millo et al., 1979] claim that some view theorems and proofs as
analogous to programs and verifications, respectively, but that theorems are
more like specifications, proofs like programs, and formal demonstrations
(were anyone to actually sit down and provide one) like verifications,
[Scherlis and Scott, 1983] say that a better analogy is this: problems are
like specifications, theorems are like programs, and proofs are like program
derivations. (p. 207). They add that all such analogies must be taken with
a big grain of salt, since all thee words can mean many things.
8. FETZER ON LOGIC, REASONING, AND ARGUMENT ANALYSIS
Fetzers paper makes some comments about the nature of logical reasoning and
about knowledge and belief that are relevant to what youve been doing in your
argument analyses.
Hes correct! Whether a statement (or premise) is true or not does not
depend on whether you (or anyone) believes it to be true. It is (or isnt) true
iff what it states corresponds to reality.
Nevertheless, thats very hard (if not impossible) to prove. And thats
why Im allowing you to do something that is a bit easier, and a bit more
realistic, andfor our purposesjust as useful, namely, to try to explain
whether and why you believe the statement.
(b) In the same location, at the beginning of the next section, Fetzer says:
Confidence in the truth of a theorem (or in the validity of an
argument) . . . appears to be a psychological property of a person-
at-a-time. . . .
Its that confidence that Ive been asking you to examine, explain, and
defend. Because its a psychological property of you now, I only grade
you on how well you explain and defend it, not on what it is.
(c) Finally, in column 2 on the same page, he says:
[A]n individual z who is in a state of belief with respect to a
certain formula f . . . cannot be properly qualified as possessing
knowledge that f is a theorem unless his belief can be supported
by means of reasons, evidence, or warrants. . . .
602 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
just phyusical objects that compute abstract algorithms. They are also
embedded in the physical world and they interact with users. . . . Thus, . . .
our mathematical models need to include not just a reliable model of the
computer, but also a reliable model of the environment in which it is to be
placed, inluding the user. (p. 850, col. 1).
(d) Barwise notes that Fetzer is only willing to talk about the causal (that
is, physical) role of computers, which is not susceptible of mathematical
verification, whereas the field of program verification only concerns
abstract programs. (p. 848, col. 2). So it really seems that both sides are
not only talking past each other, but are actually consistent with each other.
(e) As for the issues about the nature and value of proofs as raised by
[De Millo et al., 1979], Barwise observes that mathematical theories of
formal proofs arent what mathematicians since the time of the ancient
Greeks were constructing (p. 849, col. 1). Although he doesnt say so
explicitly, he very strongly suggests that the relation between such theories
of formal proofs (and there are more than one) and the informal proofs
since the time of the ancient Greeks is akin to the CTCT.
11. Somewhere note that the program verification issue is also a subissue of the
question concerning the relation of software to hardware.
MacKenzie continues:
There are two points to notice here. First, a mathematical argument can establish
the correctness of a program relative to its specification, that is, whether the
program satisfies the specification. In part, this is the first point, above. But,
second, not only does this not necessarily mean that the computer system is safe
(or whatever), it also does not mean that the specification is itself correct.
Presumably, a specification is a relatively abstract outline of the solution to
a problem. Proving that a computer program is correct relative tothat is,
satisfiesthe specification does not guarantee that the specification actually
solves the problem!
604 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
For Fetzer, computing is about the world; it is external and contextual (recall
our discussion of Cleland, in Ch. 10 and elsewhere WHERE?). Thus, computer
programs cant be verified, because the world may not be conducive to correct
behavior: A physical part might break; the environment might prevent an
otherwise perfectly running, correct program from accomplishing its task
(such as making hollandaise sauce on the Moon using an Earth recipe); etc.
For Smith, computing is about a model of the world; it is internal and narrow.
Thus, computer programs cant be verified, but for a different reason, namely,
the model might not match the world.
Perhaps a better way of looking at things is to say that there are two different
notions of verification: an internal and an external one. (For related
distinctions, see [Tedre and Sutinen, 2008, 163164].)
14. Software is sometimes taken to be an artefact. . . . However, is
software mathematical, or a physical thing? . . . [T]he key point is
as follows. Like the design of an artefact, it is the objective content
of a computer program that is important to its characterisation and
identity. The objective content of a program remains unchanged,
regardless of whether it is represented as magnetic regions on a
hard disk, or as ink on a page. . . . Nevertheless, the controversy
and lessons. . . from Fetzers (1988) paper on program verification
remind us that the execution of a program on a physical computer
is categorically different to the content of the program, and different
to a characterisation of the programs possible behaviour using
formal theories. The execution of a program on a computer
system is a phenomena [sic]5 in the real world, and it is this
5 It should be phenomenon.
16.6. NOTES FOR NEXT DRAFT 605
6 That is, the way that the program satisfies the requirements of its specification.
606 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
11. Davis, Phillip J.; & Hersh, Reuben (1998), The Ideal Mathematician, in their The
Mathematical Experience (Boston: Houghton Mifflin): 3444,
http://babel.ls.fi.upm.es/pablo/Jumble/ideal.pdf
(accessed 5 March 2015).
A partly facetious description of the behavior of (some) mathematicians, including
a discussion of the nature of proof as carried out by mathematicians.
For an antidote to their characterization of mathematicians, read [Frenkel, 2013].
16.7. FURTHER SOURCES OF INFORMATION 607
12. Devlin, Keith (1992), Computers and Mathematics (column), Notices of the American
Mathematical Society 39(9) (November): 10651066.
Contains a
dialogue between a math professor who defends [De Millo et al., 1979]s notion
of social proof and a philosophy student who defends the more formal logical
notion of proof. Serves as an introduction to [MacKenzie, 1992].
13. Dewar, Robert (2009), CS Education in the U.S.: Heading in the Wrong Direction?
Point, Communications of the ACM 52(7) (July): 4143.
Argues in favor of teaching formal reasoning in computer science, including
program-verification techniques.
For an opposing viewpoint, see:
Astrachan, Owen (2009), CS Education in the U.S.: Heading in the Wrong
Direction? Counterpoint, Communications of the ACM 52(7) (July): 4345.
14. Dijkstra, Edsgar W. (1974), Programming as a Discipline of Mathematical Nature,
American Mathematical Monthly (June-July): 608612.
Argues that the correctness of programs could and should be established by
proof, that structured programs are simpler to prove than unstructured ones
[Dijkstra, 1968], that theorems about programs make program proofs easier, and
that to prove the correctness of a given program was. . . putting the cart before the
horse. A much ore promising approach turned out to be letting correctness proof
and program grow hand in hand (pp. 609610).
15. Dijkstra, Edsger W. (1983), Fruits of Misunderstanding (EWD-854), reprinted in
Datamation (15 February 1985): 8687,
http://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD854.html
(accessed 13 November 2012).
16. Fetzer, James H. (1991), Philosophical Aspects of Program Verification, Minds and
Machines 1: 197216; reprinted in [Colburn et al., 1993, 403427].
A summary, reply to objections, and further discussion of the relation of software
to hardware.
17. Fetzer, James H. (1993), Program Verification, in Allen Kent & James G. Williams
(eds.), Encyclopedia of Computer Science and Technology, Vol. 28, Supp. 13 (New
York: Marcel Dekker): 237254; reprinted in Allen Kent & James G. Williams (eds.),
Encyclopedia of Microcomputers, Vol. 14: Productivity and Software Maintenance: A
Managerial Perspective to Relative Addressing (New York: Marcel Dekker): 4764.
An encyclopedia-style article on program verification, but written from Fetzers
perspective.
18. Fetzer, James H. (1996), Computer Reliability and Public Policy: Limits of Knowledge
of Computer-Based Systems, Social Philosophy and Policy 13(2) (Summer): 229266.
. . . in the real world, the operation of computer systems is inherently uncertain,
which raises profound problems for public policy. (from the Abstract)
19. Fetzer, James H. (1998), Computer Systems: The Uncertainty of their Reliability,
Bridges 5(3/4): 197217.
608 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
23. Glass, Robert L. (2002), The Proof of Correctness Wars, Communications of the ACM
45(8) (August): 1921.
A historical survey, with some useful references, arguing that the controversies over
program verification are extremely healthy for the field of computing (roughly
for the same reasons that, it was argued in Ch. 2, philosophy is important: the
challenging of assumptions).
24. Glanz, James (1995), Mathematical Logic Flushes Out the Bugs in Chip Designs,
Science 267: 332333.
25. Henzinger, Thomas (1996), Some Myths about Formal Verification, ACM Computing
Surveys 28(4es) (December), article no. 119.
A brief position statement in favor of formal verification.
26. Hinchey, Mike; Jackson, Michael; Cousot, Patrick; Cook, Byron; Bowen, Jonathan P.; &
Margaria, Tiziana (2008), Software Engineering and Formal Methods, Communications
of the ACM 51(9) (September): 5459.
29. Humelsine, Jim (2010), Software Still as Much an Art as Science, Letters to the Editor,
Communications of the ACM 53(1) (January): 7.
30. Lamport, Leslie (2015), Who Builds a House without Drawing Blueprints?,
Communications of the ACM 58(4): 3841,
http://cacm.acm.org/magazines/2015/4/184705-who-builds-a-house-without-drawing-
blueprints/fulltext
(accessed 14 June 2015).
Argues that the main reason for writing a formal spec[ification] is to apply tools to
check it, that the math needed for most specifications is quite simple: predicate
logic and elementary set theory, that a specification can and should be embedded
as a comment within the code it is specifying, andperhaps most importantly
that thinking does not guarantee that you will not make mistakes. But not thinking
guarantees that you will.
31. Leroy, Xavier (2009), Formal Verification of a Realistic Compiler, Communications of
the ACM 52(7) (July): 107115, preprint at
http://gallium.inria.fr/xleroy/publi/compcert-CACM.pdf
(accessed 25 February 2015).
See also the introductory editorial:
Morrisett, Greg (2009), A Compilers Story, Communications of the ACM 52(7)
(July): 106,
https://www.deepdyve.com/lp/association-for-computing-machinery/technical-
perspective-a-compiler-s-story-30zQuKanaE
(accessed 25 February 2015), containing philosophical remarks on the value of
program verification.
32. MacKenzie, Donald (1992), Computers, Formal Proofs, and the Law Courts, Notices of
the American Mathematical Society 39(9) (November): 10661069.
Discusses a legal challenge to a claim that a certain computer program had been
verified. The claim was that the verification was of the relatively informal,
[De Millo et al., 1979]-style variety of proof; the challenge was that a formal,
mathematical proof was necessary..
33. MacKenzie, Donald (2001), Mechanizing Proof: Computing, Risk, and Trust (Cambridge,
MA: MIT Press).
Ch. 6
(Social Processes and Category Mistakes) concerns the [De Millo et al., 1979]-
[Fetzer, 1988] controversy.
For a review, see:
Hayes, Brian (2002), The Search for Rigor, American Scientist 90 (July-August):
382384,
http://www.americanscientist.org/bookshelf/pub/the-search-for-rigor
(accessed 5 March 2015).
34. Meyer, Bertrand (1985), On Formalism in Specifications, IEEE Software 2(1)
(January): 626; reprinted in [Colburn et al., 1993, 155189].
35. Mili, Ali; Desharnais, Jules; & Gagne, Jean Raymond (1986), Formal Models of
Stepwise Refinement of Programs, ACM Computing Surveys 18(3) (September): 231
276.
610 CHAPTER 16. CAN COMPUTER PROGRAMS BE VERIFIED?
professionalism-of-programmers.html
16.7. FURTHER SOURCES OF INFORMATION 611
This paper. . . is remarkable in many respects. The three. . . pages of text contain
an excellent motivation by analogy, a proof of a program with two nested loops,
and an indication of a general proof method very like hat of Floyd [1967] (Morris
& Jones 1984: 139).
50. Verity, John W. (1985), Bridging the Software Gap, Datamation (15 February): 8488.
Contains interviews with Dijkstra, Hoare, and Gries, and includes a copy of
Dijkstras essay, Fruits of Misunderstanding (EWD-854, also online at
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD854.html,
accessed 16 February 2015).
51. For interesting contrasting views of the relationship between computer programs and
mathematical proofs, see:
613
614 CHAPTER 17. HOW DO PROGRAMS RELATE TO THE WORLD?
Technical Report CSLI-85-36 (Stanford, CA: Center for the Study of Language and
Information)
Reprinted in:
Dunlop, Charles; & Kling, Rob (eds.), Computerization and Controversy (San
Diego: Academic Press, 1991): 632646.
Colburn, Timothy R.; Fetzer, James H.; & Rankin, Terry L. (eds.) (1993),
Program Verification: Fundamental Issues in Computer Science (Dordrecht,
Holland: Kluwer Academic Publishers): 275293.
Preprints online at:
http://eliza.newhaven.edu/ethics/Resources/14.Reliability-
Responsibility/LimitsOfCorrectness.pdf (accessed 3 March 2015)
http://sdg.csail.mit.edu/6.894/dnjPapers/p18-smith.pdf (accessed 4 March
2015).
17.2. INTRODUCTION 615
17.2 Introduction
In this chapter, we will examine the relationship between a program and the world
in which the program is executed. We have touched on this topic before, primarily
in 10.5.1 where we looked at the question whether a program designed to create
Hollandaise sauce could succeed in a world in which the environmental conditions
were not conducive to creating Hollandaise sauce (yet the program might be provably
correct and even execute flawlessly), and in other places (3.10, 3.13, 7.10, 8.15,
16.6). Because a program is a piece of syntax (roughly, a collection of formal marks or
symbols, grammatically organized), and because semantics is the study of the relation
between syntax and the world, we are interested in the semantics of a program.
Our focus in this chapter will be an important paper, written in 1985, by Brian
Cantwell Smith: Limits of Correctness in Computers [Smith, 1985]. Indeed, I
consider this to be one of the three central papers in the philosophy of computer science,
the others being [Turing, 1936] and [Turing, 1950].
17.3 Background
As we saw in the previous chapter, program verification is the subdiscipline of
computer science that applies logic to a computer program in order to prove that it
will do what it is supposed to do. One way of accomplishing this is to annotate each
statement S of a program with pre- and post-conditions:
{P}S{Q}
where:
1. pre-condition P is a declarative proposition describing the input and the state of
the computer before executing statement or instruction S,
2. post-condition Q is a declarative proposition describing the output and the state
of the computer after executing S, and
3. and the braces are comment delimiters.
It is to be understood as follows:
If P is true, and if S is executed, then Q is (or will be, or should be) true.
One objection to program verification is that a program can be proven correct yet
not do what you intend. One reason, as we saw in the last chapter, might be that
the computer on which the program is run might fail physically. That is, the computer
system might fail at the hardware level (this was one of the points of [Fetzer, 1988]).
A second reason, as we saw in 10.5.1, might be that the world is inhospitable.
There are actually two ways in which this latter problem might arise: There might
be a physical problem, not with the computer or with the environment, but with the
connection between them: At a simple level, the cables connecting the computer to the
world (say, to a printer) might be flawed. Or the world itself might not provide the
616 CHAPTER 17. HOW DO PROGRAMS RELATE TO THE WORLD?
correct conditions for the intended outcome (it might be too hot, or too cold, and so
on).
A third reason is related to the possible hyper-computability of interactive
programs, as we discussed in 11.3: Such programs cannot be verified, because they
might depend on the non-verifiable behavior of an oracle or human user.1
What does correct mean in this context? Does it mean doing what was
intended? If so, whose intent counts? Here is Smith on this question:
What does correct mean, anyway? Suppose the people want peace, and
the President thinks that means having a strong defense, and the Defense
department thinks that means having nuclear weapons systems, and the
weapons designers request control systems to monitor radar signals, and
the computer companies are asked to respond to six particular kinds of
radar pattern, and the engineers are told to build signal amplifiers with
certain circuit characteristics, and the technician is told to write a program
to respond to the difference between a two-volt and a four-volt signal on a
particular incoming wire. If being correct means doing what was intended,
whose intent matters? The technicians? Or what, with twenty years of
historical detachment, we would say should have been intended?
According to Smith, the cause of these problems lies not in the relation of programs
to the world, but in the relation of models to the world.
17.4 Models
What is a model? According to Smith, to design a computer system to solve a real-
world problem, we must do two things:
The model that we create has no choice but to be delimited, that is, it must be
abstractit must omit some details of the real-world situation. Abstraction, as we
saw in Ch. 14, is the opposite of implementation. It is the removal of irrelevant
implementation details.
Why must any real-world information be removed? There are many reasons, one
of which is that it is methodologically easier to study a phenomenon by simplifying it,
coming to understand the simplified version, and then adding some complexities back
in, little by little. Another reason is related to the nature of maps. You cant use, or even
have, a map of Florida that is the size of Florida. Such a map might be thought to be
more useful than a smaller, more manageable one, in that it would be able to show all
the detail of Florida itself. But its lack of manageability is precisely the problem.2 What
1 However, a possible way to avoid this latter problem is due to Amir Pneulis use of temporal logic to
http://etc.usf.edu/lit2go/211/sylvie-and-bruno-concluded/4652/chapter-11-the-man-in-the-moon/
17.4. MODELS 617
about eating your cake and having it, too? Suppose we omit an incomplete and separate
model of the world altogether and use the world as its own model, as [Brooks, 1991]
suggests. Perhaps we can use the real world as a representation of itself: Robots dont
need a map showing where there is a wall; if it bumps into one, it will know that its
there.
In any case, the first step in solving a problem is to create an abstract, that is,
simplified, model of it. For example, Figure 17.2 is a picture showing (in a 2-
dimensional way, of course!) a 3-dimensional, real-world house and a 2-dimensional
model of it.
The second step is to use logical wffs or object-oriented data structures to represent,
not the real-world situation, but the model. Figure 17.3 adds to the house and the
houses model a computer representation of the model.
it, preferably in the same colors!; and a computer representation of the 2D drawing.
Please use your imagination to create a better set of figures. Smiths original is in
Figure 17.4.)
His point is that computers only deal with their representations of these abstract
models of the real world. They are twice removed from reality.
Is that necessarily the case? Cant we skip the intermediate, abstract model, and
directly represent the real-world situation in the computer? Perhaps, but this wont help
us avoid the problem of partiality (or abstraction, or idealization, or simplification)..
All models are necessarily partial. If they werent, there would be too much
complexity, and we would be unable to act. The only rational way to deal with
(real-world) complexity is to analyze it, that is, to simplify it, that is, to deal with
a partial (abstract) representation or model of it. (We have already discussed the
role of computer science in managing complexity; see Chs. 3, 4, and 15. See also
[Simon, 1962, Simon, 1996b].) We are condemned to do this whenever we humans
must act or make decisions: If we were to hold off on acting or making a decision
until we had complete and fully accurate information about whatever situation we were
in, we would either be paralyzed into inaction or else the real world would change
before we had a chance to complete our reasoning. (As Alan Saunders (and, later, John
Lennon) said, Life is what happens to us while we are making other plans.)3 This
is the problem that [Simon, 1996b] recognized when said that we must always reason
3 http://quoteinvestigator.com/2012/05/06/other-plans/
17.5. SUMMARY 619
with uncertain and incomplete (even noisy) information: We must satisfice. GET
EXACT CITATION. And this holds for computation as well as thinking.
But action is not abstract: You and the computer must act in the complex, real
world. Therefore, such real-world action must be based on partial models of the real
world, that is, on incomplete and noisy information. Moreover, there is no guarantee
that the models are correct.
Action can help: It can provide feedback to the computer system, so that the system
wont be isolated from the real world. Recall the blocks-world program that didnt
know that it had dropped a block, but blindly continued executing its program to
put the block on another (10.5.1). If it had had some sensory device that would have
let it know that it no longer was holding the block that it was supposed to move, and
if the program had had some kind of error-handling procedure in it, then it might have
worked much better (it might have worked as intended).
The problem, as Smith sees it, is that mathematical model theory only discusses
the relation between the model and a description of the model. It does not discuss the
relation between the model and the world. A model is like eyeglasses for the computer,
through which it sees the world. The model is the world as the computer sees it.
(The philosopher Immanual Kant said that the same thing is true about us: Our
concepts are like eyeglasses that distort reality; our only knowledge of reality is filtered
through our concepts, and we have no way of knowing how things really are in
themselves, unfiltered through our concepts (as illustrated in Figure 17.5).
Figure 17.4 is Smiths version of this picture. The problem is that we have to act in
W on the basis of M.
Similarly, to prove a program correct, we need both (a) a specification (a model of
the real-world problem) that says (declaratively) what the computer systems should
do and (b) a program (a computer model of the specification model) that says
(procedurally) how to accomplish this. A correctness proof, then, is a proof that any
system that obeys the program will satisfy the specification. But this is a proof that two
descriptions are compatible. The program is proved correct relative to the specification.
So, a better term might be proof of relative consistency. Suppose the proof fails to
show correctness; what does this mean? It means either that the program is wrong,
or that the specification is wrong (or both). And, indeed, often we need to adjust both
specification and program.
The real problems lie in the model-world relation, which correctness does not
address. This is one of the morals of Clelands and Fetzers claims. That is, programs
can fail because the models can fail to correspond to the real world in appropriate
ways. But that italicized clause is crucial, because all models abstract from the real
world, but each of them do so in different ways.
17.5 Summary
To sum up: Real-world tasks are complex. Models abstract from this complexity,
so they can never match the rich complexity of the world. Computers see the world
through models of these models (but so do people!). Would an automated system
designed to decide quickly how to respond to an emergency make you feel uneasy?
620 CHAPTER 17. HOW DO PROGRAMS RELATE TO THE WORLD?
Figure 17.5: A cognitive agent looking at a real-world object that the agent categorizes
as a house. Light reflecting off the house (the thing-in-itself) enters the agents eyes
and the resulting neural signals are filtered through the agents mental concepts,
producing a mental image of the house. The mental image may, or may not, be a
perfect representation of the house, but the agent has no way to directly compare the
mental image with the real house, independent of the agents concepts.
But so should a human who has to make that same decision. And they should both
make you uneasy for the same reason: They have to reason and act on the basis
of partial (incomplete) information. (Well discuss this in the next chapter!) Such
reasoning cannot be proved correct (and simulation only tests the computer-model
relation, not the model-world relation). So, empirical reliability must supplement
program verification. Therefore, we must embed the computer in the real world.
17.6. NOTES FOR NEXT DRAFT 621
I wont describe SS here, but you can think of it as a slightly more elaborate
kind of Turing machine. So Newells first point is that Turing machines
only see the external world from the point of view of the marks on its tape.
The italicized sentence could have been taken straight out of [Smith, 1985]!
Smith, however, might have replaced and with but, to emphasize the
twice-removed-from-reality nature of the limited contact.
The sentence that follows the italicized one should be compared to
Piccininis remarks in [Piccinini, 2011, 741, n. 11] (see Ch. 7, NOTES12).
By universality, Newell means the ability to produce an arbitrary input-
output function (p. 147). His point in this sentence is that, in order for a
Turing machine to deal with the real world, it has to overcome its reliance
on the just the marks on its tape. As the next sentence suggests, we dont
have to worry about that if were not dealing with the real world. If,
for example, we wanted to write a toy computer program that deals with
houses, its enough to let it deal with computer representations of houses,
as in Fig. 17.3.
The transducers do the hard work of encoding the real world into the syntax
of the Turing-machine tapes marks and decoding those marks back into
real-world entities.
The penultimate sentence reminds us that the input-output codings must
themselves be computable. And the last sentence takes us back to
Smith, suggesting even another reason to be cautious about the limits of
correctness: Not only is the computer separated from the real world in the
4I think requires would have been a more appropriate word!
17.6. NOTES FOR NEXT DRAFT 623
way that Smith notes, but the links that it does have are indirect and subject
to their own translation limitations.
7. [Thagard, 1984, 82], citing [Zeigler, 1976], also notes that computers are twice
removed from reality, because a computer simulates a model which models a
real system.
8. Smiths discussion at the beginning of his paper, about the computer that
confused the rising moon with a Soviet nuclear attack because this lunar
reflection hadnt been predicted by the systems designers (p. 18), is reminiscent
of Clelands hollandaise-sauce on the moon. If Clelands recipe assumes that it is
being executed on Earth, then it cant be faulted for failing on the moon; someone
using it on the moon is the guilty culprit. But if Clelands recipe advertises itself
as being universally applicable, then it is at fault. One can debug the recipe
by adding a precondition that it must be executed on Earth, or by expanding it to
clarify how to modify it if it is used on the moon (as in Denver cake mix recipes).
Similarly, the early-warning system computer must be debugged by clarifying an
unstated assumption (perhaps that any signal of a certain type must be a nuclear
attack).
10. . . . as well as modelling the artifact itself, you have to model the
relevant part of the world in which it will be embedded. [Smith, 1985,
24, col. 1]
This is essentially Shapiros point that I discuss in [Rapaport, 2015]. This is one
way to handle Clelands hollandaise-sauce problem.
Indeed, I should probably incorporate some of that Covey-award essay in this
chapter!
self-driving elevators dont need very much of it!). Nevertheless, such hybrid
or extended systems will probably remain a reality.
13. [Wegner, 1997, 82] points out that interactive computer programs are grounded
in. . . external reality rather than being autistic.
15. Human fallibility means some of the more subtle, dangerous bugs
turn out to be errors in design; the code faithfully implements the
intended design, but the design fails to correctly handle a particular
rare scenario. [Newcombe et al., 2015, 67]
This is a nice statement of Smiths Gap.
17. Smiths main point is that program verification proves at most that a program
satisfies its specification. But theres no way to formally prove that a
specification is correct, that it matches reality [Smith, 1985, 6]. Both the
specification and the program are models. The former is a model of the world;
the latter is a model of the former (hence its double remove from reality).
18. [Cleland, 2004, 220] also talks about something very much like Smiths gap:
There is a causal gap between the actions specified by a quotidian procedure
and the physical processes that make it reliable. But she finds a positive aspect
to it: the gap between action and process is actually a perk. Because of it, one
can make a great Hollandaise sacue without knowing any chemistry. One need
only know how to perform the action specified by the recipe. Nature takes care
of the rest.
19. Nice question for further discussion (thanks to Albert Goldfain, personal
communication, 3 April 2007):
17.6. NOTES FOR NEXT DRAFT 625
An artist must paint not what he sees in nature, but what is there.
To do so he must invent symbols, which, if properly used, make his
work seem even more real than what is in front of him. (Charles E.
Burchfield,
https://www.burchfieldpenney.org/collection/charles-e-
burchfield/biography/)
Computer Ethics I:
Are There Decisions
Computers Should Never
Make?
The artificial pericardium will detect and treat a heart attack before any
symptoms appear. Its twenty years or more out there, [John] Rogers
said. But we can see a pathwayits not science fiction. Bit by bit,
our cells and tissues are becoming just another brand of hardware to be
upgraded and refined. I asked him whether eventually electronic parts
would let us live forever, and whether he thought this would come as a
relief, offer evidence that wed lost our souls and become robots, or both.
Thats a good thing to think about, and people should think about it, he
said But Im just an engineer, basically. [Tingley, 2013, 80]
629
630 CHAPTER 18. COMPUTER ETHICS I: DECISIONS
Moor, James H. (1979), Are There Decisions Computers Should Never Make?,
Nature and System 1: 217229,
http://www.researchgate.net/publication/242529825 Are there decisions computers should never make
(accessed 2 October 2015).
(a) Friedman, Batya; & Kahn, Peter H., Jr. (1992), People Are Responsible,
Computers Are Not, excerpt from their Human Agency and Responsible
Computing: Implications for Computer System Design, Journal of Systems and
Software (1992): 714; excerpt reprinted in M. David Ermann, Mary B. Williams,
& Michele S. Shauf (eds.) (1997), Computers, Ethics, and Society, Second Edition
(New York: Oxford University Press): 303314.
Can be read as raising an objection to Moor 1979, esp. the section Delegating
Decision Making to Computational Systems (pp. 306307 in the Ermann et
al. 1997 reprint).
(b) Johnson, George (2002), To Err Is Human, New York Times (14 July),
http://www.nytimes.com/2002/07/14/weekinreview/deus-ex-machina-to-err-is-
human.html (accessed 14 November 2012).
An op-ed piece that provides an interesting, real-life, case study of Moors
problem and a possible counterexample to Friedman & Kahn 1992.
18.2. INTRODUCTION 631
18.2 Introduction
Ethics is a branch of philosophy, so computer ethics should be a branch of
the philosophy of computer science. But computer ethics is a large and long-
standing discipline in its own right (for good introductions, see [Moor, 1985],
[Anderson and Anderson, 2006]). We will focus on two topics that I think are central
to the philosophy of computer science but, perhaps until recently, have not been the
focus of most discussions of computer ethics. This chapter will consider whether there
are decisions that computers should never make, and, after discussing the philosophy
of AI (whether we can build artificial intelligences, Ch. 19), Chapter 20 will consider
whether we should build them.
2. A decision could be made as the result of investigating the pros and cons of
various alternatives, evaluating these pros and cons, and then making a decision
based on this evaluation.
Computers can easily make the first kind of decision for us. Can they make the second
kind? The answer is, surely, yes: Computers can play games of strategy, such as
chess and checkers, and they can play them so well that they can beat the (human)
world champions. Such games involve choices among alternative moves that must be
evaluated, with, one hopes, the best (or least worst) choice being made. Computers can
do this.
Can computers be completely rational? As I suggested above, insofar as what
they do is algorithmic, their behavior is rational. But are there limits to a computers
rationality? Model-theoretic limits in the sense of [Smith, 1985] (as we discussed in
632 CHAPTER 18. COMPUTER ETHICS I: DECISIONS
Ch. 17) affect us humans, too. So, if there are limits to our rationality, it shouldnt
surprise us that the same limits might apply to computers. But, at worst, this might
mean that they are no less rational than we are. Well return to this later in this section.
Another question about decisions is whether the process of decision making must
be conscious. Its one thing to go into an unconscious trance and emerge with a
decision. Its another to consciously think about an issue and then come up with a
decision that is clearly and rationally based on the thinking process. If consciousness is
a necessary condition of making a rational decision, and if computers are not conscious
(as many have argued), then they cannot make such rational decisions.
But there are many cases in which we humans make unconscious decisions (without
going into trances!). For instance, we make many decisions about what to eat or
wear without much conscious thought (of course, we also make many such decisions
consciously, with great thought). We also make decisions quickly when we are driving;
often, we have no time to stop and think, but must react (that is, make decisions)
instinctively.
Cognitive scientists tell us that there are two decision-making systems in our
brains: There is an unconscious, instinctive, intuitive, fast, tacit system (called
System 1), and there is a conscious, rational, slow, explicit system (called
System 2).1 The former helps us avoid immediate dangers; the latter helps us make
logical decisions. Unfortunately, sometimes they give us different answers to the same
question.
Arguably, a computer that can tell us how it made a decison, even if it is
unconscious, is better than one that cannot.
But can a computer really make a decision? I suggested above that it is really the
computer program being executed on a computer that is making the decision. And
programs are written by human programmers. So, perhaps it is only humans, using
computers, that make such decisions. Although that is surely sometimes the case,
there are cases in which humans do delegate decision-making powers to computers,
such as in traffic control. Typically, this happens in cases where large amounts of
data are involved in making the decision or in which decisions must be made quickly
and automatically. And, of course, given that one of the goals of computer science
is to determine what real-world tasks are computable, finding out which decisions are
computable is an aspect of that.
In any case, humans might so delegate such power. So, the ultimate question is:
What areas of our lives should be computer-controlled, and what areas should be left
to human control?
Are there decisions that non-human computers could not make as well as humans?
For instance, there might be situations in which there are sensory limitations that
prevent computer decisions from being fully rational. Or there might be situations
in which a computer could not be empathetic.
To answer this question, we need to distinguish between what is the case and what
could be the case. We could try to argue that there are some things that are in principle
1 For other adjectives characterizing these two systems, see
impossible for computers to do. Except for computationally impossible tasks (such as
deciding whether an arbitrary computer program halts), this might be hard to do. But
we should worry about the possible future now, so that we can be prepared for it if it
happens.
Whether there are, now, decisions that a computer could not make as well as a
human is an empirical question. It is capable of investigation, and, currently, the answer
is unknown. Many, if not most, of the objections to the limitations of computers are
best viewed as research problems: If someone says that computers cant do X, we
should try to make ones that do X.
Another version of our question is this: Are there decisions that non-human
computers could make better than humans? Well come back to this in the next section.
But this raises another question: How could computer decision-making competence be
judged? The best answer is: in the same way that human decision-making competence
is judged, namely, by means of its decision-making record and its justifications for its
decisions.
Why do justifications matter? After all, if a computer constantly bests humans at
some decision-making task, why does it matter how it does it? (Maybe we would be
better off not knowing! For a science-fiction treatment of this kind of issue, though not
in the context of computers, see Arthur C. Clarkes Childhoods End [Clarke, 1953].)
Presumably, however, decision-making computers do need to be accountable for their
decisions, and knowing their justifications helps this accounting. The justifications,
of course, need not be the same as human justifications. For one thing, human
justifications might be wrong or illogical.2
This suggests that the question Are there decisions that a computer should not
make? should really have nothing to do with computers! The question should really
be: Are there decisions that should not be made on a rational basis?
Again: Are there decisions that a computer should never make? The computer
scientist Joseph Weizenbaum has argued that, even if a computer could make decisions
as well as, or even better than, a human, they shouldnt, especially if their reasons differ
from ours [Weizenbaum, 1976].
And James Moor points out that, possibly, computers shouldnt have the power
to make (certain) decisions, even if they have the competence to do so (at least as
well as, if not better than, humans) [Moor, 1979]. But, if they have the competence,
why shouldnt they have the power? For instance, suppose a very superstitious group
of individuals makes poor medical decisions based entirely on their superstitions;
shouldnt a modern physicians outsider medicine take precedence? And does the
fact that computers are immune to human diseases mean that they lack the empathy to
recommend treatments to humans?
[Moor, 1979] suggests that, if computers can make certain decisions at least as
well as humans, then we should let them do so, and it would then be up to us humans
to accept or reject the computers decision. After all, when we ask for the advice of
an expert in medical or legal matters, we are free to accept or reject that advice. Why
2 See, especially, [Tversky and Kahneman, 1974]. Also see [Wainer, 2007] on humans difficulty in
reasoning about probability and statistics: Ignorance of how sample size affects statistical variation has
created havoc for nearly a millennium. For other citations on humans difficulty in reasoning about
probability and statistics, see http://www.cse.buffalo.edu/rapaport/575/reasoning.html
634 CHAPTER 18. COMPUTER ETHICS I: DECISIONS
should help us reach those goals or satisfy those values, but they should not change
them.
But why not? Computers cant be legally or morally responsible for their decisions,
because theyre not persons. At least, not yet. But what if AI succeeds? Well return to
this in Chapters 19 and 20. Note, by the way, that for many legal purposes, non-human
corporations are considered to be persons.
[Friedman and Kahn, 1997] argue that humans arebut computers are not
capable of being moral agents and, therefore, computers should be designed so that:
1. humans are not in merely mechanical roles with a diminished sense of agency,
and
Lets consider point 1: They argue that computers should be designed so that
humans do realize that they (the humans) are moral agents. But what if the computer
has a better decision-making track record than humans? [Friedman and Kahn, 1997]
offer a case study of APACHE, a computer system that can make decisions about when
to withhold life support from a patient. It is acceptable if it is used as a tool to aid
human decision makers. But human users may experience a diminished sense of
moral agency when using it, presumably because a computer is involved.
But why? Suppose APACHE is replaced by a textbook on when to withhold life
support, or by a human expert. Would either of those diminish the human decision-
makers sense of moral agency? In fact, wouldnt human decision makers be remiss
if they failed to consult experts or the writings of experts? So wouldnt they also be
remiss if they failed to consult an expert computer?
Or would humans experience this diminished sense of moral agency for the
following reason? If APACHEs decisions exhibit good performance and are more
relied on, then humans may begin to yield to its decisions. But why would that be bad?
Turning to point 2, computers should be designed so that humans do realize that
computers are not moral agents. Does this mean that computers should be designed so
that humans cant take [Dennett, 1971]s intentional stance towards them?
But what if the computer did have beliefs, desires, and intentions? AI researchers
are actively designing computers that either really have them, or else that are best
understood as if they had them.3 Would they not then be moral agents? If not, why
not? According to [Dennett, 1971], some computers cant help masquerading as
belief-desire-intention agents, because thats the best way for us to understand them.
[Friedman and Kahn, 1997] argue that we should be careful about anthropomorphic
user-interfaces, because the appearance of beliefs, desires, and intentions does not
imply that they really have them. This is a classic theme, not only in the history of AI,4
3 See, e.g., [Kumar, 1994], [Kumar, 1996], https://www.google.com/search?q=belief+desire+intention,
most famous version, allegedly simulated a Rogerian psychotherapist. See [Weizenbaum, 1966],
[Weizenbaum, 1967], [Weizenbaum, 1976], [Shapiro and Kwasny, 1975], [Winograd, 1983, Ch. 2], and
http://www.cse.buffalo.edu/rapaport/572/S02/proj1.html
636 CHAPTER 18. COMPUTER ETHICS I: DECISIONS
but also in literature,5 and cinema.6 And this is at the heart of the Turing test in AI, to
which we now turn.
5 E.g., [Powers, 1995] (in which a cognitive-science grad student is assigned the task of programming
a computer to pass the PhD exam in English literature; he (the grad student) falls in love with her (the
computational cognitive agent)) and [Dick, 1968] (which was the basis of the film Blade Runner).
6 E.g., Steven Spielbergs A.I. Artificial Intelligence, Spike Jonzes Her, Alex Garlands Ex Machina, et al.
18.6. NOTES FOR NEXT DRAFT 637
Hence, perhaps the ethical issues really concern the nature of different kinds of
algorithms. If the algorithm is neat (in the sense of being based on formal
logic), then, if the algorithm is correct, surely there is no moral reason not to
use it (not to be correctly rational). If the algorithm is a heuristic (perhaps
as in the case of expert systems), then there is no more or less moral reason to
use it then there is to trust a human expert. If the algorithm is scruffy (not
logical, and not necessarily based on any formal theory), then one might have
moral qualms.
4. Here is one interesting aspect of computer decision making: It is impossible
(or at least less likely) to be swayed by such things as letter-writing campaigns,
parades, etc. Such tactics were used by GM in their campaign to persuade some
communities to open new plants for their Saturn cars. See, e.g., [Russo, 1986].
5. Of course, one crucial feature of whether decisions should be made by computers
(algorithms) is what kinds of decision-making criteria and data are encoded in
the algorithm, not to mention whether the algorithm is verifiable.
6. I may have already said this above somewhere (check to see!): whether there
are decisions computers should never make could mean: whether there are
decisions that should not be made algorithmically. Another (better?) question
is: whether there are decisions that should not be made by algorithms that are so
complex that we cannot understand them (but must merely have faith in them).
7. Even if we allow computers to make (certain) decisions for us, it is still important
for us to be able to understand those decisions and to be able follow through/act
on them. When my son was first learning how to drive, I did not want him to rely
638 CHAPTER 18. COMPUTER ETHICS I: DECISIONS
on laser cruise control, because I wanted him to know how and when to slow
down or speed up on a superhighway. Once he knew how to do that, then he
could rely on the cars computer making those decisions for him, because, if the
computers decision-making skills went awry or were unavailable (for example,
the system wont work when the windshield wipers are on, or when the car
ahead of you is dirty!), he should know how to do those things himself. (See
Halpern 2015, Zremski 2009.)
8. This may have been mentioned earlier, but clearly this issue is highly relevant
today what with all the hype about self-driving cars. Some of the same issues
arise for self-flying planes (see Markoff 2015). Keep in mind that another vehicle
that many of us use all the time was once only human-operated but is now
completely automated (and I doubt that any of us would know what to do if
it failed): elevators.
18.7. FURTHER SOURCES OF INFORMATION 639
Philosophy of
Artificial Intelligence
1 http://www.cse.buffalo.edu/rapaport/111F04.html
643
644 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
19.2 Introduction
As with computer ethics, the philosophy of artificial intelligence (AI) is another large
and long-standing discipline in its own right, and so we will only focus on two main
topics: What is AI? And is AI possible? For the second question, we will look at Alan
Turings classic 1950 paper on the Turing test of whether computers can think and at
John Searles 1980 Chinese Room Argument challenging that test.
metaphor, except that instead of describing AI as being at the cutting edge, he said that it was at the
periphery of computer science!
646 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
5 And, if cognition requires more than one recursive function, then, presumably, they will be interacting
If (and to the extent that) cognitive states and processes can be expressed
as algorithms, then they can be implemented in non-human computers.
be ruled out: The point of the Turing test is for a human to judge whether something is intelligent (or as
intelligent as a human).
648 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
man is supposed to convince the interrogator that he (the man) is the woman, so he
will occasionally have to lie. The man wins if he convinces (fools) the interrogator
that he is the woman; the woman wins if she convinces the interrogator that she is the
woman. (Another way of thinking of this is that the interrogator wins if he correctly
figures out who is in which room.) If the man wins, then he is said to have passed
the test. Turing suggested that an average interrogator will not have more than 70
per cent. chance of making the right identification after five minutes of questioning
[Turing, 1950, 442]. But the actual amount of time may be irrelevant. One could
conduct a series of imitation games and calculate appropriate statistics on how likely
an interrogator is to make a correct determination after a given period of time.
What does this have to do with whether computers can think? What has come to be
known as the Turing test makes one small change in the Imitation Game:
We now ask the question, What will happen when a machine takes the
part of [the man] in this game? Will the interrogator decide wrongly
as often when the game is played like this as he [or she] does when the
game is played between a man and a woman? These questions replace our
original, Can machines think? [Turing, 1950, 434]
It turns out that there is some ambiguity in Turings question, and, in any case,
other modifications are possible. First, what is the machine (that is, the computer)
supposed to do? Is it supposed to convince the interrogator that it is the woman? (That
is, is it supposed to imitate a woman?) Or is it supposed to convince the interrogator
that it is a man who is trying to convince the interrogator that he is a woman? (That
is, is it supposed to imitate a man?) Usually, the Turing test is taken, more simply
and less ambiguously, to consist of a set up in which a computer, a human, and a
human interrogator are located in three different rooms, communicating over a chat
interface, and in which both the human and the computer are supposed to convince
the interrogator that each is a human. To the extent that the computer convinces the
interrogator and the human doesnt, under the same criteria for successful convincing
that obtains in the original imitation game, the computer is said to have passed the
Turing test.
And an even simpler version consists merely of two players: a human interrogator
and someone or something (a human or a computer) in two separate, chat-interfaced
rooms. If a computer convinces the interrogator that it is a human, then it passes the
Turing test. Which version of the test is better has been discussed in the literature,8 but
we will now turn to Turings view of the matter.
Here is his answer to the question that has now replaced Can machines think?:
I believe that at the end of the century [that is, by the year 2000] the use
of words and general educated opinion will have altered so much that
one will be able to speak of machines thinking without expecting to be
contradicted [Turing, 1950, 442, my boldface].
Before trying to understand exactly what this might mean, lets consider the Turing test
a bit further.
8 See, especially, [Piccinini, 2000], as well as [French, 2000], [Rapaport, 2006b].
19.4. THE TURING TEST 649
Entity A is like (that is, is analogous to) entity B with respect to important
properties P1 , . . . , Pn .
A is (probably) like B with respect to some other property Q.
Such an argument is non-deductive: Its quite possible for the premise to be true but
for the conclusion to be false. But it has some inductive strength: The more alike two
objects are in many respects, the more likely it is that they will be alike in many other
respects (and maybe even all respects).
The problem of the existence of other minds is this: I know that I have a mind
(because I know what it means for me to think, to perceive, to solve problems, etc.).
How do I know whether you have a mind? Maybe you dont; maybe youre just some
kind of computer, or android,9 or philosophical zombie.10
The argument from analogy for the existence of other minds is therefore this
argument:
1. You are like me with respect to all physical and behavioral properties.
2. I have a mind. (Or: My behavioral properties can best be explained by the fact
that I have a mind.)
9 like Commander Data in Star Trek.
10 A philosophical zombie is not a horror-movie zombie. Rather, it is an entity who is exactly like us in all
respects but who lacks a mind or consciousness. See [Kirk, 1974], [Chalmers, 1996a], and other references
at http://www.cse.buffalo.edu/rapaport/719/csnessrdgs.html#zombies
650 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
3. (probably) you have a mind. (Or: Your behavioral properties can best be
explained if it is assumed that you also have a mind.)
Of course, this argument is deductively invalid. I could be wrong about whether you
are biologically human. In that case, the best explanation of your behavior might be, not
that you have a mind, but that you are a computer who has been cleverly and suitably
programmed. Now, there are two ways to understand this: One way to understand it
is to say that you dont have a mind; youre just a cleverly programmed robot. But
another way to understand it is to say that being cleverly programmed in that way is
exactly what it means to have a mind; perhaps we are both cleverly programmed in that
way, or perhaps (a) you are programmed in that way, whereas (b) I have a brain that
behaves in that way, but (c) these are simply two different implementations of having
a mind.
In either case, am I wrong about your being able to think? That is, am I wrong about
your (human) cognitive abilities? Turings answer is: No! More cautiously, perhaps,
his answer is that whether Im wrong depends on the definition of (human) cognitive
abilities (or thinking):
If human-like cognition requires a (human) brain, and you lack one, then,
technically speaking, you dont have human-like cognition (even if you pass the Turing
test). On this view, I really do think, but you can only think.11
But, if human-like cognition can be implemented in different waysthat is, if it
does not require a (human) brainthen we both have human-like cognition (and thats
why you pass the test). On this view, we both can think.
Heres an analogy: Everyone can agree that birds fly.12 Do people fly? Well, we
certainly speak as if they do; we say things like, I flew from Buffalo to JFK last week.
But we also know that I dont literally mean that I flapped my arms when flying from
Buffalo to JFK; rather, I flew in an airplane: It wasnt I who was flying; it was the
airplane. OK; do planes fly? Well, they dont flap their wings, either. In what sense are
they flying?
There are two ways to understand what it means to say that planes fly: One
way is by what I will call metaphorical extension [Lakoff and Johnson, 1980a],
[Lakoff and Johnson, 1980b]. The reason we say that planes fly is that what they are
doing is very much like what birds do when they fly (they move through the air, even
if their methods of doing so are different). So, instead of using a simile, saying that
planes move through the air like birds fly, we use a metaphor, saying directly that
planes fly. And then that metaphor becomes frozen; it becomes a legitimate part of
our language, so much so that we no longer realize that it is metaphorical. This is just
like what happens when we say that time is money: We say things like, Youre wasting
time, This will save you time, How did you spend your vacation?, and so on. But
were usually not aware that we are speaking metaphorically (until someone points it
11 That is, you are not really thinking, but doing something else that I will call thinking only in a
metaphorical sense.
12 This is true in general, even if most birds actually dont fly: Not only do penguins, ostriches, etc.,
not fly, but baby birds, birds with injured wings, dead birds, etc., also dont fly. Handling the logic of
statements like this is a branch of AI called non-monotonic reasoning; see 2.6.1.4 and [Ginsberg, 1987],
[Strasser and Antonelli, 2015].
19.5. THE CHINESE ROOM ARGUMENT 651
out), and theres often no other (convenient) way to express the same ideas. As Turing
said, our use of words has changed.
The other way to understand what it means to say that planes fly is that we have
realized that flapping wings is not essential to flying. There are deeper similarities
between what birds and planes do when they move through the air that have nothing
to do with wing-flapping but that have everything to do with the shape of wings and,
more importantly, with the physics of flight. We have developed a more abstract, and
therefore more general, theory of flight, one that applies to both birds and planes. And
so we can promote the word fly from its use for birds to a more general use that also
applies to planes. Flying can be implemented by both biological and non-biological
entities. As Turing said, general educated opinion has changed.
In fact, both the use of words and general educated opinion has changed. Perhaps
the change in one facilitated the change in the other; perhaps the abstract, general
theory can account for the metaphorical extension.
What does this have to do with the philosophy of AI? Well, what is a computer?
As we saw in 6.2, originally, a computer was a human who computed. That was
the case till about the 1950s, but, a half-century later, a computer is a machine. (To
emphasize this, before around 1950, what we now call computers were called digital
or electronic computers to distinguish them from the human kind. But, now, it is very
confusing to read pre-1950 papers without thinking of the word computer as meaning,
by default, a non-human machine.) Now, in the beginning of the 21st century, general
educated opinion holds that computers are viewed, not as implementing devices, but
in functional, input-output terms. The same, as we will see, is slowly becoming true
for the word think. But some philosophers argue that what computers do is not really
thinking. To understand why, lets think about one of those philosophers.
Chineseless John Searle who occupies the Chinese room by referring to the latter as Searle-in-the-room.
652 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
I still dont understand a word of Chinese and neither does any other digital
computer because all the computer has is what I have: a formal program
that attaches no meaning, interpretation, or content to any of the symbols.
What this simple argument shows is that no formal program by itself is
sufficient for understanding. . . . [Searle, 1982, 5]
Note that a program that did attach meaning, etc., might understand. But Searle
denies that, too:
Why not? Because only something that has the same causal powers as brains
can have intentionality [Searle, 1980, 423]. By intentionality here, Searle means
cognition more generally. So he is saying that, if something exhibits cognition, then
it must have the same causal powers as brains.
All right; what are these causal powers? After all, if they turn out to be something
that can be computationally implemented, then computers can have them (which Searle
thinks they cannot). So, what does he say they are? He says that these causal powers
are due to the fact that I am a certain sort of organism with a certain biological
(i.e. chemical and physical) structure [Searle, 1980, 422]. Weve narrowed down the
nature of these causal powers a little bit. If we could figure out what this biological
structure is, and if we could figure out how to implement that structure computationally,
then we should be able to get computers to understand. Admittedly, those are big ifs,
but they are worth trying to satisfy.
So, what is this biological structure? Before we see what Searle says about it,
lets think for a moment about what a structure is. What is the structure of the
brain? One plausible answer is that the brain is a network of neurons, and the way
those neurons are organized is its structure. Presumably, if you made a model of the
brain using (lets say) string to model the neurons, then, if the strings were arranged
in the same way that the neurons were, we could say that the model had the same
structure as the brain. Of course, string is static (it doesnt do anything), and neurons
are dynamic, so structure alone wont suffice, but its a start.
But Searle doesnt think so. He says that a simulated human brain made
entirely of. . . millions (or billions) of old beer cans that are rigged up to levers and
powered by windmills would not really exhibit cognition even though it appeared
to [Searle, 1982].14 In other words, structure plus the ability to do something is not
enough: Cognition must (also) be biological, according to Searle; it must be made of
the right stuff.
14 [Weizenbaum, 1976, Ch. 5] considers computers made of bailing wire, chewing gum, and adhesive
tape. [Weizenbaum, 1976, Ch. 2] considers a Turing machine made of toilet paper and pebbles. And recall
our discussion in 8.8 of Hilberts tables, chairs, and beer mugs.
654 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
But now consider what Searle is saying: Only biological systems have the requisite
causal properties to produce cognition. So were back at our first question: What
are those causal properties? According to Searle, they are the ones that are causally
capable of producing perception, action, understanding, learning, and other intentional
[i.e., cognitive] phenomena [Searle, 1980, 422]. Again: What are the causal properties
that produce cognition? They are the ones that produce cognition! Thats not a very
helpful answer.
Elsewhere, Searle does say some things that give a possible clue as to what the
causal powers are: mental states are both caused by the operations of the brain and
realized in the structure of the brain [Searle, 1983, 265]. In other words, they are
implemented in the brain. And this suggests a way to avoid Searles argument from
biology.
S2 Cognition is semantic.
In this section, we will look at reasons for thinking that (S3) is false, that syntax does
suffice for semantics.
First, lets consider this argument in a little bit more detail. Premise (S1) says
that computer programs merely tell a computer to (or describe how a computer can)
manipulate symbols on the basis of their properties as marks and their relations
among themselves, completely independently of their semantic relations, that is, of the
relations that the symbols have to other items, items that are external to the computer
and that are the meanings or interpretations of the symbols, the things in the real world
that the symbols represent.
Premise (S2) says that cognition is centrally concerned with such external
relations. Cognition, roughly speaking, is whatever the brain does with the sensory
inputs from the external world. To fully understand cognition, according to this
premise, it is necessary to understand the internal workings of the brain, the external
world, and the relations between them. That is a semantic enterprise.
It seems clear that the study of relations among the symbols alone could not
possibly suffice to account for the relations between those symbols and anything else.
Hence premise (S3): Syntax and semantics are two different, though related, subjects.
Conclusion (S4) seems to follow validly. So, any questions about the goodness of
the argument must concern its soundness: Are the premises true? Doubts have been
raised about each of them.
Lets look at (S1) first: Although it is not a computer program, the World Wide Web
is generally considered to be a syntactic object: a collection of nodes (for example,
656 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
websites) related by links, that is, a mathematical graph. Some researchers have felt
that there are limitations to this syntactic web and have proposed the Semantic Web.
By attaching meanings to websites (as Searle might say), they hope to make the Web
more. . . well. . . meaningful, more useful. In fact, however, the way they do this is by
adding more syntax!15 So, for now, well accept premise (S1).
Next, lets look at (S2): At least one major philosopher, Jerry Fodor, has argued
that the study of cognition need not involve the study of the external world that is being
cognized [Fodor, 1980]. For one thing, we would need to solve all of the problems of
physics, cosmology, chemistry, biology, etc.in other words, all of the problems of
understanding the external worldbefore we could fully understand cognition. That
by itself is not conclusive; after all, it has been argued that any single branch of AI
is AI complete, for instance, that the problem of natural-language understanding
cannot be fully solved before fully solving all of the other problems in in AI. More
importantly, Fodor argues that cognition is what takes place internally to the brain.
Whether the brain correctly or incorrectly interprets its input from the external world,
its the interpretation that matters, not the actual state of the external world. This view
is called methodological solipsism. Solipsism is, roughly, the view that I am the only
thing that exists; you are all figments of my imagination. Note that you cannot make
the same claim, because, after all, if solipsism is true, then you dont exist!16 (Theres
a story that, at a lecture that Bertrand Russell once gave on solipsism, someone in the
audience commented that it was such a good theory, why didnt more people believe it?)
Methodological solipsism is the view that, as a methodology for studying cognition, we
can pretend that the external world doesnt exist; we only have to investigate what the
brain does with the inputs that it gets, not where those inputs come from or what they
are really like.
Of course, if understanding cognition only depends on the workings of the brain
and not on its relations with the external world, then the study of cognition might be
purely syntactic. And so were ready to consider premise (S3). Can we somehow get
semantics from syntax? There are three, interrelated reasons for thinking that we can.
First, we can try to show that semantics, which is the study of relations between
symbols and meanings, can be turned into a syntactic study, a study of relations among
symbols and symbolized meanings. Second, it can be argued that semantics is
recursive in the sense that we understand a syntactic domain in terms of an antecedently
understood semantic domain, but that there must be a base case, and that this base case
is a case of syntactic understanding. Third, we can take the methodologically solipsistic
approach and argue that an internal, narrow, first-person point of view is (all that is)
needed for understanding or modeling cognition.
Before looking at each of these, remember that Searle claims that syntax cannot
suffice for semantics because the former is missing the links to the external world.
This kind of claim relies on two assumptions, both of which are faulty. First, Searle is
assuming that computers have no links to the external world, that they are really (and
not just methodologically) solipsistic. But this is obviously not true, and is certainly
15 See [Rapaport, 2012b, 3.2 and note 25] for details.
16 Actually, solipsism is not really the claim that only I exist, but that I live in a world of my own completely
cut off from the external world, and so do you. This is reminiscent of the philosopher Gottfried Leibnizs
monads. But thats beyond our present scope.
19.5. THE CHINESE ROOM ARGUMENT 657
inconsistent with the arguments about the relation of computing to the world that we
looked at in our discussion of [Smith, 1985] in Chapter 17. Second, Searle assumes
that external links are really needed in order to attach meanings to symbols. But, if so,
then why couldnt computers have them just as well as humans do? Both humans and
computers exist and act in the world. If we humans have the appropriate links, what
reason is there to think that computers could not? (Well, there is the argument from
biology, but this is still an issue that needs to be addressed.)
19.5.3.2 Semiotics
The first reason for thinking that syntax might suffice for semantics comes from
semiotics, the study of signs and symmbols. According to one major semiotician,
Charles Morris [Morris, 1938], semiotics has three branches: syntax, semantics, and
pragmatics.
Given a formal system of marks (symbols without meanings)sometimes called
a (formal) symbol systemsyntax is the study of relations among the marks: how
to recognize, identify, and construct them (in other words, what they look like, for
instance, their grammar), and how to manipulate them (for instance, their proof theory).
Importantly, syntax does not study any relations between marks and non-marks.
Semantics is the study of relations between the marks and their meanings.
Meanings are part of a different domain of semantic interpretations (an ontology).
Therefore, syntax cannot and does not suffice for semantics! (Or so it would seem.)
Pragmatics has been variously characterized as the study of relations among marks,
meanings, and the cognitive agents that interpret them; or as the study of relations
among marks, meanings, interpreters, and contexts. Some philosophers have suggested
that pragmatics is the study of everything that is interesting about symbols systems that
isnt covered under syntax or semantics!
For our purposes, we only need to consider syntax and semantics. Again, lets be
clear. Syntax studies the properties of, and relations among, the elements of a single
set of objects (which we are calling marks); for convenience, call this set SYN.
Semantics studies the relations between the members of two sets, SYN and a set that
well call SEM.
Now, take the set-theoretical union of these two setsthe set of marks and the set
of meanings: M = SYN SEM. Consider M as a new set of marks. In other words, we
have now internalized the previously external meanings into a new symbol system.
And the study of the properties of, and the relations among, the members of M is Ms
syntax!
In other words, what was formerly semantics (that is, relations between the marks
in SYN and their meanings in SEM) is now syntax (that is, relations among the new
marks in M.) This is how syntax can suffice for semantics.17
This can be made clear with the diagram in Figure 19.2.
Consider the top picture: a set, which I will call a SYNtactic DOMain, showing
two of its members and a relation between them. Imagine that there are many members,
17 In fact, any study of semantics in linguisticsin the sense of a study of the meanings of linguistic
expressionsthat focuses only on relations among the expressions and not on their relations to the world is
a syntactic enterprise. This is the nature of, for instance, cognitive semantics.
658 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
Figure 19.2:
19.5. THE CHINESE ROOM ARGUMENT 659
each with several properties, and many with relations between them. The study of this
set, its members, their properties, and their relations is the syntax of SYN-DOM.
Now consider the middle picture: two sets, SYN-DOM and another, which I will
call a SEMantic DOMain. SYN-DOM, of course, has its syntax. But so does SEM-
DOM. (Often, in AI, the syntax of a semantic domain is called its ontology.) But now
there are additional relations between (some or all of) the members of SYN-DOM and
(some or all of) the members of SEM-DOM. Note that these relations are external to
both domains: You really cant describe these relations using only the language used to
describe SYN-DOM or the language used to describe SEM-DOM; instead, you need a
language that can talk about both domains, and that language cannot be internal to
either domain. The study of these relations is what is called semantics. The usual
idea is that the members of SEM-DOM are the meanings of the members of SYN-
DOM, espcially if SYN-DOM is the language used to describe SEM-DOM. So, for
instance, you might think of SEM-DOM as the actual world and SYN-DOM as either
a language like English that talks about the actual world or perhaps a scientific theory
about the actual world, perhaps expressed in some mathematical (or computational!)
language. Another way to think about this is that SEM-DOM gives us the facilities
needed to understand SYN-DOM: We understand SYN-DOM in terms of SEM-DOM.
In the bottom picture, we have taken the union of these two domains. Now, the
formerly external semantic relations have become internal relations of the new,
unioned domain. But, as such, they are now no different in principle from the
previous internal, syntactic relations of SYN-DOM or the previous internal, syntactic
or ontological relations of SEM-DOM. Thus, these previous semantic relations have
also become syntactic ones. I call this syntactic semantics.18
This semiotic technique for turning semantics into syntax raises a number of
questions: Can the semantic domain be internalized? Yes, under the conditions
obtaining for human language understanding: How do we learn the meaning of a word?
How, for instance, do I learn that the word tree means tree? The common view is
that this relation is learned by associating trees with the word tree. But really what
happens is that my internal representation of a tree is associated with my internal
representation of the word tree. Those internal representations could be activated
neurons. In whatever way that neurons are bound together when, for instance, we
perceive a pink cube (perhaps with shape neurons firing simultaneously with, and
thereby binding with, color neurons that are firing), the neurons that fire when we
see a tree might bind with the neurons that fire when we are thinking of, or hearing, or
reading the word tree.
And the same thing can happen in a computational cognitive agent. Suppose we
have such an agent (a robot, perhaps; call her Cassie) whose computational mind
is implemented as a semantic network whose nodes represent concepts and whose arcs
represent structural relations between concepts, as in figure 19.3: There is a real tree
external to Cassies mind. Light reflecting off the tree enter Cassies eyes; this is the
causal link between the tree and Cassies brain. The end result of the visual process is
an internal representation of the tree in Cassies brain. But she also has an internal
18 For more details on syntactic semantics, see, e.g., [Rapaport, 1988], [Rapaport, 2012b],
[Rapaport, 2015].
660 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
Figure 19.3:
19.5. THE CHINESE ROOM ARGUMENT 661
representation of the word tree, and those two representations can be associated.
What Cassie now has is an enlarged set of marks, including a mark for a word and
a mark for the words meaning. But they are both marks in her mind.19
This is akin the Robot Reply to the CRA [Searle, 1980, 420], in which sensors and
effectors are added to the Chinese Room so that Searle-in-the-room can both perceive
the external world as well as act in it. Searles response to the Robot Reply is to say
that it is just more symbols. The reply to Searle is to say that that is exactly how human
cognition works! In our brains, all cognition is the result of neuron firings, and the
study of that single set of neuron firings is a syntactic study (because it is the study
of the properties of, and relations among, a single set of marksin this case, the
marks are neuron firings). The same is true for computers: If I say something to
Cassie in English, she builds internal nodes that represent my utterance in her semantic
network. If I show pictures to her, or if she sees something, she builds other internal
nodes representing what she sees. This set of nodes forms a single computational
knowledge base, whose study is syntactic in nature (because it is the study of the
properties of, and relations among, a single set of marksin this case, the marks
are nodes in a semantic network). In the same way, both truth tables and the kind
of formal semantics that logicians study are syntactic ways of doing semantics: The
method of truth tables syntactically manipulates symbols that represent semantic truth
values. And formal semantics syntactically manipulates symbols that represent the
objects in the domain of semantic interpretation.
The second prong of our reply to the Argument from Semantics concerns the differing
points of view of the native, Chinese-speaking interrogator and Searle-in-the-room.
To understand how a cognitive agent understands, and to construct a computational
cognitive agent, we must take the first-person point of view. We must construct
a cognitive agent (a robot, if you will) from the agents point of view, from the
perspective of whats going on inside the agents head. In other words, we must
be methodologically solipsistic and develop or implement a narrow or internal
model of cognition. Such a model is called narrow, as opposed to wide, because
it ignores the wider outside world and focuses only on the narrow inner world of the
agents point of view. We dont need to understand the causal or historical orgins of
the agents internal symbols; we only need to understand the symbols.
But there are two different points of view: There is Searle-in-the-rooms point of
view and there is the interrogators point of view. In Searles CRA, Searle-in-the-
rooms point of view trumps the interrogators; in the Turing test (and in the kind
of syntactic semantics that I am advocating), the interrogators trumps Searle-in-the-
rooms. How should we resolve this?
Here is an analogy that I think helps clarify the situation. Consider the following
passage from The Wizard of Oz (the novel, not the movie):
19 For more about Cassie, see A Conversation with Cassie at
Is Dorothy a witch? From her point of view, the answer is no; from Boqs point
of view, the answer is yes. Whose point of view should trump the others? Dorothy
certainly believes that shes not a witch, at least as she understands the word witch
(you knowblack hat, broomstick, Halloween, and all that). Now, it is certainly
possible that Dorothy is (such a) witch while believing (mistakenly in that case) that she
is not (such a) witch. So, what counts as being a witch (in these circumstances)? Note
that the dispute between Dorothy and Boq is not about whether Dorothy is really a
witch in some context-independent sense. The dispute is about whether Dorothy is a
witch in Boqs sense, from Boqs point of view. And, because Dorothy is in Oz, Boqs
point of view trumps hers!
Now compare this to the Chinese room situation: Here, instead of asking whether
Dorothy is a witch, we ask: Does Searle-in-the-room understand Chinese? From his
point of view, the answer is no; from the native Chinese speakers point of view,
the answer is yes. Whose point of view should trump the others? Searle-in-the-
room certainly believes that he does not understand Chinese, at least as he understands
understanding Chinese (you knowthe way you understand your native language as
opposed to the way you understand the foreign language that you may have (poorly)
learned in high school or college). Now, it is certainly possible that Searle-in-the-room
does understand Chinese while believing (mistakenly, in that case) that he does not
understand it. So, what counts as understanding Chinese (in these circumstances)? For
the same reason as in the witch case, it must be the native Chinese speakers point of
view that trumps Searle-in-the-rooms!
Of course, it would be perfectly reasonable for Searle-in-the-room to insist that he
doesnt understand Chinese. Compare Searle-in-the-rooms situation to mine: I studied
French in high school; spent a summer living with a French family in Vichy, France;
spent a summer studying French (but mostly speaking English!) at the University of
Aix-en-Provence; and have visited French friends in France many times. I believe
that I understand about 80% of the French that I hear in a one-on-one conversation
(considerably less if Im hearing it on TV or radio) and can express myself the way
that I want about 75% of the time (I have, however, been known to give directions to
Parisian taxi drivers), but I always feel that Im missing something. Should I believe
19.5. THE CHINESE ROOM ARGUMENT 663
my native French-speaking friends when they tell me that I am fluent in French? Searle
would say no.
But Searle-in-the-room isnt me. Searle-in-the-room cant insist that he alone
doesnt understand Chinese and that, therefore, his point of view should trump the
native, Chinese-speaking interrogators. And this is because Searle-in-the-room isnt
alone: Searle-in-the-room has the Chinese natural-language-processing instruction
book (even if he doesnt know that thats what it is). This is the core of what is known
as the Systems Reply [Searle, 1980, 419420]that it is the system consisting of
Searle-in-the-room together with the rule book that understands Chinese. After all, it
is not a computers CPU that would understand Chinese (or do arithmetic, or do word-
processing), but it is the system, or combination, consisting of the CPU executing a
computer program that would understand Chinese (or do arithmetic, or process words).
And Searle-in-the-room together with the rulebook, stranded on a desert island, could
communicate (fluently) with a native, Chinese-speaking Friday.20
Does it make sense for a system like this to exhibit cognition? Doesnt cognition
have to be something exhibited by a single entity, like a person, an animal, or a robot?
The cognitive anthropologist Edwin Hutchins [Hutchins, 1995a], [Hutchins, 1995b],
[Hollan et al., 2000] has argued that it is an extended or distributed cognitive
system (such as a ships crew together with their navigation instruments) that navigates
a ship [Hutchins, 1995a], [Hutchins, 1995b], [Hollan et al., 2000]. This is a real-
life counterpart of Searle-in-the-room together with his rulebook: Cognitive science
normally takes the individual agent as its unit of analysis.. . . [But] systems that are
larger than an individual may have cognitive properties in their own right that cannot
be reduced to the cognitive properties of individual persons [Hutchins, 1995b, 265,
266]. So, Searle-in-the-room plus his external rulebook can have the cognitive property
of understanding Chinese, even though Searle-in-the-room all by himself lacks that
property.
In fact, if the property of understanding Chinese (that is, the knowledge of Chinese)
has to be located in some smaller unit than the entire system, it would probably have
to be in the rulebook, not Searle-in-the-room! In an episode of the 1950s TV comedy
series I Love Lucy, Lucy tries to convince her Cuban in-laws that she speaks fluent
Spanish, even though she doesnt. To accomplish this, she hires a native Spanish
speaker to hide in her kitchen and to communicate with her via a hidden, two-way radio,
while she is in the living room conversing with her in-law interrogators. Here, it is
quite clear that the knowledge of Spanish resides in the man in the kitchen. Similarly,
the knowledge of Chinese resides in the rulebook. It is the ability to execute or process
that knowledge that resides in Searle-in-the-room. Together, the system understands
Chinese.
It can be argued that cognitive agents have no direct access to external entities.
When I point to a tree, what I am aware of is, not my actual hand pointing to the
actual tree, but an internal visual image of: my hand pointing to a tree. This is
consistent with the 18th-century philosopher Immanuel Kants theory of phenomena
and noumena. We are not directly aware of (for Kant, we have no knowledge
of) the real world as it is in itself; he called this the world of noumena (singular:
20 Friday was the name of the native resident of the island t at Robinson Crusoe was stranded on.
664 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
noumenon). All that we are aware of is the world filtered through our senses and our
mental concepts; he called this the world of phenomena (singular: phenomenon). My
access to the external world of noumena is mediated by internal representatives. There
are several reasons for thinking that this is really the case (no matter how Matrix-like
it may sound!): There is an argument from illusion that says that, because we see
different things with each eye, what we see is, not whats out there, but the outputs of
what our eyes have conveyed to our brains and that our brains have processed.21 There
is an argument from time delay: Because it takes time (no matter how short) for light
reflected off an object to reach our eyes, we see events after they happen; so, what we
are seeing is in our heads, not out there.22
Now, someone who takes a third-person point of view would say that you can have
access to the external world. For instance, as a computer scientist programming a
robot, it seems that I can have access to the world external to the robot as well as to
the robots internal mind (and I can compare the two, to determine if the robot has any
misperceptions). If the robot (or you) and I are both looking at a tree, we see the same
tree, dont we? From the first-person point of view, the answer is no: As the robots
programmer, I have access only to my internal representation of the external world
and to my internal representation of the robots internal world. And the same goes for
you with respect to me, and for me with respect to you. If you and I are looking at a
tree, we are each aware only of our two, separate internal representatives of that tree:
one in your mind, one in mine; one produced by your neuron firings, one produced by
mine. We cannot get outside of our heads to see whats really going on: Kant was
rightly impressed by the thought that if we ask whether we have a correct conception
of the world, we cannot step entirely outside our actual conceptions and theories so as
to compare them with a world that is not conceptualized at all, a bare whatever there
is. [Williams, 1998, 40]
So, by merging internalized semantic marks with internal syntactic marks, the
semantic project of mapping meanings to symbols can by handled by syntax, that is,
by symbol manipulation. That is why syntax suffices for the first-person, semantic
enterprise, and why Searles Argument from Semantics is unsound.
But there is another reason, too.
So, how do we understand SEM? In the same way that we understand SYN: by
treating SEM as a new syntactic domain, and then finding a new semantic domain,
SEM0 , in terms of which to understand it. [Smith, 1987] called this a correspondence
continuum, because it can be continued indefinitely, understanding the SEM0 in terms
of yet another SEM00 , and so on. To stop an infinite regress, there must be a base
case, a last semantic domain that we understand directly, in terms of itself rather
than in terms of something else. But to understand a domain in terms of itself is to
understand its members in terms of their properties and relations to each other. And
that is syntax. It is a kind of understanding that I call syntactic understanding. We
understand a domain syntactically by being conversant with manipulating its marks (or
by knowing which wffs are theorems). On this view, the meaning of a mark is its
location in a network of other marks, with the connections between the marks being
their properties and relations to the other marks in the network. (This is a kind of
structural understanding; cf. [Saussure, 1959].)
Here is another way to think about it: When I understand what you say, I do this
by interpreting what you say, that is, by mapping what you say into my concepts.
Similarly, I (semantically) understand a purely syntactic formal system by interpreting
it, that is, by providing a (model-theoretic) semantics for it. Now, lets turn the tables:
What would it be for a formal system to understand me? (Does that even make sense?
Sure: Robots that could understand natural language, or even simple commands, are
merely programsformal systemsbeing executed.) The answer is this: A formal
system could understand me in the same way that I could understand itby treating
what I say as a formal system and interpreting it. Note that links to the external world
are irrelevant; the semantic interpretation of a formal system is a purely syntactic
enterprise.23
some salt.?), we make plans to ask and to answer questions, and we make plans
about how to initiate or end conversations.
understand plans, especially the speech-act plans of our interlocutors (when you
said, Its chilly in here, did you really mean that you wanted me to close the
window?)
construct a user model, that is, a model of our interlocutors beliefs
learn about the world and about language
have background knowledge (sometimes also called world knowledge or
commonsense knowledge)
remember what it heard, what it learned, what it inferred, and what beliefs it has
revised.
When you consider all of these things, you realize that, to understand natural language,
you need to have a mind! And this mind can be constructed as a syntactic system.
In other words, the rulebook must be a computer program for complete AI. Natural-
language understanding is an AI-complete problem [Shapiro, 1992].
A robot with such a syntactic (or computational) mind would be like Searle-in-the-
room, manipulating symbols that are highly interconnected and that include internal
representatives of external objects. It would be causally linked to the external world
(for this is where it gets its input), which provides grounding and a kind of external,
third-person, semantic understanding. Such a robot could (or, more optimistically,
will be able to) pass a Turing test and escape from the Chinese room.
24 Note that it follows that, once we do know how to solve them, they are no longer AI!
668 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
2. Is the full power of a TM needed for AI? [Sloman, 2002, 3.3] says no. This
seems correct; after all, even NLP might not need the full power of a TM (a
context-free grammar might suffice). On the other hand, cant a human do
anything that a TM can do? TMs, after all, are computational models of human
computing ability.
7. On the CRA:
Rescorlas (and Clelands) emphasis on the interpretation of the symbols used by
a computer is relevant to the CRA. Here is a nice description of computation that
matches the CRA:
Consider again the scenario described by Turing: an idealized
human computor manipulates symbols inscribed on paper. The
computor manipulates these symbols because he [sic] wants to
calculate the value some number-theoretic function assumes on
some input. The computor starts with a symbolic representation for
the input, performs a series of syntactic operations, and arrives at a
symbolic representation for the output. This procedure succeeds only
when the computor can understand the symbolic representations he
manipulates. The computor need not know in advance which number
a given symbol represents, but he must be capable, in principle, of
determining which number the symbol represents. Only then does his
syntactic activity constitute a computation of the relevant number-
theoretic function. If the computor lacks any potential understanding
of the relevant syntactic items, then his activity counts as mere
manipulation of syntax, rather than calculation of one number from
another. [Rescorla, 2007, 261262, my boldface, Rescorlas italics]
Without the boldfaced sentence, this is a nice description of the CR. The
difference is that, in the CR, Searle-in-the-room does not want to communicate
670 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
in Chinese; he doesnt know what hes doing, in that sense of the phrase. Still,
hes doing it, according to the intepretation of the native speaker outside the
room.
9. On the idea that neurons have a syntax (19.5.3.2): [Rescorla, 2012a, 19]
says, neural properties are not multiply realizable. So neural properties are
not syntactic properties. But he gives no argument for why they are not
multiply realizable, nor is it clear why he thinks that they are not syntactic as a
consequence of their non-realizability. In fact, while I would agree that neurons
are not multiply realizable, I fail to see why their properties are not. Properties,
after all, are universals, and, if anything is multiply realizable, surely universals
are.
This process may seem like analogy or metaphor, but it involves more
serious conceptual changes. It is not simply that the new idea is the
old idea applied to a new domain, but that the earlier idea is itself
modified to fit its role in the new theory. [Gopnik, 1996, 498]
I have said elsewhere that the process is metaphorical. I dont think that that is
inconsistent with it also involving more serious conceptual changes: We come
to see the old idea in a new way. This is all relevant to my interpretation of what
Turing meant by the Turing test.
(a) In this essay, Turing seems to come out a bit more strongly than he does in
[Turing, 1950] about the possibility of computers thinking:
You cannot make a machine to think for you. This is. . . usually
accepted without question. It will be the purpose of this paper to
question it. (p. 256)
Although it is possible to read that last sentence neutrally, to my ears it
sounds like a challenge strongly suggesting that Turing thinks that you
can make a machine think. Indeed, later he says that his contention is
that machines can be constructed which will simulate the behaviour of
the human mind very closely (p. 257). This is cautiously wordedis
simulation of thinking (that is, the behavior of the human mind) the same
as real thinking?but his ultimate claim here is that it will come so close
to human thinking as to make no difference: on the whole the output of
them [that is, of such thinking machines] will be worth attention to the
same sort of extent as the output of a human mind (p. 257, my italics).
And how would this be proved? By the Turing test: It would be the actual
reaction of the machine to circumstances that would prove my contention,
if indeed it can be proved at all (p. 257)
672 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
(b) He also suggests that the algorithm for such a machine must be based on
what is now called machine learning: If the machine were able in some
way to learn by experience it would be much more impressive (p. 257).
Moreover, he also suggests that the machine should be an oracle machine!
(Recall our discussion of these in Ch. 11.)
There is. . . one feature that I would like to suggest should be
incorporated in the machines, and that is a random element.
Each machine should be supplied with a tape bearing a random
series of figures, e.g., 0 and 1 in equal quantities, and this series
of figures should be used in the choices made by the machine.
(p. 259)
Note, however, that Turing seems to consider them to be a (small) extension
of Turing machines.
(c) Also interesting is his anticipation of what is now called The Singularity
(see Ch. 11), and the question that we will return to in Ch. 20 about whether
we should build artificial intelligences:
Let us now assume, for the sake of argument, that these
machines ae a genuine possibility, and look at the consequences
of constructing them. To do so would of course meet with
great opposition, unless we have advanced greatly in religious
toleration from the days of Galileo. There would be great
opposition from the intellectuals who were afraid of being put
out of a job. . . . it seems probably that once the machine thinking
method had started, it would not take long to outstrip our feeble
powers. There would be no question of the machines dying,
and they would be able to convers with each other to sharpen
their wits. At some stage therefore we should have to expect the
machines to take control. . . . (pp. 259260)
14. On Turings end of the century prediction, also cite Simon & Newells
ten year prediction about chess. Modify the following passage from my
[Rapaport, 2000b]:
1972; Colby 1981. And on the Loebner competitions, see Loebner 1994, 1998; Rees et al. 1994; Shieber
1994ab.
19.7. NOTES FOR NEXT DRAFT 673
by 30 years; see Simon & Newell 1958) were way off, and I couldnt
hope to compete with the likes of them.26
26 Although Simon says that it had nothing to do with the Turing Test and that (a) I regard the predictions
as a highly successful exercise in futurology, and (b) placed in the equivalent position today, I would make
them again, and for the same reasons. (Some people never seem to learn.) (personal communication, 24
September 1998). At the end of the next millennium, no doubt, historians looking back will find the 40-year
distance between the time of Newell and Simons prediction and the time of Kasparovs defeat to have been
insignificant.
674 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
http://www-formal.stanford.edu/jmc/mcchay69.html
(accessed 12 October 2015).
9. McCarthy, J.; Minsky, M.L.; Rocheser, N.; & Shannone, C.E. (1955), A Proposal for the
Dartmouth Summer Research Project on Artificial Intelligence,
http://www-formal.stanford.edu/jmc/history/dartmouth.pdf
(accessed 20 November 2015).
The founding document of AI. The study is to proceed on the basis of the
conjecture that every aspect of learning or any other feature of intelligence can
in principle be so precisely described that a machine can be made to simulate
it. An attempt will be made to find how to make machines use language, form
abstractions and concepts, solve kinds of problems now reserved for humans, and
improve themselves. We think that a significant advance can be made in one
or more of these problems if a carefully selected group of scientists work on it
together for a summer. An overly optimistic goal, but Newell, Simon, & Shaw
presented a working AI program, the Logic Theorist (see [Newell et al., 1958] and
https://en.wikipedia.org/wiki/Logic Theorist).
11. Rey, Georges (2012), The Turing Thesis vs. the Turing Test, The Philosophers
Magazine 57 (2nd Quarter): 8489.
12. Shannon, Claude E. (1953), Computers and Automata, Proceedings of the Institute of
Radio Engineers 41(10) (October): 12341241.
13. Simon, Herbert A. (1966), Thinking by Computers, in Robert G. Colodny (ed.), Mind
and Cosmos: Essays in Contemporary Science and Philosophy, University of Pittsburgh
Series in the Philosophy of Science, Vol. 3 (Pittsburgh: University of Pittsburgh Press),
321, accessed 30 September 2015 from:
http://digitalcollections.library.cmu.edu/awweb/awarchive?type=file&item=39897
676 CHAPTER 19. PHILOSOPHY OF ARTIFICIAL INTELLIGENCE
Among other things, contains a counterargument to the claim that computers cannot
think because they do only what they are programmed to do (p. 18).
A sequel to this essay is Simons Scientific Discovery and the Psychology of
Problem Solving, in the same volume, pp. 2240, in which he argues that
scientific discovery is a form of problem solving, and hence computational in
nature.
14. Wilkes, M.V. (1953), Can Machines Think?, Discovery 14 (May): 151; reprinted in
Proceedings of the Institute of Radio Engineers 41(10) (October): 12301234.
Speculations by one of the pioneers of computers. Discusses the Turing test,
learning machines, and the role of external input.
Chapter 20
Douglas Engelbart, who more than anyone else invented the modern user
interface, modern networking and modern information management. . .
met Marvin Minskyone of the founders of the field of AIand Minsky
told him how the AI lab would create intelligent machines. Engelbart
replied, Youre going to do all that for the machines? What are you going
to do for the people?
[Lanier, 2005, 365]
677
678 CHAPTER 20. COMPUTER ETHICS II: AI
20.2 Introduction
Stanisaw Lems short story, Non Serviam [Lem, 1971], concerns what is now
called artificial life (or A-life). In the story, an A-life researcher constructs
a computational world of intelligent entities, and follows their evolution and
development of language and philosophy. These artificial intelligences discuss the
existence of God in much the same way that human philosophers have. The difference
(if it is a difference) is that both the researcher and reader realize that he, the researcher,
is their God, and, although he created them, he is neither omniscient nor omnipotent,
and, worse, when his funding runs out, he will have to literally pull the plug on the
computer and thereby destroy them.
This raises the question of whether such an experiment should even be begun,
which is the second ethical issue and the final philosophical topic that we will look
at.
On Fletchers analysis, x is a person1 if and only if x has (1) the following positive
characteristics:
1. minimal intelligence
This might mean, for example, having an IQ greater than about 30 or 40
(if you believe that IQ measures intelligence). That is, to be minimally
intelligent is not to be mere biological life (presumably, a bacterium
would not be minimally intelligent; according to Douglas Hofstadter, what
Fletcher is calling minimal intelligence would only apply to lifeforms
evolutionarily higher than a mosquito [Hofstadter, 2007]). For example
minimal intelligence might include some level of rationality, or perhaps
even language use.
2. a sense of self
That is, persons must be self-aware and exhibit self-control.
3. a sense of time
Persons must have a sense of the past, hence some kind of culture; a sense
of the future (so that they have the ability to make plans); and a sense of
the passage of time.
4. a social role
Persons must have an ability to relate to others, to have concern for others,
and to communicate with others (hence the need for language as part of
minimal rationality).
5. curiosity
That is, persons must not be indifferent.
6. changeability
Persons must be creative and be able to change their minds.
7. idiosyncrasy, or uniqueness
8. neo-cortical function
The cerebral cortex is where all the cognitive action occurs in the
brain, so, for Fletcher, a person must have (something whose function
is equivalent to) a cortex. (For more on neo-cortical function, see
[Cardoso, 1997].)
and (2) the following negative characteristics:
1. neither essentially non-artificial nor essentially anti-artificial
1 Fletcher actually uses the term human, not person, but I dont think that this is terminologically
important.
682 CHAPTER 20. COMPUTER ETHICS II: AI
This clause allows for multiple realization and does not restrict personhood
to biological entities. It also allows for test-tube babies to count as
persons.
Fletcher argues that there are no essential rights; hence, the notion of
rights cannot be used to characterize persons.
20.6 Rights
Does a personal AI have rights? That is, does an artificial intelligence that either
passes a Turing test or that satisfies (something like) Fletchers 12 characteristics have
rights? For instance, would it have the right not to be a slave?
At first glance, you might think so. But isnt that what most robots are intended to
be? So, if they are persons of either the Turing or the Fletcher variety, do they have
the right not to do what we created them to do? At least one philosopher has suggested
that they do not, that robot servitude is permissible [Petersen, 2007].
By robot servitude, Petersen does not mean voluntary assistance, where you do
something or help someone because you want to, not because you are being paid
to. Nor does he mean slavery, forced work that is contrary to your will. By robot
servitude, he is thinking of robots who are initially programmed to want to serve us,
in particular, to want to do tasks that humans find either unpleasant or inconvenient.
For example, think of a robot programmed to love to do laundry. (On the other hand,
compare this to a dog genetically programmed to want to fetch. This is reminiscent
of the epsilon caste in Aldous Huxleys Brave New World [Huxley, 1932, Ch. 5, 1],
who are genetically programmed to have limited desiresthose destined to be elevator
operators desire nothing more than to operate elevators.)
So, how would robots programmed to want to do unpleasant or humanly
inconvenient tasks different from genetically engineering humans from scratch to
desire to do such tasks? One assumption is that doing this to humans is morally wrong;
hence, doing it to robots would also be morally wrong. Another assumption underlying
this argument is that the two cases are alike.
But on most standard theories of ethics, either this is not wrong or it is not like
the robot case. For instance, Aristotle might argue that engineering humans is wrong
because humans have a particular function or purpose, and it would be wrong to
engineer them away from it. In this case, there is no parallel with robots. In fact, a
robots function might be to do the laundry!
20.7. IMMORAL EXPERIMENTS 683
but he realizes that the advancement of knowledge must be balanced against other
considerations:
The basic ethical principle here seems to be what LaChat calls non-maleficence,
or Do No Harm. This is more stringent than beneficence, or Do Good, because
benevolence (doing good) might allow or require doing harm to a few for the benefit
of the many (at least, according to utilitarianism), whereas non-malevolence would
restrict doing good in order to avoid doing harm.
Is creating an artificial intelligence beneficial or not to the AI that is created? Does
creating it do harm to that which is created? One way to think about this is to ask
whether conscious life is better than no life at all. If it isnt, then creating an artificial
life is not a therapeutic experiment, hence not allowable by human-subjects review
boards. Why? Because the subject of the experimentthe artificial person that the
20.8. AIS AND MORALITY 685
experiment will create if it is successful (or, perhaps more so, if it is only partially
successful)does not exist before the experiment is begun, and so the experimenter
is not making it better. Here, we approach the philosophy of existentialism, one of
whose tenets is that existence precedes essence. This slogan means that who you
are, what kind of person you are, is something that is only determinable after you are
born (after you come to exist)and it is not immutable, because, by your actions, you
can change whom you are. The opposite sloganessence precedes existenceis
Aristotelian in flavor: You are a certain kind of person, and cannot change this fact.
On the existentialist view, you exist first, and then you determine what you will be.
Frankenstein did an existential experiment, creating an AI without an essence, and both
Frankenstein and his monster were surprised with the results. On the Aristotelian
view, an essence (something like an Abstraction, as discussed in Ch. 14) is implemented
(or realized). In AI, we canindeed, mustplan out the essence of an entity before
bringing it into existence (before implementing it). In either case, we cant guarantee
that it would come out OK. Hence, creating an AI is probably immoral! So, LaChat
sides with Frankensteins monster, not Frankenstein (or Wiener).
Summary
689
690 CHAPTER 21. SUMMARY
Let us take stock of where we have been. MAKE SURE THAT EVERYTHING
HERE IS ACTUALLY DISCUSSED IN THE BOOK!
values of variables [Thomason, 2003] (see 21.7.2, (C4), below), and that the universe
is a computer [Lloyd and Ng, 2004], [Wolfram, 2002].
We saw that [Shapiro, 2001] argued for the more general notion of a procedure as
being the subject matter of computer science. So we looked at what some philosophers
have said about procedures.
[Cleland, 1993] (and in subsequent papers) argued that mundane procedures
(such as causal processes, including recipes) are effective procedures that are not
computable by Turing machines, because their effectiveness depends on conditions
in the external world. And [Preston, 2006] pointed out important differences between
improvisational recipes (and music) and precise algorithms, suggesting that recipes are
more like specifications of programs than they are like computer programs.
Next, we looked at the idea that there might be functions that can be computed in
some more general sense than by Turing machines, what is called hypercomputation.
We looked at Turings oracle machines, Boolos and Jeffreys infinitely accelerating,
Zeus machines, Wegners interaction machines and Putnams and Golds trial and
error machines (which are TMs that can change their mind: it is the last answer that
matters, not the first one), which [Kugel, 2002] argued are necessary in order for AI to
succeed.
This led us to the third part of our investigation of algorithms: their implementation in
computer programs. Here we went deep into the depths of the philosophy of computer
science, looking at implementation, software, legal protections for software, and the
relation of programs to scientific theories and to the real world.
our actions are also based on mental models of the world that are separate from the real
world.
21.6.3 Philosophy of AI
Our final topic concerned the philosophy of artificial intelligence, in which we looked
at the Turing test and the Chinese Room Argument.
21.7. WHAT IS THE PHILOSOPHY OF COMPUTER SCIENCE? 697
[Turing, 1950]s article that introduced what is now called the Turing test suggested
that a computer will be said to be able to think if we cannot distinguish its cognitive
behavior from that of a human.
[Searle, 1980]s rebuttal argued that a computer could pass a Turing test without
really being able to think.
We then looked at how multiple implementation and how syntax can suffice
for semantic interpretation of the kind needed for computational cognition might
overthrow Searles position.
empirical: Computation in the wild includes every aspect of the nature and use of
computing and computers, presumably including things like iPads and Facebook.
cognitive: The theory of computation must provide a foundastion for a theory of mind
(that is, for what I have called computational cognitive science). This is probably
where the Turing test and the Chinese Room Argument fit in.
and not about some one or more particular things, then our
deductions constitute mathematics. Thus mathematics may
be defined as the subject in which we never know what
we are talking about, nor whether what we are saying is
true. [Russell, 1917, Ch. 4, p. 75; my boldface]4
analytic method: This might be related to [Simon, 1962]s theory
of how to analyze complexity hierarchically, that is, recursively.
(C4) Turing machines dont use marks to represent numbers; they use numbers to
represent marks!
Recall that syntax concerns mark-manipulation, as we saw in CITE. (This
is the kind of mathematics that Russell was discussing in the above
quote.) The real world of mathematics concerns number-manipulation.
And semantics is the study of the relation between them.
But, according to Smith,5 In science, we use numbers to represent stuff;
computation only studies marks.
(C7) A theory of computation needs a full theory of ontology. (For a beginning, see
[Smith, 1996]. For critical reviews, see [Koepsell, 1998], [Loui, 1998].)
(C8) Computers are not natural kinds. (But recall that [Shapiro, 2001] argued
that procedures are natural kinds.)
There can be no theory of computation.
(C9) Therefore, the existence of computation is extremely important, because any
theory of it will be a theory of intentional artifacts, hence a theory of everything!
4 The passage humorously concludes: People who have been puzzled by the beginnings of mathematics
will, I hope, find comfort in this definition, and will probably agree that it is accurate.
5 In a lecture given at UB in 20xx??.
700 CHAPTER 21. SUMMARY
701
702 CHAPTER 22. SYNTAX AND SEMANTICS
Version of 29 March 2014
Lots of things never end. Space. Time. Numbers. The questions little kids ask.1
And philosophy.
You try to convince somebody of somethingeven yourselfby offering reasons
to believe the thing. But then your belief is only as valid as your reasons are, so you
offer reasons to accept your reasons. But then those reasons need further reasons and
youre off. As a result it often seems that there arent any answers to philosophical
questions: there are just more arguments, more objections, more replies. And so it may
easily seem that its not worth even getting started. Why bother? Youll never finish.
You may as well try to count all the numbers.
But there is another way of thinking about it.
I went snorkeling for the first time a few years ago. It was an amazing experience.
There was a whole world under that water to which Id been oblivious my entire life.
This world was populated with countless amazing creatures with all sorts of complex
relationships to each other in that tangled ecosystemic way. Indeed every single thing
was connected to every other thing: this one is food for that one, which excretes
chemicals used by another one, which excretes waste products used by others, and
so on. Stunning, fascinating, and absolutely, deeply, beautiful. It had been there all
along, jsut waiting for me to dive in.
If you were now to tell me that that ocean goes on forever, filled with ever more
amazing creatures in more amazing relationshipsI wouldnt say, Well then why
bother entering? Rather, Id say, Where can a guy get a wetsuit around here?
But that is philosophy. Its filled with countless amazing ideas, concepts, beings,
which exist in all sorts of complex logical relationships with each other. And unlike
the actual ocean this one is infinitely deep: Wherever you enter you can keep going,
and going, and going. What you should be thinking, then, is not: Why enter? It is,
rather, this: thank youvery much.
But of course, that world just is this world, the world that youre in. This great
ocean you may be looking for, youre alrady in it. You just have to start thinking about
it. The very first drop in that bucket is a splash into the infinite.
1 The cells on a Turing-machine tape. Infinite loops.items added by WJR.
703
704 CHAPTER 22. SYNTAX AND SEMANTICS
705
706 APPENDIX A. ARGUMENT ANALYSIS AND EVALUATION
A.2 Introduction
In 2.3, I said that the methodology of philosophy involved rational means for
seeking truth, and in 2.6, we looked at different kinds of rational methods. In this
appendix, well look more closely at one of those methods: argument analysis and
evaluation.
Unless you are gullible, willing to believe everything you read or anything that an
authority figure tells you, you should want to know why you should believe something
that you read or something that you are told. If someone tells you that some proposition
C is true because some other propositions R1 and R2 are true, you might then consider,
first, whether those reasons (R1 and R2 ) really do support the conclusion C and, second,
whether you believe the reasons.
So, lets consider how you might go about doing this.
There are a few comments to make about these steps. First, steps A.3
and A.3 are recursive: For each of them, Q could ask A (or
someone else!) whether Ri is true, and A (or the other person) could
give an argument for conclusion Ri with new premises R3 and R4 .
Clearly, this process could continue (this is what toddlers do when
they continually ask their parents Why?!). It is an interesting
philosophical question, but fortunately beyond our present scope, to
consider where, if at all, this process might stop.
Second, to ask whether C follows validly from the premises is
to assume that As argument is a deductive one. For the sake of
simplicity, all (or at least most) of the arguments in Appendix B
are deductive, but, in real life, most arguments are not completely
deductive, or not even deductive at all. So, more generally, in
Step A.3, Q should ask whether C follows rationally from the
premises: If it does not follow deductively, does it follow inductively?
Abductively? And so on.
Third, unlike the first steps of considering the truth value of the
premises, this step of determining whether the relation between the
premises of an argument and its conclusion is a rational one is not
similarly recursive, on pain of infinite regress. The classical source
of this observation is due to Lewis Carroll (of Alice in Wonderland
fame).1 Carroll was a logician by profession, and wrote a classic
philosophy essay involving Achilles and the Tortoise [Carroll, 1895].
Finally, it should be pointed out that the order of doing these steps
is irrelevant. Q could first analyze the validity (or rationality) of the
argument and then analyze the truth value of (that is, decide whether
to agree with) the premises, rather than the other way round.
Step 4 Having analyzed As argument, Q now has to evaluate it, by reasoning in one
of the following ways;
If I agree with R1 ,
and if I agree with R2 ,
and if C follows validly (or rationally) from R1 and R2 ,
then I logically must agree with C.
But, bf if I really dont agree with C,
then I must reconsider my agreement either:
with R1 ,
or with R2 ,
or with the logic of the inference from R1 &R2 to C.
If I agree with R1 ,
and if I agree with R2 ,
but the argument is invalid, is there a missing premisean extra reason (see
below)that would validate the argument and that I would agree with?
1 More properly known as Alices Adventures in Wonderland and Through the Looking Glass.
A.4. MISSING PREMISES 709
[(i)]
If so, then I can accept C,
else I should not yet reject C,
but I do need a new argument for (that is, a new set of reasons for
believing) C.
If I disagree with R1 or with R2 (or both),
bf then this argument is not a reason for me to believe C;
so, I need a new argument for C.
There is one other option for Q in this case: Q might want to
go back and reconsider the premises. Maybe Q was too hasty in
rejecting them.
What if Q cannot find a good argument for believing C? Then it might
be time to consider whether C is false. In that case, Q needs to find an
argument for Cs negation: Not-C (sometime symbolized C).
This process of argument analysis and evaluation is summarized in the flowchart in
Figure A.1.
P: Bountiful arrived after wars end, sailing into San Francisco Bay 21 August 1945.
In this first step, Ive added a missing premise, Pa , and derived an intermediate
conclusion C1 . Hopefully, you agree that C1 follows validly (or at least logically in
some way, that is, rationally) from P and Pa .
We have no way of knowing whether P is true, and must, for the sake of the
argument, simply assume that it is true. (Well, we could look it up, I suppose; but
were not asked if the argument is sound (see below), only if it is valid: Does C
follow from P?)
Pa , on the other hand, doesnt have to be accepted at all; after all, we are imposing
it on the (unknown) author of the argument. So, we had better impose something that
is likely to be true. Pa is offered as part of the meaning of sail into. I wont defend
its truth any further here, but if you think that its not true, then you should either reject
the argument or else find a better missing premise.
We might have chosen a slightly different missing premise:
C2 will follow from C1 and Pb , but is Pb true? Can you think of any bays named X
Bay that are not located in a place named X? If you can, then we cant use Pb . Lets
assume the worst: Then well need something like:
Pb .1: If something arrives in San Francisco Bay, then it arrives at San Francisco.
A.4. MISSING PREMISES 711
C2 will follow from C1 and Pb .1, and we can easily check the likely truth of Pb .1 by
looking at a map.
So far, so good. Weve now got Bountiful arriving at San Francisco on 21 August
1945. But what we need is Bountiful reaching San Francisco in August 1945. So
lets add:
Think like a computer! What do you need to know in order to know whether C3 = C?
You need to know whether the final missing premise, Pd , is true:
And thats true by virtue of the way (some) people talk. From Pd and C3 , we can infer
C.
So, the simple argument that we started with, ignoring its irrelevant premise,
becomes this rather more elaborate one:
P: Bountiful arrived after wars end, sailing into San Francisco Bay 21 August 1945.
1. deciding whether the premises are true (that is, deciding whether to agree with,
or believe, the premises), and
2. deciding whether the inference (that is, the reasoning) from the premises to the
conclusion is a good one.
That is, there are two separate conditions for the goodness of an argument:
1. factual goodness
2. logical goodness
is a tautology
or is a premise
or follows validly from previous propositions in the sequence by one or
more rules of inference.
From P
and If P, then C,
you may validly infer C.
Why may you validly infer C? Because the truth table for If P, then C says that
that conditional proposition is false in only one circumstance: when its antecedent
(P) is true and its consequent (C) is false; in all other circumstances, the conditional
proposition is true. So, if the antecedent of a conditional is true, and the conditional
itself is true, then its consequent must also be true. Modus Ponens preserves truth.
Another important rule of inference is called Universal Elimination (or Universal
Instantiation):
714 APPENDIX A. ARGUMENT ANALYSIS AND EVALUATION
A truth-table analysis wont help here, because this is a rule of inference from first-
order predicate logic, not from propositional logic, and the formal definition of truth
for first-order predicate logic is beyond our scope, but it should be pretty obvious that,
if it is true that everything in the domain of discourse has some property F, then it must
also be true that any particular thing in the domain (say, a) has that property. (For more
rules of inference and for the formal definition of truth in first-order predicate logic,
see any good introductory logic text.)
NEED A SECTION WITH EXAMPLES OF
VALID/SOUND/INVALID/UNSOUND ARGS.
A.6 Summary
So, to analyze an argument, you must identify its premises and conclusion, and supply
any missing premises to help make it valid. To evaluate the argument, you should then
determine whether it is valid (that is, truth preserving), and then decide whether you
agree with its premises.
If you agree with the premises of a valid argument, then you are logically obligated
to believe its conclusion. If you dont believe its conclusion, even after your analysis
and evaluation, then you need to revisit both your evaluation of its validity (maybe
you erred in determining its validity) as well as your agreement with its premises: If
you really disagree with the conclusion of a valid argument, then you must (logically)
disagree with at least one of its premises.
You should try your hand at analyzing and evaluating the arguments in Appendix B!
This is invalid, despite the fact that both premises and the conclusion are
true: It is invalid, because the argument form can have true premises and a
A.7. NOTES FOR NEXT DRAFT 715
false conclusion:
x[P(x) Q(x)
R(a) Q(a)
P(a)
Heres a counterexample, that is, an argument with this form that has true
premises but a false conclusion:
xn + yn = zn
has no solutions for integers x, y, z and integer n > 2. But it has now been
proved.3
For another example, no one knows (yet) if Goldbachs Conjecture is true.
Goldbachs Conjecture says that all positive even integers are the sum of 2
primes; for example, 28 = 5 + 23. Expressed in first-order logic, this would
be:
For yet another example, no one knows (yet) if the Twin Prime Conjecture
is true. The Twin Prime Conjecture says that there are an infinite number
of twin primes, that is, primes m, n such that n = m + 2; for example,
2 and 3, 3 and 5, 5 and 7, 9 and 11, 11 and 13, etc. Expressed in first-order
logic, this would be:
Secondand much more astounding than our mere inability so far to prove
or disprove any of these conjecturesthere are propositions whose truth
3 See http://en.wikipedia.org/wiki/Fermats Last Theorem
716 APPENDIX A. ARGUMENT ANALYSIS AND EVALUATION
value is known to be true, but which we can prove that we cannot prove!
This is the essence of Godels Incompleteness Theorem. Stated informally,
it asks us to consider this proposition, which is a slight variation on the Liar
Paradox (that is the proposition This proposition is false: If its false, then
its true; if its true then its false):
(G) This proposition is true but unprovable.
We can assume that G is either true or false. Is it false? If it is false, then
it is provable. But any provable proposition has to be true (because proofs
are truth-preserving). So it isnt false. Therefore, it must be true. But if its
true, then its unprovable. End of story; no paradox!
That is, there are true propositions (moreover, Godel showed that they are
propositions that are true in the mathematical system consisting of first-
order predicate logic plus Peanos axioms; that is, they are true propositions
of arithmetic!) that cannot be proved. (For more information on Godels
proof, see [Nagel et al., 2001], [Hofstadter, 1979], and [Franzen, 2005].)
2. Application of Predicate Logic to AI
Heres an application of predicate logic to artificial intelligence (AI).
In the late 1950s, one of the founders of AI, John McCarthy, proposed a computer
program to be called The Advice Taker, as part of a project that he called
programs with common sense. (McCarthy is famous for at least the following
things: He came up with the name artificial intelligence, he invented the
programming language Lisp, and he helped develop time sharing. For more
information on him, see:
http://en.wikipedia.org/wiki/John McCarthy (computer scientist)
and
http://aitopics.org/search/site/John%20McCarthy)
The idea behind The Advice Taker was that problems to be solved would
be expressed in a predicate-logic language (only a little bit more expressive
than first-order logic), a set of premises or assumptions describing required
background information would be given, and then the problem would be solved
by logically deducing it from the assumptions.
He gave an example: getting from his desk at home to the airport. It begins with
premises like
at(I,desk)
meaning I am at my desk, and rules like
that is, if x is walkable, and if y and z are at x, and if I am at y, then I can go from
y to z by walking.
The proposition to be proved from these (plus lots of others) is:
want(at(I,airport))
Figure A.1: This flowchart uses Pi instead of Ri , as the text does. Also, the symbol
exists should be read: Does there exist.
Appendix B
Position-Paper Assignments
719
720 APPENDIX B. POSITION-PAPER ASSIGNMENTS
B.2 Introduction
One of the best ways to learn how to do philosophy and, perhaps more importantly, to
find out what your beliefs are about important issues (as well as what your reasons for
your beliefs are!) is to write about them and then to discuss what youve written with
others who have also thought and written about about the issuesyour peers.
So, the writing assignments take the form of position papers, in which you will
be:
presented with a logical argument about a topic in the philosophy of computer
science,
asked to analyze and evaluate the argument,
given an opportunity to clarify and defend your analysis and evaluation,
and simultaneously be asked to help your peers clarify and defend their analyses
and evaluations of the same argument in an exercise called peer editing.
This should help you to clarify your own position on the topic.
The arguments that are presented in the following sections are those that I have
used when I have taught this course. Instructors are invited to modify these or to create
their own arguments. The assignments can be scheduled at the convenience of the
instructor, which is why I have collected them in this appendix rather than placing
them throughout the text. In general, however, I suggest putting each assignment
approximately one week after the relevant topic has been covered in class. This way,
the students will have the benefit of having thought about the readings before forming
their own opinions. An alternative, of course, is to schedule them one week before
the topic is begun to be covered in class, so that the students will be foreced to think
about the issues before reading what experts have had to say. Another option is to
do both: Assign the first draft before the topic is begun, then have the students do the
required readings and participate in class discussions of the topic, then follow this with
an optional revision or second draft of the position paper and the peer-editing session,
with a third draft (or second, if the optional, post-class-discussion draft is omitted) to
be turned in for instructor evaluation.
Peer-editing sessions should take up a full class period. The general method is to
divide the class into small groups of three or four students (two students will work
if the number of students in the classor latecomers!demands it, but is not ideal;
five-student groups are too large to enable everyone to participate, especially if time is
limited). For each student in a group:
1. Have the group read the students position paper.
2. Have the group challenge the students position, ask for clarification, and make
recommendations for improving the students paper.
If there are s students in a group and the peer-editing session lasts for m minutes,
then the group should spend no more than m/s minutes on each students paper. The
instructor should visit each group at least once to ensure that all is going well, to answer
722 APPENDIX B. POSITION-PAPER ASSIGNMENTS
questions, and to suggest questions if the group seems to be having trouble. If a group
ends early and there is a lot of time left in the session, ask each student in the group
to join another group (even if only to listen in to that groups ongoing discussion, but
if that other group also ended early, then the newcomer should peer-edit one of their
papers). Specific information for peer-editing sessions is given with each assignment.
After peer-editing, students should revise their position papers in the light of the
editing suggestions and hand in all drafts to the instructor. I usually give the students
one week for this revision.
(The Dean of Engineering has not yet argued that computer science is an
engineering discipline; that may come later.)
How do you respond to the Dean of Engineerings argument?
You may agree with it, or not (but there are several ways that might happen; see
below).
1 http://www.worldwidewords.org/qa/qa-loc1.htm
B.3. POSITION PAPER #1: WHAT IS COMPUTER SCIENCE? 723
You should ignore political considerations: You may suppose that the move from
Science to Engineering involves no loss or gain of money, prestige, or anything else,
and it is to be done, if at all, only on strictly intellectual grounds.
The Provost is eagerly awaiting your reply, and will abide by your decision. . . if ,
that is, you give a well-argued defense of your position.
To formulate and defend your position, you should:
a) Say whether you agree that conclusion 3 logically follows from premises 1 and 2,
(whether or not you agree with 1 and 2)
and why you think it follows or doesnt.
(I agree that conclusion 3 follows from premises 1 and 2 because. . .
OR I do not agree that conclusion 3 follows from premises 1 and 2
because. . . )
If you think that conclusion 3 doesnt follow, is there some (interesting, non-
trivial) missing premise (that is, a missing link between the premises and
conclusion) that would make it follow?2
b) Say whether you agree with premise 1, and why you do or dont.
c) Say whether you agree with premise 2, and why you do or dont.
d) If you thought that there were missing premises that validated the argument, say
whether you agree with them, and why you do or dont.
e) If you think that the argument is logically invalid, you might still agree or disagree
with conclusion 3 independently of the reasons given for it by premises 1 and 2 (and
any missing premises).
If so, state whether you agree with 3, and why.
Its also possible that you might neither agree nor disagree with 3; alternatively,
you might both agree and disagree with it.
For example, you might believe that computer science is both a science and an
engineering discipline (or, alternatively, that it is neither).
If so, then please give your reasons for this.
2 For a discussion of missing premises, see
http://www.cse.buffalo.edu/rapaport/584/S10/EMAIL/20100118-MissingPremises.txt
Argument Analysis: Finding Missing Premises. INCLUDE THIS IN THE BOOK SOMEWHERE
724 APPENDIX B. POSITION-PAPER ASSIGNMENTS
And, if you are unsure about any of your answers, try to be very precise about why you
are unsure and what further information would help you decide.
Other responses:
You might not agree with any of these ways to respond. However, I believe that any
other response can, perhaps with a bit of force, be seen to fall under one of the above
responses. But if you really feel that your position is not exactly characterized by any
of the above responses, then please say:
1. Your answer should honestly reflect your beliefs (not what you think the fictional
Provost or Dean of Engineering wants to hear!).
2. If you resort to a dictionary, textbook, article, website, etc., be sure to say which
one. Give as much detailed information as you can that would assist someone
else to locate the item by themselves. (See the
http://www.cse.buffalo.edu/rapaport/howtowrite.html#citations
How to Handle Citations section of my website on How to Write, for the
proper way to do this.)
To help keep your paper short, you do not need any fancy introductory
paragraph; you can assume that your reader is a fellow student in this course
who has just done the same assignment.
If you write:
1 paragraph analyzing validity,
1 paragraph each analyzing the premises,
and 1 paragraph analyzing the conclusion,
you will have (more than) enough material.
5. At the top of the page, please put all and only the following information:
b) your name
c) the course you are enrolled in
d) the due date.
(The space taken up by this will not count against your total pages.)
6. For general assistance with writing (including my preferred method of paper
preparation and format, as well as advice on grammar), see my website
http://www.cse.buffalo.edu/rapaport/howtowrite.html
DUE AT THE BEGINNING OF LECTURE, 1 WEEK FROM TODAY
6. Any time you have a question, ask it. Here are some suggestions:
7. The author should not get defensive. The committee members are friendly.
Critical, but friendly.
8. Keep a written record of the questions and replies. This will be useful to the
author, for revision.
9. After spending about 10 minutes3 on the first paper, move on to the next, going
back to step 2 above, changing roles. Spend no more than 15 minutes4 per paper
(because youve only got about 45 minutes5 at most). Perhaps one member of
the group can be a timekeeper.
10. At home, over the next week, please revise your paper to take into consideration
the comments made by your fellow students (that is, your peers):
Perhaps defend your claims better, or clarify statements that were misunderstood,
etc. For help, see your instructor.
At the top of the first page of your revision, please put all and only the
following information:
a) the title Position Paper #1: 2nd Draft
b) your name
c) the course you are enrolled in
d) the due date
Please staple copies of your first draft, (with peer-editing comments, if any)
to your second draft.
Your second draft should be substantially different from your first draft!
B.3.3 Grading
B.3.3.1 Philosophy of Grading
To make grading these essays easier on the instructor and easy for students (in case the
instructor decides to have students grade each others essays), I recommend using the
triage method of grading. On this method, each item to be graded is given:
partial credit (for example, 2 points) if it is done, but is not clearly worth either
full credit or minimal credit
minimal credit (for example, 1 point) if it is done, but is clearly not done in an
acceptable manner.
The advantage to this method of grading is that the grader only has to decide if a
response is worth full credit (that is, shows clear understanding of what is expected) or
minimal credit (that is, shows clear mis- or lack of understanding of what is expected).
Any response that is not clearly one or the other is given partial credit. And failure to
respond, or omission of some requirement, is given no credit. This helps make grading
slightly more objective (and certainly easier for novice graders). Details and the theory
behind the method are given in [Rapaport, 2011a] and online at:
http://www.cse.buffalo.edu/rapaport/howigrade.html
accessed 19 November 2012.
(Doesnt matter whether you agreed or didnt agree, only with whether you said
so.)
3. Premise 2: Did you state clearly whether you agreed or disagreed with it?
(Doesnt matter whether you agreed or didnt agree, only with whether you said
so.)
0, 1, 2, or 3, as for Premise 1
4. Did you give your reasons for your (dis)agreement?
0,1,2, or 3, as for Premise 1
5. Valid?
no answer: 0
10. Attached draft 1 & list of peer editors to demonstrate that draft 2 6=
draft 1? 0
Didnt 1
The total is 24 points, which, following my grading theory, maps into letter grades
as follows:
A 2324
A 22
B+ 21
B 1920
B 18
C+ 17
C 1416
C 1113
D+ 910
D 58
F 04
On my grading scheme,
A means understood the material for all practical purposes,
(here, thats 24 pts = 8 parts 3 pts full credit)
B has no direct interpretation, but comes about when averaging A and C grades
C means average,
(here, thats max 16 pts = 8 2 pts partial credit)
D means did not understand the material, (here, thats max 8 pts = 8 1 pt
minimum credit)
F usually means did not do the work (that is, 0 pts), but can also come about when
omitting some parts and doing D work on others.
730 APPENDIX B. POSITION-PAPER ASSIGNMENTS
int i;
i=x;
return;
In some sense, there are no outputs from this function, yet it is still somehow an algorithm.
(In the Pascal programming language, there was a distinction between procedures and functions;
some other languages call procedures subroutines. But the point is that these are not functions
in the mathematical sense of ordered pairs.) In Lisp, which may have been more dominant when
Knuth wrote, every function had to return at least one value.
We can, however, re-interpret the output of an algorithm so that it is not always the return-
value of a function. So, in store-and-return, perhaps it is the memory location of the local
variable i that gets the output of the algorithm. In a program like Cs Hello World,
main()
printf("Hello World
n");
return;
perhaps it is the screen that you are printing to that gets the output of the algorithm.
Notice also that if you think of the store-and-return function as a black box (that is, a
device whose internal workings are hidden from you but whose external behavior is observable),
there would be no way to tell that it was doing anything. Behaviorally, you would hand an input
into the black box and observe nothing else! It may be that Knuth wants to exclude behaviorally
unobservable algorithms.
B.4. POSITION PAPER #2: WHAT IS COMPUTATION? 731
Note: We can also say that A is an algorithm for computing a function f means
that A is an algorithm as characterized above and that, for any input i, As output
for i = f s output for i; that is, for any i, A(i) = f (i).
2. Computer programming languages (like Java, Lisp, Fortran, etc.) are formal
languages for expressing (or implementing) algorithms.
a) That is, every program in any programming language can be translated into
the language for programming Turing machines, and vice versa.
b) That is, any function that is computable by any programming language is
computable by a Turing machine, and vice versa.
And so on.
Bottom line: the one or more from premise 1d should not trip you up from analyzing the rest
of the argument.
732 APPENDIX B. POSITION-PAPER ASSIGNMENTS
5. Therefore, these programs (that is, the real programs referred to in premise 4)
do not implement Turing machines (contrary to premise 3).
6. Therefore, they (that is, the real programs referred to in premise 4) are not
computable. (But how can a real computer program not be computable?!)
To evaluate this argument, you must state whether the argument is valid, and you
must state whether and why you agree or disagree with each premise and conclusion.
If it is valid, and if you agree with each premise, then you believe that the
argument is sound.
You are logically obligated to believe the conclusions of sound arguments!
So, if you ever come across an argument that you think is sound, but whose
conclusion you dont believe, then either:
one (or more) of the premises is false,
or the argument is invalid (that is, there is some way for the premises to be
true yet for the conclusion to be false),
or both.
To determine whether it is valid, you must suppose for the sake of the argument
that all the premises are true, and then consider whether the conclusions logically
follow from them.
(Or: Can you imagine some way the world might be so that the premises are true
but the conclusion is false?)
Note that, in this argument, there are two conclusions: conclusions 5 and 6.
Next, you must evaluate each premise. Do you agree with it? Why or why not?
Finally, do you agree with the conclusion(s)?
You might agree with a conclusion because you think that the argument is
sound;
if so, say so.
Or you might think that theres something wrong with the argument but
agree with the conclusion anyway;
if so, then try to present a better argument for the conclusion.
Or you might not agree with the conclusion(s);
if not, state why, and try to give an argument for what you do believe.
B.4. POSITION PAPER #2: WHAT IS COMPUTATION? 733
c) At the top of the first page, please put the following information in the following
format:
3. After spending about 1015 minutes on the first paper, move on to the next,
going back to step 2, above, changing roles.
Spend no more than 15 minutes per paper (because youve only got about 45
minutes at most).
Perhaps one member of the group can be a timekeeper.
4. For each paper, ask as many of the following questions as you have time for:
a) Did the author state whether and why they did or did not agree with Knuths
definition in premise 1?
Note: Knuths definition is a conjunction of 5 things: 1a & 1b & 1c &
1d & 1e.
So, in disagreeing with premise 1, an author must
a) explicitly disagree with (at least) one of 1a. . . 1e
b) and say why they disagree with that part (or those parts).
i) If the author agreed and gave reasons for agreeing, do you agree with
those reasons? Why?
734 APPENDIX B. POSITION-PAPER ASSIGNMENTS
ii) If the author disagreed and gave reasons for disagreeing, do you agree
with those reasons? Why?
b) Did the author state whether and why they did or did not agree with the
claim about the nature of programming languages in premise 2?
(Plus questions 4(a)i and 4(a)ii, above.)
c) Did the author state whether and why they did or did not agree with the claim
about the Turing-equivalence of programming languages in premise 3?
(Plus questions 4(a)i and 4(a)ii, above.)
d) Did the author state whether and why they did or did not agree with the
claim and/or the examples in premise 4?
(Plus questions 4(a)i and 4(a)ii, above.)
e) Did the author state whether and why they believe that conclusion 5 does or
does not validly follow from premises 14?
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
1..4/..5 valid?
736 APPENDIX B. POSITION-PAPER ASSIGNMENTS
Why?
0 = no answer
1 = answer, no explanation
2 = answer, weak explanation
3 = answer, good explanation
agree w/ 5?
why? 0,1,2,3, as for 1
------------------------------------------------------------------------
5/..6 valid?
Why?
0 = no answer
1 = answer, no explanation
2 = answer, weak explanation
3 = answer, good explanation
agree w/6?
why? 0,1,2,3, as for 1
------------------------------------------------------------------------
7. Citation style:
------------------------------------------------------------------------
========================================================================
A 23-24
A- 22
B+ 21
B 19-20
B- 18
C+ 17
C 14-16 9-16
C- 11-13
D+ 9-10
D 5-8
F 0-4
738 APPENDIX B. POSITION-PAPER ASSIGNMENTS
(II) It may be too difficult to determine whether each premise is true or false. More
realistically, you should decide whether you believe, or agree with, each premise,
and you must explain why you do or dont.
Finally, do you agree with the conclusion(s)? If you do, but you think that theres
something wrong with the argument, try to present a better one. If you dont agree with
the conclusion(s), state why, and try to give an argument for what you do believe.
b) Did the author state whether the argument to conclusion 6 was valid?
i) Did they correctly identify its other premises besides premise 5? (Very
few real arguments can have only one premise.)
ii) If they thought it was invalid, did they suggest a missing premise that
would make it valid (if possible)?
c) Did the author state whether the argument to conclusion 7 was valid?
i) Did they correctly identify its other premises besides premise 6? (Note
that sentence 6 is both the conclusion of the previous argument and a
premise of this one.)
ii) If they thought it was invalid, did they suggest a missing premise that
would make it valid (if possible)?
d) For each premise, ask whether the author stated whether and why they did or
did not agree with it.
i) If the author agreed, then it is preferable (but not necessary) that they
give reasons for agreeing. If they did give such reasons, do you agree
with those reasons? Why?
ii) If the author disagreed, then it is necessary that they give reasons for
disagreeing, so do you agree with those reasons? Why?
e) For each argument, if the author thought it was unsound, did they state
whether they believed its conclusion anyway, on independent grounds (that
is, for different reasons)?
And, if so, do you agree with those reasons?
5. Keep a written record of the questions and replies. This will be useful to the
author, for revision.
6. At home, over the next week, please revise your paper to take into consideration
the comments made by your fellow students (that is, your peers): Perhaps
defend your claims better, or clarify statements that were misunderstood, etc.
For help, see your instructor.
0 = no answer
1 = answer, no reason
OR reason that confuses definitions
of valid/invalid/sound
2 = answer, weak reason
3 = answer, good reason
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
========================================================================
A 29-30
A-27-28
B+ 26
B 24-25
B-22-23
742 APPENDIX B. POSITION-PAPER ASSIGNMENTS
C+ 21
C 17-20 11-20
C-14-16
D+ 11-13
D 6-10
F 0-5
------------------------------------------------------------------------
"F" usually means "did not do the work" (that is, 0 pts),
but can also come about when averaging Ds and Fs.
http://www.cse.buffalo.edu/rapaport/howigrade.html
for the theory behind all of this, which Im happy to discuss via
UBLearns email.
B.6. POSITION PAPER #4: WHAT IS A COMPUTER PROGRAM? 743
1. A special-purpose computer (that is, a computer that does just one task) is
essentially a hardwired computer program.
5. The printed text of a computer program is a literary work (that is, a piece of
writing) in the sense of the copyright law.
Note: This premise is a matter of law. You must accept it as true. But you
can argue that the law should be changed.
To help you evaluate this argument (which we look at in more detail in Ch. 13),
here are some extracts from some relevant websites:
B.6.1.2 Thinksheet
| |
| |
| |
| |
| |
| |
| |
------------------------------------------------------------------------
1,2,3/..4 is valid | |
| |
| |
| |
| |
| |
------------------------------------------------------------------------
5. The printed text of | |
a comp.prog. is a | |
lit.work in the | |
sense of the (c) law | |
| |
| |
| |
| |
| |
| |
------------------------------------------------------------------------
6. Lit.works can be (c) | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
------------------------------------------------------------------------
7. The printed text of | |
a comprog can be (c) | |
| |
| |
| |
| |
| |
| |
| |
748 APPENDIX B. POSITION-PAPER ASSIGNMENTS
| |
| |
------------------------------------------------------------------------
5,6/..7 is valid | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
------------------------------------------------------------------------
8. Nothing can be both | |
patented & (c) | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
------------------------------------------------------------------------
9. Theres no compnl | |
or other diff. betw. | |
the hardwired comp. | |
prog. & its textual | |
counterpart... | |
| |
| |
| |
| |
| |
------------------------------------------------------------------------
10. Comprogs can be both| |
patented & (c) | |
| |
| |
| |
| |
| |
| |
| |
B.6. POSITION PAPER #4: WHAT IS A COMPUTER PROGRAM? 749
| |
------------------------------------------------------------------------
4,7,9/..10 is valid | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
------------------------------------------------------------------------
Additional comments:
750 APPENDIX B. POSITION-PAPER ASSIGNMENTS
(a) It should be fairly straightforward to turn the thinksheet outline into full
sentences and paragraphs (with correct citations if needed).
(b) I strongly urge you to have someone peer-edit your paper before you
produce the final version! Tell that person to make sure that you have:
i. Evaluated each statement (premise and conclusion) for (absolute
or independent) truth or falsity (see my
584/S10/EMAIL/20100323-PP3-Comments.txt
email (point #1) about that terminology,
FIX THIS.
and given a reason for your evaluation.
ii. Evaluated each argument for validity or invalidity
584/S10/EMAIL/20100323-PP3-Comments.txt
FIX THIS
(that is, evaluated each conclusion for relative truth, that is, truth
relative to the premises), and given a reason for your evaluation.
iii. Correctly used the true/false/valid/invalid terminology.
B.6. POSITION PAPER #4: WHAT IS A COMPUTER PROGRAM? 751
0 = no response
I WILL DEDUCT 3 POINTS FROM THE TOTAL GRADE FOR THE PAPER
FOR INCORRECT USE OF THE TERMINOLOGY!
(If you are not sure of how to use the terminology, please ask me!)
========================================================================
A 37-39
A-35-36
B+ 33-34
B.6. POSITION PAPER #4: WHAT IS A COMPUTER PROGRAM? 753
B 31-32
B-29-30
C+ 27-28
C 21-26 14-26
C-18-21
D+ 14-17
D 7-13
F 0-6
------------------------------------------------------------------------
On my grading scheme,
"F" usually means "did not do the work" (that is, 0 pts),
but can also come about when averaging Ds and Fs.
http://www.cse.buffalo.edu/rapaport/howigrade.html
for the theory behind all of this, which Im happy to discuss via email.
------------------------------------------------------------------------
Footnotes:
(*) Compare: Propose new axioms?
(+) Compare: Prove that a law is not a theorem of the US Constitution?
It may help if you rewrite Pros and Cons arguments in terms of premises and
conclusions, and then evaluate those arguments. That is, extract each argument
from the debate and put them in the following forms:
Keep in mind that premises and conclusions are declarative propositions (they
can be deemed to be true or false) but that some lines uttered by Pro and Con
are not declarative propositions (and thus cant be premises or conclusions). For
example, Cons first statement is a questionit is not a premise or conclusion
of anyones argumentand Pros second statment needs to be reformulated as
something like Something is cognitive means that it. . . .
1. For your peer-editing session next week, I will give you a choice: You may
either:
(a) create a thinksheet like the one for Position Paper #4 (B.6.1.2)
with one column listing the premises, conclusions, and arguments;
one column of cells to indicate your agreement or disagreement with
them;
and one column of cells to indicate your reasons for your agreement
or disagreement
(b) or write a 12 page, double-spaced (that is, about 250500 word), single-
sided, first draft.
(Of course, you might want to do option 1a for your own use before doing
option 1b! They are not mutually inconsistent.
If your document is more than 1 page long, please staple the pages together and
make sure that your name is on all pages!
3. At the top of the first page, please put ALL AND ONLY the following
information in the following format:
And dont forget to give full citations to any sources that you cite.
3. After spending about 1015 minutes on the first paper, move on to the next,
going back to step 2 above, changing roles. Spend no more than 15 minutes per
paper (because youve only got about 45 minutes at most). Perhaps one member
of the group can be a timekeeper.
4. Suggestion: There are really 2 arguments in this dialogue: Pros argument and
Cons argument.
So, the first task is to present each argument. Once you have identified the
premises (including any hidden premises) and conclusion of each argument, you
can then analyze it for validity of the argument and truth of the premises.
5. For each paper in your peer-editing group, ask as many of the following questions
as you have time for:
(a) Did the author present both Pros and Cons arguments?
(b) For each argument, did the author state whether and why s/he believes the
argument to be valid?
Its possible to formulate both arguments so that they are valid!
If you do that, then ascertaining the truth value of the premises
becomes your central task.
(c) For each argument, did the author state whether and why s/he agrees with
the premises?
(d) For each argument, if the author believed either that the argument was
invalid (even with missing premises addedthat is, that there was no way
to make the argument valid) or that one or more of the premises was false,
then did the author state whether and why s/he agrees with the conclusion?
Reminder:
B.7. POSITION PAPER #5: CAN COMPUTERS THINK? 757
6. Remember!: Your revised paper must have the appropriate heading at the
top of the first page, must use the terms true, false, valid, and invalid
appropriately, and must have your peer-edited first drafts attached!
7. Keep a written record of the questions and replies. This will be useful to the
author, for revision.
8. At home, over the next week, please revise your paper to take into consideration
the comments made by your fellow students (that is, your peers): Perhaps
defend your claims better, or clarify statements that were misunderstood, etc.
For help, see your instructor.
But if your paper is > 1 page, please STAPLE the pages together
(one staple, in upper left corner)
AND
please put your NAME on ALL pages.
========================================================================
Position Paper #5 Grading Rubric
Version: 20 Apr 2010
========================================================================
-1 pt PER ERROR!
========================================================================
b) PROS ARGUMENT
0 = missing
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
3 = if arg is sound,
then that is your reason for believing conc,
-- say so!
else (if arg is not sound, then)
say whether you believe conc
& give clear reason why
0 = no evaluation of conclusion
========================================================================
========================================================================
A 29-30
A-27-28
B+ 26
B 24-25
B-22-23
C+ 21
C 17-20 11-20
C-14-16
D+ 11-13
D 6-10
F 0-5
------------------------------------------------------------------------
http://www.cse.buffalo.edu/rapaport/howigrade.html
4. A critical, but general, survey article on the philosophy of computer science that
would be appropriate for an encyclopedia of philosophy or an encyclopedia of
computer science.
6. Other ideas of your own, approved by me in advance, including, but not limited
to, such topics that we have mentioned but have not investigated as:
763
764 APPENDIX C. TERM PAPER TOPICS
Final Exam
I. Dualism Position 1. Basic Duality: Students at this stage believe that there are
correct answers to all questions, that the instructor is the authority figure
who has access to golden tablets in the sky containing all correct answers,
and that their (the students) job is to learn the correct answers so that they
can be repeated back to the instructor when asked. A Basic Duality student
who offers a wrong answer to a question hears the authority figure say, You
are wrong.
Position 2. Dualism: Students move to this stage when faced with alternative
opinions or disagreements among different authority figures (different
instructors), such as when one literature teacher says that Huckleberry Finn
is the best American novel, but another says that it is the worst. Dualistic
1 This section is adapted from [Rapaport, 1984].
2 My descriptions
are culled from [Perry, 1981], [Cornfeld and Knefelkamp, 1979], and [Goldberger, 1979]. These are three
essential readings for anyone concerned with implications and applications of Perry theory in the classroom.
765
766 APPENDIX D. FINAL EXAM
students infer that one of those literature teachers view of the golden
tablets is obscured. Consequently, they see the purpose of education as
learning to find the correct answers.
Dualistic students prefer structured classes, which they see as providing the
correct answers, and subjects such as math, which they see as having clear
answers (all math teachers agree that the golden tablets say that 2 + 2 =
4). Conflict between instructor and text, or between two instructors, is seen
threateningly as conflicts among authority figures.
II. Multiplicity Position 3. Early Multiplicity: Here, the student has moved from the
narrow Dualism of seeing all questions as having correct or else incorrect
answers to a wider dualism of classifying questions into two kinds: those
where instructors know the correct answers and those where they dont
know the correct answers yet. Concerning the latter, the instructors role
is seen by Early Multiplistic students as providing methods for finding the
correct answers, rather than as giving the correct answers directly.
Position 4. Late Multiplicity: As students move along, chronologically or
cognitively, they begin to see the second kind of question as being the more
common one. Because, it is felt, most questions are such that instructors
dont have the correct answers for them, everyone has a right to his
own opinion; no one is wrong! [Perry, 1981, 79]. The instructors task,
therefore, is seen as either teaching how to think or, worse, being irrelevant
(after all, everyone has a right to their own opinion, including instructors
but its just their opinion).
III. Contextual Relativism Position 5. Here, students have begun to see that
instructors arent always asking for correct answers but, rather, for
supported answers. The second category of questions has become the
only category (except, of course, in mathematics and science!), but,
although there can be many answers for each question, some are better
(more adequate, more appropriate, etc.) than others. Answers are now seen
as being better or worse relative to their supporting context (hence the name
of this position).
IV. Commitment within Relativism Positions 69. These stages
characterize students as they begin to see the need for making their own
decisions (making commitments, affirming values), as they balance their
differing commitments, and as they realize the never-ending nature of this
process.
Finally, there is evidence that a student as Position x will not understandwil literally
not be able to make any sense out ofinstruction aimed at Position x + 2 (or beyond).
Conversely, students at higher levels are bored by instruction aimed at lower levels.3
3 Perrys theory is far, far richer than I have portrayed it here, and the interested reader is urged to follow
up the suggested readings. A useful survey of criticisms, together with a discussion of the relevance of the
theory to mathematics education and to the history of matheamtics, is [Copes, 1980]. The relevance of the
theory to philosophy is discussed in [Rapaport, 1982].
D.1. TO THE INSTRUCTOR 767
Here is a useful anecdote (adapted from Perry) for illustrating the scheme: Suppose
that a teacher presents three theories for explaining the purpose of science (for example,
is science merely descriptive, merely predictive, or explanatory?), or three different
algorithms for solving some computational problem. The Dualistic student will wonder
which is the correct one (and why the teacher bothered to talk about the incorrect
ones); The Multiplistic student will think, Only 3? Heck, I can come up with 6!; the
Contextual Relativist will wonder what advantages and disadvantages each theory has;
and the Commitment-oriented student will be wondering about how to decide which is
most appropriate or useful in a given situation.
Data from several studies indicate that most entering college freshmen are at
Positions 2 or 3 [Perry, 1970], [Perry, 1981], [Copes, 1980]. Courses designed to teach
critical thinking skills to students through the first two years of college are thus dealing
with Dualists or (early) Multiplists, and this can result in several problems that the
instructor should be aware of in order to foster the students development along the
Perry scheme.
First, Dualists want to be told the correct answers. But critical-thinking courses
are largely involved with criticism and argument analysis. Accordingly, the entire
activity may appear to them as incomprehensible at worst and pointless at best, or may
simply result in the students learning the sport of dumping on bad or incorrect
arguments. Hence, such courses, including the present one, must be more than mere
criticism courses; they must make a serious attempt to teach ways of constructing
arguments, solving problems, or making decisions. In this way, they can offer an
appropriate challenge to Dualistic students, especially if couched in a context of
adequate support.4
Second, The highly logical argument that, since everybody has a right to their
own opinion, there is no basis for rational choice is very typical of Multiplistic
students [Goldberger, 1979, 7]. But a goal of critical-thinking courses should be
precisely to provide bases for rational choice: logical validity, inductive strength, etc.
Accordingly, Multiplistic students either will not comprehend this goal or will view it
as pointless. Again, such a course can be appropriately challenging to the students, but
the instructor must be aware of how the students are likely to perceive itto hear
students negative comments not as marks of pseudo-sophistication or worse, but as
marks of viewing the world Multiplistically.
Finally, consider the concept of logical validity. Larry Copes (personal
conversation) points out that it is a relativistic concept: A valid conclusion is
one that is true relative to the truth of the premises. Dualistic students searching for
absolutes and Multiplistic students feeling that anything goes may not accept, like,
or understand validity. This may explain why so many students believ that arguments
with true conclusions are valid or that valid arguments require true premiseseven
after having dutifully memorized the definition of validity!
How can an instructor simultaneously challenge students in order to help them
move to a higher-numbered stage, yet not threaten them, especially when a given class
might have students at widely varying stages? One suggestion, based on work by Lee
4 For details and specific advice, see [Sanford, 1967, Ch. 6, esp. pp. 5152],
[Cornfeld and Knefelkamp, 1979].
768 APPENDIX D. FINAL EXAM
1. Evaluate the following argument (note that it is similar to, but not exactly the
same as, the argument in Position Paper #1):
Natural science is the
systematic observation, description, experimental investigation, and
D.2. A FINAL EXAM 769
(a) In your opinion, what is the most fundamental or important question in the
philosophy of computer science?
(b) What is a question that interests you in the philosophy of computer science
that we did not discuss this semester?
Pose the question, explain why you think it is important or interesting, and
present your answer to it.
770 APPENDIX D. FINAL EXAM
771
772 BIBLIOGRAPHY
[Anderson and Anderson, 2006] Anderson, M. and Anderson, S. L., editors (2006).
Special Issue on Machine Ethics. IEEE Intelligent Systems. Vol. 21, No. 4
(July/August).
[Angier, 2010] Angier, N. (2010). Abtract thoughts? the body takes them literally.
New York Times/Science Times, page D2. Accessed 31 January 2014 from:
http://www.nytimes.com/2010/02/02/science/02angier.html.
[Anonymous, 1853] Anonymous (1853). Review of j.h. wythes, the microscopist; or a
complete manual on the use of the microscope. Quarterly Journal of Microscopical
Science, 1(1):5153.
[Anthes, 2006] Anthes, G. (1 May 2006). Computer science looks for a remake. In
Computerworld, accessed 2 July 2013 from
http://www.computerworld.com/s/article/110959/Computer Science Looks for a Remake.
[Antoy and Hanus, 2010] Antoy, S. and Hanus, M. (2010). Functional logic
programming. Communications of the ACM, 53(4):7485.
[Apostel, 1961] Apostel, L. (1961). Towards the formal study of models in the non-
formal sciences. In Freudenthal, H., editor, The Concept and the Role of the Model
in Mathematics and Natural and Social Sciences: Proceedings of the Colloquium
Sponsored by the Division of Philosophy of Sciences of the International Union of
History and Philosophy of Sciences Organized at Utrecht, January 1960, pages 1
37. D. Reidel, Dordrecht, Holland.
[Appiah, 2007] Appiah, K. A. (2007). The new new philosophy. New York Times
Magazine, pages 3436.
[Appiah, 2008] Appiah, K. A. (2008). Experimental philosophy. Proceedings and
Addresses of the American Philosophical Association, 82(2):722.
https://member.apaonline.org/V82 2 experimentalphilosophy.aspx.
[Ardis et al., 1989] Ardis, M., Basili, V., Gerhart, S., Good, D., Gries, D., Kemmerer,
R., Leveson, N., Musser, D., Neumann, P., and von Henke, F. (1989). Editorial
process verification. Communications of the ACM, 32(3):287290. ACM Forum
letter to the editor, with replies by James H. Fetzer and Peter J. Denning.
BIBLIOGRAPHY 773
[Aspray, 1990] Aspray, W., editor (1990). Computing before Computers. Iowa State
University Press, Ames, IA. online at [http://ed-thelen.org/comp-hist/CBC.html].
[Bajcsy et al., 1992] Bajcsy, R. K., Borodin, A. B., Liskov, B. H., and Ullman,
J. D. (1992). Computer science statewide review draft preface. Technical report,
Computer Science Rating Committee. Confidential Report and Recommendations
to the Commissioner of Education of the State of New York (unpublished),
http://www.cse.buffalo.edu/rapaport/Papers/Papers.by.Others/bajcsyetal92.pdf,
accessed 30 September 2011.
[Barr, 1985] Barr, A. (1985). Systems that know that they dont understand.
http://www.stanford.edu/group/scip/avsgt/cognitiva85.pdf (accessed 21 July 2013).
[Barwise, 1989] Barwise, J. (1989). For whom the bell rings and cursor blinks. Notices
of the American Mathematical Society, 36(4):386388.
[Berners-Lee et al., 2006] Berners-Lee, T., Hall, W., Hendler, J., Shadbolt, N., and
Weitzner, D. J. (2006). Creating a science of the web. Science, 313:769771.
10.1126/science.1126902.
[Boden, 1977] Boden, M. A. (1977). Artificial Intelligence and Natural Man. Basic
Books, New York.
[Boden, 2006] Boden, M. A. (2006). Mind as Machine: A History of Cognitive
Science. Oxford University Press, Oxford.
[Boey, 2014] Boey, G. (2014). On my interview with peter unger, and the value of
philosophy. 3 Quarks Daily. Accessed 2 July from:
http://www.3quarksdaily.com/3quarksdaily/2014/06/on-my-interview-with-peter-
unger-and-the-value-of-philosophy.html.
[Bohm and Jacopini, 1966] Bohm, C. and Jacopini, G. (1966). Flow diagrams, turing
machines and languages with only two formation rules. Communications of the
ACM, 9(5):366371. Accessed 19 November 2013 from:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.119.9119&represent=rep1&type=pdf.
[Brooks, 1996] Brooks, Jr., F. P. (1996). The computer scientist as toolsmith ii.
Communications of the ACM, 39(3):6168. Revised and extended verson of
Brooks Jr., Frederick P. (1977), The Computer Scientist as ToolsmithStudies
in Interactive Computer Graphics, in B. Gilchrist (ed.), Information Processing 77,
Proceedings of IFIP Congress 77 (Toronto) (Amsterdam: North-Holland): 625
634; accessed 6 June 2013 from
http://www.cs.unc.edu/techreports/88-041.pdf.
[Brooks, 1975] Brooks, Frederick P., J. (1975). The Mythical Man-Month. Addison-
Wesley, Reading, MA.
[Bundy, 1983] Bundy, A. (1983). The nature of ai: A reply to schank. AI Magazine,
4(4):2931.
[Burks, 1970] Burks, A. W., editor (1970). Essays on Cellular Automata. University
of Illinois Press, Urbana, IL.
[Cane, 2014] Cane, S. (2014). Interview: David chalmers and andy clark. New
Philosopher, 2:mind. Accessed 13 March 2014 from:
http://www.newphilosopher.com/articles/interview-david-chalmers-and-andy-
clark/.
[Cannon, 2013] Cannon, P. (2013). Kant at the bar: Transcendental idealism in daily
life. Philosophy Now, Issue 95:1517. Accessed 15 November 2013 from
http://philosophynow.org/issues/95/Kant at the Bar Transcendental Idealism in Daily Life.
[Carnap, 1956] Carnap, R. (1956). Meaning and Necessity: A Study in Semantics and
Modal Logic, Second Edition. University of Chicago Press, Chicago.
[Carpenter and Doran, 1977] Carpenter, B. and Doran, R. (1977). The other turing
machine. The Computer Journal, 20(3):269279. Accessed 6 November 2013 from
http://comjnl.oxfordjournals.org/content/20/3/269.full.pdf+html.
[Carroll, 1893] Carroll, L. (1893). Sylvie and Bruno Concluded. Macmillan, London.
[Carroll, 1895] Carroll, L. (1895). What the tortoise said to achilles. Mind, 4(14):278
280. online at http://www.ditext.com/carroll/tortoise.html, accessed 7 January 2013.
[Carroll, 1848] Carroll, L. (ca. 1848). The two clocks. In The Rectory Umbrella.
(unknown). Accessed 4 February 2014 from: http://etc.usf.edu/lit2go/112/poems-
puzzles-and-stories-of-lewis-carroll/4953/the-two-clocks/.
[Cathcart and Klein, 2007] Cathcart, T. and Klein, D. (2007). Plato and a Platypus
Walk into a Bar: Understanding Philosophy through Jokes. Abrams Image, New
York.
[Cerf, 2015] Cerf, V. G. (2015). There is nothing new under the sun. Communications
of the ACM, 58(2):7.
[Chaitin, 1987] Chaitin, G. J. (1987). Computing the busy beaver function. In Cover,
T. and Gopinath, B., editors, Open Problems in Communication and Computation,
pages 108112. Springer. http://www.cs.auckland.ac.nz/chaitin/bellcom.pdf
(accessed 16 December 2013).
BIBLIOGRAPHY 777
[Colburn et al., 1993] Colburn, T. R., Fetzer, J. H., and Rankin, T. L., editors (1993).
Program Verification: Fundamental Issues in Computer Science. Kluwer Academic
Publishers, Dordrecht, The Netherlands.
[Collins and Quillian, 1972] Collins, A. M. and Quillian, M. R. (1972). How to make a
language user. In Tulving, E. and Donaldson, W., editors, Organization of Memory,
pages 309351. Academic Press, New York.
[Computer Science, 2003] Computer Science, G. W. U. D. o. (2003). Computer
science careers. http://www.seas.gwu.edu/simhaweb/misc/cscareers.html.
(accessed 21 June 2013).
[Cooper, 2012] Cooper, S. B. (2012). Turings titanic machine? Communications
of the ACM, 55(3):7483. http://cacm.acm.org/magazines/2012/3/146259-turings-
titanic-machine/fulltext (accessed 26 February 2014).
[Copeland, 1996] Copeland, B. J. (1996). What is computation? Synthese, 108:335
359. Preprint (accessed 18 March 2014) at
http://www.alanturing.net/turing archive/pages/pub/what/what.pdf.
[Copeland, 1997] Copeland, B. J. (1997). The broad conception of computation.
American Behavioral Scientist, 40(6):690716.
[Copeland, 1998] Copeland, B. J. (1998). Even turing machines can compute
uncomputable functions. In Calude, C., Casti, J., and Dinneen, M. J., editors,
Unconventional Models of Computtion, pages 150164. Springer-Verlag. Preprint
accessed 4 June 2014 from:
http://www.alanturing.net/turing archive/pages/pub/even/even.pdf.
[Copeland, 2000] Copeland, B. J. (2000). The church-turing thesis.
http://www.alanturing.net/turing archive/pages/Reference%20Articles/The%20Turing-
Church%20Thesis.html. Accessed 24 September 2014.
[Copeland, 2002] Copeland, B. J. (2002). Hypercomputation. Minds and Machines,
12(4):461502.
[Copeland and Proudfoot, 2010] Copeland, B. J. and Proudfoot, D. (2010). Deviant
encodings and turings analysis of computability. Studies in History and Philosophy
of Science, 41(3):247252.
[Copeland and Shagrir, 2011] Copeland, B. J. and Shagrir, O. (2011). Do accelerating
Turing machines compute the uncomputable? Minds and Machines, 21(2):221239.
[Copeland and Sylvan, 1999] Copeland, B. J. and Sylvan, R. (1999). Beyond the
universal turing machine. Australasian Journal of Philosophy, 77(1):4667.
Preprint accessed 27 May 2014 from:
http://www.alanturing.net/turing archive/pages/pub/beyond/beyond.pdf.
[Copeland and Sylvan, 2000] Copeland, B. J. and Sylvan, R. (2000). Computability
is logic-relative. In Hyde, D. and Priest, G., editors, Sociative Logics and Their
Applications: Essays by the Late Richard Sylvan, pages 189199. Ashgate.
780 BIBLIOGRAPHY
[Davis, 1998] Davis, M. (1998). Thinking Like an Engineer: Studies in the Ethics of a
Profession. Oxford University Press, New York.
[Davis, 2000] Davis, M. (2000). Overheard in the park. American Scientist, 88:366
367. Accessed 19 March 2014 from
http://www.americanscientist.org/bookshelf/pub/overheard-in-the-park.
[Davis, 2006b] Davis, M. (2006b). What is Turing reducibility? Notices of the AMS,
53(10):12181219. http://www.ams.org/notices/200610/whatis-davis.pdf (accessed
30 May 2014).
[Davis, 2012] Davis, M. (2012). The Universal Computer: The Road from Leibniz
to Turing; Turing Centenary Edition. CRC Press/Taylor & Francis Group, Boca
Raton, FL. also published as Engines of Logic: Mathematicians and the Origin of
the Computer (New York: W.W. Norton, 2000).
[Davis et al., 1996] Davis, R., Samuelson, P., Kapor, M., and Reichman, J. (1996).
A new view of intellectual property and software. Communications of the ACM,
39(3):2130. Accessed 23 September 2014 from:
people.csail.mit.edu/davis/cacm96.ps. A summary version of
[Samuelson et al., 1994].
[De Millo et al., 1979] De Millo, R. A., Lipton, R. J., and Perlis, A. J. (1979). Social
processes and proofs of theorems and programs. Communications of the ACM,
22(5):271280.
[Dedekind, 1890] Dedekind, R. (1890). Letter to keferstein. In van Heijenoort, J.,
editor, From Frege to Godel: A Source Book in Mathematical Logic, 18791931,
pages 98103. Harvard University Press, Cambridge, MA.
[DeJohn and Dietrich, 2003] DeJohn, J. and Dietrich, E. (2003). Editorial: Subvert
the dominant paradigm! a review of computationalism: new directions, edited by
Matthias Scheutz. Journal of Experimental and Theoretical Artificial Intelligence,
15(4):375382.
[Denning et al., 1989] Denning, P. J., Comer, D. E., Gries, D., Mulder, M. C.,
Tucker, A., Turner, A. J., and Young, P. R. (1989). Computing as a discipline.
Communications of the ACM, 32(1):923.
[Deutsch, 1985] Deutsch, D. (1985). Quantum theory, the church-turing principle and
the universal computer. Proceedings of the Royal Society of London A, 400:97117.
Preprint accessed 8 April 2014 from:
http://www.cs.berkeley.edu/christos/classics/Deutsch quantum theory.pdf;page
references are to the preprint.
[Dietrich, 2001] Dietrich, E. (2001). Homo sapiens 2.0: Why we should build the
better robots of our nature. Journal of Experimental and Theoretical Artificial
Intelligence, 13(4):323328.
[Dietrich, 2007] Dietrich, E. (2007). After the humans are gone. Journal of
Experimental and Theoretical Artificial Intelligence, 19(1):5567.
[Egan, 2012] Egan, F. (2012). Metaphysics and computational cognitive science: Lets
not let the tail wag the dog. Journal of Cognitive Science (South Korea), 13(1):39
49. http://j-cs.org/gnuboard/bbs/board.php?bo table= vol013i1&wr id=2
(accessed 9 November 2014).
[Egan, 2014] Egan, F. (2014). How to think about mental content. Philosophical
Studies, 170(1):115135. Preprint at
https://www.academia.edu/4160744/How to think about Mental Content
(accessed 23 February 2015); video at https://vimeo.com/60800468 (accessed
23 February 2015).
[Einstein, 1940] Einstein, A. (1940). Considerations concerning the fundaments of
theoretical physics. Science, 91(2369):487492.
[Ekdahl, 1999] Ekdahl, B. (1999). Interactive computing does not supersede churchs
thesis. The Association of Management and the International Association of
Management, 17th Annual International Conference, San Diego, CA, August 68,
Proceedings Computer Science, 17(2):261265.
786 BIBLIOGRAPHY
[Ensmenger, 2003] Ensmenger, N. (2003). Bits of history: Review of a.r. burkss who
invented the computer? the legal battle that changed computing history. American
Scientist, 91:467468. http://www.americanscientist.org/bookshelf/pub/bits-of-
history
(accessed 30 October 2013).
[Everett, 2012] Everett, M. (2012). Answer to whats the most important question,
and why?. Philosophy Now, 92:3841.
[Fitch et al., 2005] Fitch, W. T., Hauser, M. D., and Chomsky, N. (2005). The
evolution of the language faculty: Clarifications and implications. Cognition,
97:179210. Accessed 14 July 2014 from:
http://dash.harvard.edu/bitstream/handle/1/3117935/Hauser EvolutionLanguageFaculty.pdf.
BIBLIOGRAPHY 787
[Fodor, 1974] Fodor, J. A. (1974). Special sciences (or: The disunity of science as a
working hypothesis). Synthese, 28(2):97115.
[Fodor, 1978] Fodor, J. A. (1978). Tom Swift and his procedural grandmother.
Cognition, 6:229247. Accessed 11 December 2013 from:
http://www.nyu.edu/gsas/dept/philo/courses/mindsandmachines/Papers/tomswift.pdf.
[Foley, 2002] Foley, J. (2002). Computing > computer science. Computing Research
News, 14(4):6. revised version online at:
http://archive.cra.org/reports/computing/index.html
(accessed 18 June 2013); response by Robert L. Glass online at:
http://archive.cra.org/reports/computing/glass.html
(accessed 18 June 2013).
[Forster, 1909] Forster, E. (1909). The machine stops. In ED, editor, TITLE. PUB,
ADDR. http://archive.ncsa.illinois.edu/prajlich/forster.html.
[Fortnow, 2013] Fortnow, L. (2013). The Golden Ticket: P, NP, and the Search for the
Impossible. Princeton University Press, Princeton, NJ.
[Fox, 2013] Fox, M. (2013). Janos starker, master of the cello, dies at 88. New York
Times, page B16. http://www.nytimes.com/2013/04/30/arts/music/janos-starker-
master-cellist-dies-at-88.html (accessed 12 May 2013).
[Frazer, 1915] Frazer, J. G. (19111915). The Golden Bough: A Study in Magic and
Religion, 3rd ed. Macmillan, London.
[Freeth, 2006] Freeth, T., e. a. (2006). Decoding the ancient greek astronomical
calculator known as the antikythera mechanism. Nature, 444:587591.
[French, 2000] French, R. M. (2000). The turing test: The first fifty
years. Trends in Cognitive Sciences, 4(3):115121. http://leadserv.u-
bourgogne.fr/rfrench/french/TICS turing.pdf (accessed 11 October 2015).
[Frenkel, 2013] Frenkel, E. (2013). Love and Math: The Heart of Hidden Reality.
Basic Books, New York.
[Friedman and Kahn, 1997] Friedman, B. and Kahn, Peter H., J. (1997). People are
responsible, computers are not. In Ermann, M. D., Williams, M. B., and Shauf,
M. S., editors, Computers, Ethics, and Society, Second Edition, pages 303314.
Oxford University Press, New York. Excerpt from their Human Agency and
Responsible Computing: Implications for Computer System Design, Journal of
Systems and Software (1992): 714.
BIBLIOGRAPHY 789
[Frigg and Hartmann, 2012] Frigg, R. and Hartmann, S. (2012). Models in science.
In Zalta, E. N., editor, Stanford Encyclopedia of Philosophy (Fall 2012 Edition).
online. http://plato.stanford.edu/archives/fall2012/entries/models-science/.
[Gal-Ezer and Harel, 1998] Gal-Ezer, J. and Harel, D. (1998). What (xelse) shoud cs
educators know? Communications of the ACM, 41(9):7784.
[Galbi, 1971] Galbi, E. W. (1971). Software and patents: A status report.
Communications of the ACM, 14(4):274280. Accessed 3 September 2014 from:
http://simson.net/ref/2007/cs3610/ref/p274-galbi.pdf.
[Gandy, 1980] Gandy, R. (1980). Churchs thesis and principles for mechanisms. In
Barwise, J., Keisler, H., and Kunen, K., editors, The Kleene Symposium, pages 123
148. North-Holland.
[Gandy, 1988] Gandy, R. (1988). The confluence of ideas in 1936. In Herken, R.,
editor, The Universal Turing Machine: A Half-Century Survey, Second Edition,
pages 51102. Springer-Verlag, Vienna.
[Gazzaniga, 2010] Gazzaniga, M. S. (2010). Neuroscience and the correct level
of explanation for understanding mind: An extraterrestrial roams through some
neuroscience laboratories and concludes earthlings are not grasping how best to
understand the mind-brain interface. Trends in Cognitive Sciences, 14(7):291292.
[Gettier, 1963] Gettier, E. L. (1963). Is justified true belief knowledge? Analysis,
23:121123. Reprinted in A.P. Griffiths (ed.), Knowledge and Belief (Oxford:
Oxford University Press, 1967);
http://www.ditext.com/gettier/gettier.html (accessed 19 September 2011).
[Gigerenzer and Goldstein, 1996] Gigerenzer, G. and Goldstein, D. G. (1996). Mind
as computer: Birth of a metaphor. Creativity Research Journal, 9(23):131
144. http://web.ebscohost.com/ehost/pdfviewer/pdfviewer?sid=9fd0749e-892b-
4f80-8663-7a539038aa82%40sessionmgr198&vid=1&hid=114
(accessed 31 January 2014).
[Ginsberg, 1987] Ginsberg, M. L., editor (1987). Readings in Nonmonotonic
Reasoning. Morgan Kaufmann, Los Altos, CA.
[Gladwell, 2011] Gladwell, M. (2011). Creation myth. New Yorker, pages 44,
46, 4850, 52A53A. slightly different version accessed 8 February 2014 from:
http://www.newyorker.com/reporting/2011/05/16/110516fa fact gladwell.
[Gleick, 2008] Gleick, J. (2008). if shakespeare had been able to google. . . . New
York Review of Books, 55(20):7779; highlighted paragraph on p. 78, cols. 23.
[Gleiser, 2014] Gleiser, M. (2014). Does consciousness compute? The Chronicle
Review, 61(2):B13B15.
[Godel, 930s] Godel, K. (ca 1930s). Undecidable diophantine propositions. In
Feferman, S. et al., editors, Collected Works, Vol. III, pages 164175. Oxford
University Press, Oxford.
790 BIBLIOGRAPHY
[Goldin et al., 2006] Goldin, D., Smolka, S. A., and Wegner, P., editors (2006).
Interactive Computation: The New Paradigm. Springer-Verlag, Berlin. Some
chapters available online at:
http://www.springer.com/computer/theoretical+computer+science/book/978-3-
540-34666-1.
[Goldin and Wegner, 2005] Goldin, D. and Wegner, P. (2005). The church-turing
thesis: Breaking the myth. In Cooper, S. and Lowe, B., editors, CiE: New
Computational Paradigms, pages 152168. Springer LNCS 3526. Accessed
26 February 2014 from: http://www.cse.uconn.edu/dqg/papers/cie05.pdf.
[Gopnik, 2009b] Gopnik, A. (2009b). Whats the recipe? New Yorker, pages
106112. Accessed 12 May 2014 from:
http://www.newyorker.com/arts/critics/atlarge/2009/11/23/091123crat atlarge gopnik.
[Gopnik, 2013] Gopnik, A. (2013). Moon man: What galileo saw. New Yorker, pages
103109. online at:
http://www.newyorker.com/arts/critics/atlarge/2013/02/11/130211crat atlarge gopnik
(accessed 24 July 2013).
BIBLIOGRAPHY 791
[Gries, 1981] Gries, D. (1981). The Science of Programming, 3rd printing. Springer-
Verlag, 1985, New York.
[Grobart, 2011] Grobart, S. (2011). Spoiled by the all-in-one gadget. New York Times,
page WK3. http://www.nytimes.com/2011/03/27/weekinreview/27grobart.html
(accessed 25 February 2014).
[Grover, 1999] Grover, L. K. (1999). Quantum computing. The Sciences, pages 24
30. Accessed 9 December 2013 from:
http://cryptome.org/qc-grover.htm.
[Guernsey, 2009] Guernsey, L. (2009). Computers track the elusive metaphor.
Chronicle of Higher Education, page A11.
[Gurevich, 1999] Gurevich, Y. (1999). The sequential ASM thesis. Bulletin of the
European Association for Theoretical Computer Science,
67:93124. http://research.microsoft.com/en-us/um/people/gurevich/Opera/136.pdf
(accessed 24 December 2013).
[Gurevich, 2000] Gurevich, Y. (2000). Sequential abstract-state machines capture
sequential algorithms. ACM Transactions on Computational Logic, 1(1):77111.
http://research.microsoft.com/en-us/um/people/gurevich/opera/141.pdf (accessed
17 December 2013).
[Gurevich, 2011] Gurevich, Y. (2011). What is an algorithm? In SOFSEM 2012:
Theory and Practice of Computer Science, pages 3142. Springer Lecture Notes in
Computer Science 7147. http://research.microsoft.com/pubs/155608/209-3.pdf
(accessed 17 December 2013).
[Gurevich, 2012] Gurevich, Y. (2012). Foundational analyses of computation.
Technical Report MSR-TR-2012-14, Microsoft Research, Redmond, WA.
http://research.microsoft.com/pubs/158617/210.pdf (accessed 21 January 2014).
[Gurevich, 2013] Gurevich, Y. ((accessed 24 December 2013)). transcript of aaai talk.
http://msrvideo.vo.msecnd.net/rmcvideos/120362/120362.doc. see also:
https://www.facebook.com/events/47127123902/ (accessed 24 December 2013).
[Gutting, 2012] Gutting, G. (2012). Philosophywhats the use? New York Times.
online at http://opinionator.blogs.nytimes.com/2012/01/25/philosophy-whats-the-
use/ (accessed 29 May 2013).
[Guzdial and Kay, 2010] Guzdial, M. and Kay, A. (2010). The core of computer
science:
Alan kays triple whammy. http://computinged.wordpress.com/2010/05/24/the-
core-of-computer-science-alan-kays-triple-whammy/. Part of Guzdials Computing
Education Blog; accessed 28 October 2014.
[Haberman, 2009] Haberman, C. (2009). The story of a landing. New York Times
Book Review. http://www.nytimes.com/2009/11/29/books/review/Haberman-t.html
(accessed 14 November 2012).
792 BIBLIOGRAPHY
[Habib, 1983] Habib, S. (1983). Emulation. In Ralston, A. and Edwin D.Reilly, J.,
editors, Encyclopedia of Computer Science and Engineering, 2nd edition, pages
602603. Van Nostrand Reinhold, New York.
[Halpern et al., 2001] Halpern, J. Y., Harper, R., Immerman, N., Kolaitis, P. G., Vardi,
M. Y., and Vianu, V. (2001). On the unusual effectiveness of logic in computer
science. Bulletin of Symbolic Logic, 7(2):213236. online at:
http://www.lsi.upc.edu/roberto/EffectivenessOfLogic.pdf (accessed 17 June
2013).
[Hamming, 1968] Hamming, R. (1968). One mans view of computer science. Journal
of the Association for Computing Machinery, 16(1):312.
[Harman, 1965] Harman, G. (1965). The inference to the best explanation. The
Philosophical Review, 74(1):8895.
[Hartmanis and Lin, 1992] Hartmanis, J. and Lin, H. (1992). What is computer
science and engineering? In Hartmanis, J. and Lin, H., editors, Computing the
Future: A Broader Agenda for Computer Science and Engineering, pages 163216.
National Academy Press, Washington, DC. Ch. 6.
[Hartmanis and Stearns, 1967] Hartmanis, J. and Stearns, R. (1967). Sets of numbers
defined by finite automata. American Mathematical Monthly, pages 539542.
[Hauser et al., 2002] Hauser, M. D., Chomsky, N., and Fitch, W. T. (2002). The faculty
of language: What is it, who has it, and how did it evolve. Science, 298:15691579.
Accessed 14 July 2014 from:
http://www.chomsky.info/articles/20021122.pdf.
[Hayes, 1995] Hayes, B. (1995). The square root of not. American Scientist,
83:304308. http://www.americanscientist.org/issues/num2/the-square-root-of-not/
(accessed 6 December 2013).
[Hayes, 2007a] Hayes, B. (2007a). Calculating the weather. American Scientist, 95(3).
online at:
http://www.americanscientist.org/bookshelf/pub/calculating-the-weather
(accessed 3 July 2013).
[Hayes, 2014a] Hayes, B. (2014a). Pencil, paper, and pi. American Scientist,
102(1):342345. Accessed 22 October 2014 from:
http://www.americanscientist.org/libraries/documents/20148513205110590-2014-
09CompSciHayes.pdf.
[Hearst and Hirsh, 2000] Hearst, M. and Hirsh, H. (2000). Ais greatest trends and
controversies. IEEE Intelligent Systems, 15(1):817. Accessed 2 July 2014 from:
http://www.cs.cornell.edu/courses/cs472/2002fa/handouts/challenges-ai.pdf.
[Hedger, 1998] Hedger, L. (1998). Analog computation: Everything old is new again.
Indiana University Research & Creative Activity, 21(2). Accessed 31 January 2014
from:
http://www.indiana.edu/rcapub/v21n2/p24.html.
[Heng, 2014] Heng, K. (2014). The nature of scientific proof in the age of simulations.
American Scientist, 102(3):174177. Accessed 6 May 2014 from:
http://www.americanscientist.org/issues/pub/2014/3/the-nature-of-scientific-proof-
in-the-age-of-simulations.
[Hofstadter and Sander, 2013] Hofstadter, D. and Sander, E. (2013). Surfaces and
Essences: Analogy as the Fuel and Fire of Thinking. Basic Books, New York.
[Hollan et al., 2000] Hollan, J., Hutchins, E., and Kirsh, D. (2000). Distributed
cognition: Toward a new foundation for human-computer interaction research. ACM
Transactions on Computer-Human Interaction, 7(2):174196.
[Holland, 2012] Holland, J. H. (2012). Signals and Boundaries: Building Blocks for
Complex Adaptive Systems. MIT Press, Cambridge, MA.
[Holst, 2000] Holst, P. A. (2000). Analog computer. In Ralston, A., Reilly, E. D., and
Hemmendinger, D., editors, Encyclopedia of Computer Science, Fourth Edition,
pages 5359. Groves Dictionaries, New York.
796 BIBLIOGRAPHY
[Holt, 2009] Holt, J. (2009). Death: Bad? New York Times Book Review, page BR27.
http://www.nytimes.com/2009/02/15/books/review/Holt-t.html.
[Hopcroft and Ullman, 1969] Hopcroft, J. E. and Ullman, J. D. (1969). Formal
Languages and Their Relation to Automata. Addison-Wesley, Reading, MA.
[Hopper, 1981] Hopper, G. M. (1981). The first bug. Annals of the History of
Computing, 3(3):285286. online at:
http://ieeexplore.ieee.org/stamp/stamp.jsp?reload=true&tp=&arnumber=4640691
(accessed 6 November 2013).
[Horwich, 2013] Horwich, P. (2013). Was wittgenstein right? New York Times.
online at http://opinionator.blogs.nytimes.com/2013/03/03/was-wittgenstein-right/
(accessed 29 May 2013).
[Huber, 1966] Huber, H. G. (1966). Algorithm and formula. Communications of the
ACM, 9(9):653654.
[Huemer, 2010] Huemer, W. (2010). Franz brentano. In Zalta, E. N., editor, Stanford
Encyclopedia of Philosophy. online. http://plato.stanford.edu/entries/brentano/.
[Hugo, 1862] Hugo, V. (1862). Les Miserables. Signet Classics, 1987, New York.
[Humphreys, 1990] Humphreys, P. (1990). Computer simulations. PSA: Proceedings
of the [1990] Biennial Meeting of the Philosophy of Science Association, 2:497
506.
[Humphreys, 2002] Humphreys, P. (2002). Computational models. Philosophy of
Science, 69:S1S11. http://ist.uap.asia/jpira/compthink/17232634.pdf (accessed
12 January 2015).
[Hutchins, 1995a] Hutchins, E. (1995a). Cognition in the Wild. MIT Press,
Cambridge, MA.
[Hutchins, 1995b] Hutchins, E. (1995b). How a cockpit remembers its speeds.
Cognitive Science, 19:265288.
[Huxley, 1932] Huxley, A. (1932). Brave New World. online.
http://www.huxley.net/bnw/.
[Irmak, 2012] Irmak, N. (2012). Software is an abstract artifact. Grazer
Philosophische Studien, 86:5572. Accessed 4 August 2014 from:
http://philpapers.org/archive/IRMSIA.pdf.
[Jackendoff, 2012] Jackendoff, R. (2012). A Users Guide to Thought and Meaning.
Oxford University Press, Oxford.
[Jackendoff and Pinker, 2005] Jackendoff, R. and Pinker, S. (2005). The nature of the
language faculty and its implications for evolution of language. Cognition, 97:211
225. Accessed 14 July 2014 from:
http://pinker.wjh.harvard.edu/articles/papers/2005 09 Jackendoff Pinker.pdf.
BIBLIOGRAPHY 797
[Kant, 1787] Kant, I. (1781/1787). Critique of Pure Reason. St. Martins Press, New
York. translation published 1929.
[Kay, 2010] Kay, M. (2010). Introduction. In Flickinger, D. and Oepen, S., editors,
Collected Papers of Martin Kay: A Half Century of Computational Linguistics,
pages 118. CSLI Studies in Computational Linguistics, Stanford, CA.
[Keith, 2014] Keith, T. (2014). The letter that kicked off a radio career. NPR.org.
Accessed 14 July 2014 from:
http://www.npr.org/2014/07/05/328512614/the-letter-that-kicked-off-a-radio-
career.
[Khalil and Levy, 1978] Khalil, H. and Levy, L. S. (1978). The academic image of
computer science. ACM SIGCSE Bulletin, 10(2):3133.
[Kling et al., 1993] Kling, R., Wegner, P., Rice, J. R., and Weiss, E. A. (1993).
Broadening computer science. Communications of the ACM, 36(2):1519.
[Knuth, 1966] Knuth, D. E. (1966). Algorithm and program: Information and data.
Communications of the ACM, 9(9):654.
BIBLIOGRAPHY 799
[Krebs and Thomas, 1981] Krebs, A. and Thomas, Jr., R. M. (1981). Historic moth.
New York Times. online at:
http://www.nytimes.com/1981/08/07/nyregion/notes-on-people-historic-moth.html
(accessed 6 November 2013).
[Kripke, 2013] Kripke, S. A. (2013). The church-turing thesis as a special corollary
of godels completeness theorem. In Copeland, B. J., Posy, C. J., and Shagrir, O.,
editors, Computability: Turing, Godel, Church, and Beyond, pages 77104. MIT
Press, Cambridge, MA.
[Kugel, 2002] Kugel, P. (2002). Computing machines cant be intelligent (. . . and
turing said so). Minds and Machines, 12(4):56359?
[Kuhn, 1957] Kuhn, T. S. (1957). The Copernican Revolution: Planetary Astronomy
in the Development of Western Thought. Harvard University Press, Cambridge, MA.
[Kuhn, 1962] Kuhn, T. S. (1962). The Structure of Scientific Revolutions. University
of Chicago Press, Chicago.
[Kumar, 1994] Kumar, D. (1994). From beliefs and goals to intentions and actions:
An amalgamated model of inference and acting. http://www.cse.buffalo.edu/tech-
reports/94-04.ps. Unpublished PhD dissertation, Department of Computer Science,
SUNY Buffalo.
[Kumar, 1996] Kumar, D. (1996). The SNePS BDI architecture. Decision Support
Systems, 16(1):319. http://www.cse.buffalo.edu/sneps/Bibliography/kum96.pdf
(accessed 28 August 2015).
[LaChat, 1986] LaChat, M. R. (1986). Artificial intelligence and ethics: An exercise
in the moral imagination. AI Magazine, 7(2):7079.
[Ladyman, 2009] Ladyman, J. (2009). What does it mean to say that a physical system
implements a computation? Theoretical Computer Science, 410(45):376383.
http://ac.els-cdn.com/S0304397508007238/1-s2.0-S0304397508007238-main.pdf? tid=04248730-5f6c-
11e4-8b44-00000aab0f26&acdnat=1414588006 ff4ead0d50f1774e6d0779cf705e19e6
(accessed 28 October 2014).
[Lakoff, 1987] Lakoff, G. (1987). Women, Fire, and Dangerous Things: What
Categories Reveal about the Mind. University of Chicago Press, Chicago.
[Lakoff and Johnson, 1980a] Lakoff, G. and Johnson, M. (1980a). Conceptual
metaphor in everyday language. Journal of Philosophy, 77(8):453486.
[Lakoff and Johnson, 1980b] Lakoff, G. and Johnson, M. (1980b). Meaphors We Live
By. University of Chicago Press, Chicago.
[Lamport, 2011]
Lamport, L. (2011). Euclid writes an algorithm: A fairytale. International Journal
of Software and Informatics, 5(1-2, Part 1):720. http://research.microsoft.com/en-
us/um/people/lamport/pubs/euclid.pdf (accessed 23 April 2015), page references to
PDF version.
BIBLIOGRAPHY 801
[Lamport, 2012] Lamport, L. (2012). How to write a 21st century proof. Journal of
Fixed Point Theory and Applications, 11(1):4363. Accessed 6 October 2014 from:
http://research.microsoft.com/en-us/um/people/lamport/pubs/proof.pdf.
[Lamport, 2015] Lamport, L. (2015). Who builds a house without drawing blueprints?
Communications of the
ACM, 58(4):3841. http://cacm.acm.org/magazines/2015/4/184705-who-builds-a-
house-without-drawing-blueprints/fulltext (accessed 18 April 2015).
[Langewiesche, 2009] Langewiesche, W. (2009). Fly by Wire: The Geese, the Glide,
the Miracle on the Hudson. Farrar, Strauss & Giroux, New York?
[Lanier, 2005] Lanier, J. (2005). Early computings long, strange trip. American
Scientist, 93(4):364365. http://www.americanscientist.org/bookshelf/pub/early-
computings-long-strange-trip (accessed 12 November 2013).
[Lazowska, 2014] Lazowska, E. (2014). Letter to the editor. New York Times, page
A26. Accessed 26 May 2014 from:
http://www.nytimes.com/2014/05/16/opinion/should-young-children-learn-
coding.html.
[Leiter, 2005] Leiter, B. (12 October 2005). Why is there a nobel prize in economics?
Leiter Reports: A Philosophy
Blog. http://leiterreports.typepad.com/blog/2005/10/why is there a .html (accessed
4 November 2013).
[Lem, 1971] Lem, S. (1971). Non serviam. In A Perfect Vacuum. Harcourt Brace
Jovanovich, New York. 1979.
[Lemonick, 2015] Lemonick, M.
(2015). The pluto wars revisited. http://www.newyorker.com/tech/elements/nasa-
dawn-ceres-pluto-dwarf-planets. The New Yorker online.
[Lessing, 1778] Lessing, G. E. (1778). Anti-goetze: Eine duplik. In
Gopfert, H., editor, Werke, pages Vol. 8, pp. 3233. (published online).
http://harpers.org/blog/2007/11/lessings-search-for-truth/ (accessed 5 February
2013).
[Lewis, 1953] Lewis, W. (1953). Electronic computers and telephone switching.
Proceedings of the Institute of Radio Engineers, 41(10):12421244.
[Lewontin, 2014] Lewontin, R. (2014). The new synthetic biology: Who gains? New
York Review of Books, 61(8):2223. Accessed 19 May 2014 from:
http://www.nybooks.com/articles/archives/2014/may/08/new-synthetic-biology-
who-gains/.
[Licklider and Taylor, 1968] Licklider, J. and Taylor, R. W. (1968). The
computer as a communication device. Science and Technology. online at
http://memex.org/licklider.pdf (accessed 22 May 2013).
[Lightman, 2012] Lightman, A. (2012). Mr g. Pantheon, New York.
[Lindell, 2001] Lindell, S. (24 January 2001). Computer science as a liberal art: The
convergence of technology and reason. talk presented at Haverford College. online
at:
http://www.haverford.edu/cmsc/slindell/Presentations/Computer%20Science%20as%
20a%20Liberal%20Art.pdf (accessed 1 July 2013).
[Lipton, 2004] Lipton, P. (2004). Inference to the Best Explanation. Routledge, 2nd
edition edition.
[Lloyd and Ng, 2004] Lloyd, S. and Ng, Y. J. (2004). Black hole computers. Scientific
American, 291(5):5261.
[Lohr, 2006] Lohr, S. (2006). Group of university researchers to make web science a
field of study. New York Times, page C6. Accessed 3 July 2013 from:
http://www.nytimes.com/2006/11/02/technology/02compute.html.
[Lohr, 2008] Lohr, S. (2008). Does computing add up in the classroom? New York
Times Bits (blog). Accessed 8 July 2013 from:
http://bits.blogs.nytimes.com/2008/04/01/does-computing-add-up-in-the-
classroom/.
[Lohr, 2013] Lohr, S. (2013). Algorithms get a human hand in steering web. New York
Times. Accessed 18 July 2014 from:
http://www.nytimes.com/2013/03/11/technology/computer-algorithms-rely-
increasingly-on-human-helpers.html.
BIBLIOGRAPHY 803
[Loui, 1998] Loui, R. (1998). Review of smith 1996. Artificial Intelligence, 106:353
358.
[Lynch, 2013]
Lynch, M. P. (2013). Of flies and philosophers: Wittgenstein and philosophy. New
York Times. online at http://opinionator.blogs.nytimes.com/2013/03/05/of-flies-and-
philosophers-wittgenstein-and-philosophy/ (accessed 29 May 2013).
[Macari, 2012] Macari, M. (2012). Oracle thinks you can copyright a programming
language, google disagrees. The Verge. Accessed 26 September 2014 from:
http://www.theverge.com/2012/4/13/2944440/google-oracle-lawsuit-programming-
language-copyright.
[Machery, 2012] Machery, E. (2012). Why i stopped worrying about the definition
of life. . . and why you should as well. Synthese, 185:145164. Preprint accessed
2 May 2014 from:
http://www.pitt.edu/machery/papers/Definition
[MacKenzie, 1992] MacKenzie, D. (1992). Computers, formal proofs, and the law
courts. Notices of the American Mathematical Society, 39(9):10661069. Also see
introduction by Keith Devlin, same issue, pp. 10651066.
[Mahoney and Haigh (ed.), 2011] Mahoney, M. S. and Haigh (ed.), T. (2011).
Histories of Computing. Harvard University Press, Cambridge, MA.
804 BIBLIOGRAPHY
[Manovich, 2013] Manovich, L. (2013). The algorithms of our lives. The Chronicle
[of Higher Education] Review, 60(16):B10B13. Accessed 7 April 2014 from:
https://chronicle.com/article/The-Algorithms-of-Our-Lives-/143557/.
[Manzano, 1997] Manzano, M. (1997). Alonzo church: His life, his work and some
of his miracles. History and Philosophy of Logic, 18:211232.
[Markov, 1954] Markov, A. (1954). Theory of algorithms. Tr. Mat. Inst. Steklov,
42:114. trans. by Edwin Hewitt, in American Mathematical Society Translations,
Series 2, Vol. 15 (1960).
[Marr, 1982] Marr, D. (1982). Vision: A Computational Investigation into the Human
Representation and Processing of Visual Information. W.H. Freeman, New York.
[Martin, 2015] Martin, C. (2015). She seconds that emotion. The Chronicle [of
Higher Education] Review, 61(33):B16. http://chronicle.com/article/Choosing-
Love/229569/ (accessed 14 June 2015).
[McAllister, 2012] McAllister, N. (2012). Oracle vs. google: Who owns the java apis?
InfoWorld. Accessed 26 September 2014 from:
http://www.infoworld.com/article/2617268/java/oracle-vs--google--who-owns-
the-java-apis-.html.
[McBride, 2007] McBride, N. (22 January 2007). The death of computing. BCS:
The Chartered Institute for IT; Features,
Press and Policy. http://www.bcs.org/content/ConWebDoc/9662 (accessed 3 July
2013).
BIBLIOGRAPHY 805
[Miller et al., 1960] Miller, G. A., Galanter, E., and Pribram, K. H. (1960). Plans and
the Structure of Behavior. Henry Holt, New York.
[Milner, 1993] Milner, R. (1993). Elements of interaction: Turing award lecture.
Communications of the ACM, 36(1):7889. Accessed 26 May 2014 from:
http://delivery.acm.org/10.1145/160000/151240/a1991-milner.pdf.
[Minsky, 1967] Minsky, M. (1967). Computation: Finite and Infinite Machines.
Prentice-Hall, Englewood Cliffs, NJ.
[Minsky, 1968] Minsky, M. (1968). Preface. In Minsky, M., editor, Semantic
Information Processing, page v. MIT Press, Cambridge, MA.
[Minsky, 1979] Minsky, M. (1979). Computer science and the representation of
knowledge. In Dertouzos, L. and Moses, J., editors, The Computer Age: A Twenty
Year View, pages 392421. MIT Press, Cambridge, MA.
[Mish, 1983] Mish, F. C., editor (1983). Websters Ninth New Collegiate Dictionary.
Merriam-Webster, Springfield, MA.
[Mitcham, 1994] Mitcham, C. (1994). Thinking through Techology: The Path between
Engineering and Philosophy. University of Chicago Press, Chicago.
[Mizoguchi and Kitamura, 2009] Mizoguchi, R. and Kitamura, Y. (2009). A
functional ontology of artifacts. The Monist, 92(3):387402.
[Monroe and Wineland, 2008] Monroe, C. R. and Wineland, D. J. (2008). Quantum
computing with ions. Scientific American, pages 6471. Accessed 29 March 2014
from http://www.cs.virginia.edu/robins/Quantum Computing with Ions.pdf.
[Montague, 1960] Montague, R. (1960). Towards a general theory of computability.
Synthese, 12(4):429438.
[Montague, 1970] Montague, R. (1970). English as a formal language. In Thomason,
R. H., editor, Formal Philosophy: Selected Papers of Richard Montague, pages 192
221. Yale University Press, 1974, New Haven, CT. Accessed 10 February 2014
from: http://strangebeautiful.com/uwo/metaphys/montague-formal-philosophy.pdf.
[Mooers, 1975] Mooers, C. N. (1975). Computer software and copyright. Computing
Surveys, 7(1):4572.
[Moor, 1978] Moor, J. H. (1978). Three myths of computer science. British Journal
for the Philosophy of Science, 29(3):213222.
[Moor, 1979] Moor, J. H. (1979). Are there decisions computers should never make?
Nature and System, 1:217229.
[Moor, 1985]
Moor, J. H. (1985). What is computer ethics? Metaphilosophy, 16(4):266
275. http://web.cs.ucdavis.edu/rogaway/classes/188/spring06/papers/moor.html
(accessed 2 October 2015).
808 BIBLIOGRAPHY
[Moor, 2003] Moor, J. H., editor (2003). The Turing Test: The Elusive Standard of
Artificial Intelligence. Kluwer Academic, Dordrecht, The Netherlands.
[Morris and Reilly, 2000] Morris, G. J. and Reilly, E. D. (2000). Digital computer.
In Ralston, A., Reilly, E. D., and Hemmendinger, D., editors, Encyclopedia of
Computer Science, Fourth Edition, pages 539545. Groves Dictionaries, New York.
[Nagel et al., 2001] Nagel, E., Newman, J. R., and Hofstadter, D. R. (2001). Godels
Proof, Revised Edition. New York University Press, New York.
[Nagel, 1987] Nagel, T. (1987). What Does It All Mean? A Very Short Introduction to
Philosophy. Oxford University Press, New York.
[Nahmias et al., 2006] Nahmias, E., Morris, S. G., Nadelhoffer, T., and Turner, J.
(2006). Is incompatibilism intuitive? Philosophy and Phenomenological Research,
73(1):2853.
[Natarajan, 2014] Natarajan, P. (2014). What scientists really do. New York Review of
Books, 61(16):6466. Accessed 5 November 2014 from:
http://www.nybooks.com/articles/archives/2014/oct/23/what-scientists-really-do/.
[Newcombe et al., 2015] Newcombe, C., Rath, T., Zhang, F., Munteanu, B., Brooker,
M., and Deardeuff, M. (2015). How Amazon web services uses formal methods.
Communications of the ACM, 58(4):6673.
http://delivery.acm.org/10.1145/2700000/2699417/p66-newcombe.pdf
(accessed 18 April 2015)
and http://m.cacm.acm.org/magazines/2015/4/184701-how-amazon-web-services-
uses-formal-methods/fulltext
(accessed 15 June 2015).
BIBLIOGRAPHY 809
[Pandya, 2013] Pandya, H. (2013). Shakuntala devi, human computer who bested
the machines, dies at 83. New York Times. Accessed 26 February 2014 from:
http://www.nytimes.com/2013/04/24/world/asia/shakuntala-devi-human-computer-
dies-in-india-at-83.html.
[Parlante, 2005] Parlante, N. (2005). What is computer science? InroadsThe
SIGSCE Bulletin, 37(2):2425.
[Parnas, 1985] Parnas, D. L. (1985). Software aspects of strategic defense systems.
American Scientist, 73(5):432440. Reprinted in Communications of the ACM
28(12) (December 1985): 13261335.
[Perruchet and Vinter, 2002] Perruchet, P. and Vinter, A. (2002). The self-organizing
consciousness. Behavioral and Brain Sciences, 25(3):297388.
[Perry, 1981] Perry, William G., J. (1981). Cognitive and ethical growth: The making
of meaning. In Chickering, A. and Associates, editors, The Modern American
College, pages 76116. Jossey-Bass, San Francisco.
[Perry, 1970] Perry, Jr., W. G. (1970). Forms of Intellectual and Ethical Development
in the College Years: A Scheme. Holt, Rinehart and Winston, New York.
[Peschl and Scheutz, 2001a] Peschl, M. and Scheutz, M. (2001a). Some thoughts
on computation and simulation in cognitive science. In Proceedings of the 6th
Congress of the Austrian Philosophical Society, pages 534540. publisher unknown.
http://hrilab.tufts.edu/publications/scheutzpeschl00linz.pdf
(accessed 5 January 2015; citations to the online version).
[Peschl and Scheutz, 2001b] Peschl, M. F. and Scheutz, M. (2001b). Ex-
plicating the epistemological role of simulation in the development
of theories of cognition. In Proceedings of the 7th Colloquium on
Cognitive Science (ICCS-01), pages 274280. publisher unknown.
http://www.academia.edu/719102/Explicating the epistemological role of simulation in the development of theories of cognition
(accessed 5 January 2015).
[Petersen, 2007] Petersen, S. (2007). The ethics of robot servitude. Journal of
Experimental and Theoretical Artificial Intelligence, 19(1):4354.
[Piccinini, 2003] Piccinini, G. (2003). Alan turing and the mathematical objection.
Minds and Machines, 13:2348.
http://www.umsl.edu/piccininig/Alan Turing and Mathematical Objection.pdf
(accessed 13 February 2015).
812 BIBLIOGRAPHY
[Piccinini, 2004a] Piccinini, G. (2004a). The first computational theory of mind and
brain: A close look at McCulloch and Pittss Logical calculus of ideas immanent
in nervous activity. Synthese, 141:175215. For a reply, see [Aizawa, 2010].
[Piccinini, 2004b] Piccinini, G. (2004b). Functionalism, computationalism, and
mental contents. Canadian Journal of Philosophy, 34(3):375410. Accessed
22 April 2014 from:
http://www.umsl.edu/piccininig/Functionalism Computationalism and Mental Contents.pdf.
[Piccinini, 2005] Piccinini, G. (2005). Symbols, strings, and spikes: The empirical
refutation of computationalism. Accessed 24 March 2011 from
[http://www.umsl.edu/piccininig/Symbols
[Pinker and Jackendoff, 2005] Pinker, S. and Jackendoff, R. (2005). The faculty of
language: Whats special about it? Cognition, 95:201236. Accessed 14 July 2014
from:
http://pinker.wjh.harvard.edu/articles/papers/2005 03 Pinker Jackendoff.pdf.
[Plato, 1961a] Plato (1961a). Phaedrus. In Hamilton, E. and Cairns, H., editors,
The Collected Dialogues of Plato, including the Letters. Princeton University Press,
Princeton, NJ.
[Plato, 1961b] Plato (1961b). Republic. In Hamilton, E. and Cairns, H., editors,
The Collected Dialogues of Plato, including the Letters, pages 575844. Princeton
University Press, Princeton, NJ.
[PolR, 2009] PolR (11 November 2009). An explanation of computation theory for
lawyers. http://www.groklaw.net/article.php?story=20091111151305785. also at:
http://www.groklaw.net/staticpages/index.php?page=20091110152507492
and at:
http://www.groklaw.net/pdf2/ComputationalTheoryforLawyers.pdf (accessed
16 December 2013).
[Popper, 1978]
Popper, K. (1978). Three worlds. http://tannerlectures.utah.edu/ documents/a-to-
z/p/popper80.pdf. Accessed 20 February 2015.
[Prasse and Rittgen, 1998] Prasse, M. and Rittgen, P. (1998). Why churchs thesis
still holds. some notes on peter wegners tracts on interaction and computability.
The Computer Journal, 41(6):357362. Accessed 3 June 2014 from:
http://research.cs.queensu.ca/akl/cisc879/papers/SELECTED PAPERS FROM VARIOUS SOURCES/Prasse.pdf.
[Preston, 2006] Preston, B. (2006). The centralized control model of production. from
The Stuff of Life: Towards a Philosophy of Material Culture, Ch. 1.
[Preston, 2012] Preston, J. (2012). Paul feyerabend. In Zalta, E. N., editor, Stanford
Encyclopedia of
Philosophy. online. http://plato.stanford.edu/archives/win2012/entries/feyerabend/
(accessed 23 July 2013).
[Putnam, 1960] Putnam, H. (1960). Minds and machines. In Hook, S., editor,
Dimensions of Mind: A Symposium, pages 148179. New York University Press,
New York.
[Putnam, 1965] Putnam, H. (1965). Trial and error predicates and the solution
to a problem of mostowski. Journal of Symbolic Logic, 30(1):4957.
Accessed 5 February 2014 from: http://www.ninagierasimczuk.com/flt2013/wp-
content/uploads/2013/01/Putnam 1965.pdf.
BIBLIOGRAPHY 815
[Putnam, 1994] Putnam, H. (1994). Sense, nonsense, and the senses: An inquiry into
the powers of the human mind. Journal of Philosophy, 91(9):445517.
[Qian and Winfree, 2011] Qian, L. and Winfree, E. (2011). Scaling up digital circuit
computation with dna strand displacement cascades. Science, 332:11961201. See
review in [Reif, 2011].
[Quine, 1988] Quine, W. v. O. (1988). Letter from quine to chris hookway. In Hilary
Putnams Sardonic Comment blog. Accessed 14 July 2014 from:
http://putnamphil.blogspot.com/2014/07/a-letter-1988-from-quine-to-chris.html.
[Rapaport, 2006b] Rapaport, W. J. (2006b). The turing test. In Brown, K., editor,
Encyclopedia of Language and Linguistics, 2nd Edition, pages Vol. 13, pp. 151
159. Elsevier, Oxford. http://www.cse.buffalo.edu/ rapaport/Papers/rapaport06-
turingELL2.pdf
(accessed 11 October 2015).
[Rapaport, 2011a] Rapaport, W. J. (2011a). A triage theory of grading: The good, the
bad, and the middling. Teaching Philosophy, 34(4):347372.
818 BIBLIOGRAPHY
[Rapaport, 2011b] Rapaport, W. J. (2011b). Yes, she was! Reply to Fords Helen
Keller was never in a Chinese room. Minds and Machines, 21(1):317.
[Rapaport, 2012a] Rapaport, W. J. (2012a). Intensionality vs. intentionality.
http://www.cse.buffalo.edu/rapaport/intensional.html.
[Rapaport, 2012b] Rapaport, W. J. (2012b). Semiotic systems, computers, and the
mind: How cognition could be computing. International Journal of Signs and
Semiotic Systems, 2(1):3271.
[Rapaport, 2013] Rapaport, W. J. (2013). How to write. Accessed 4 February 2014
from: http://www.cse.buffalo.edu/rapaport/howtowrite.html.
[Rosch and Mervis, 1975] Rosch, E. and Mervis, C. B. (1975). Family resemblances:
Studies in the internal structure of categories. Cognitive Psychology, 7:573605.
[Rosenblueth and Wiener, 1945] Rosenblueth, A. and Wiener, N. (1945). The role of
models in science. Philosophy of Science, 12:316321.
[Ross, 1974] Ross, D. (1974). Churchs thesis: What its difficulties are and are not.
Journal of Philosophy, 71(15):515525.
[Rosser, 1978] Rosser, J. B. (1978). Logic for Mathematicians: Second Edition. Dover
Publications, Mineola, NY. First edition (1953) online at:
https://archive.org/details/logicformathemat00ross
(accessed 5 March 2015).
[Roth, 1983] Roth, P. (1983). Simulation. In Ralston, A. and Edwin D.Reilly, J.,
editors, Encyclopedia of Computer Science and Engineering, 2nd edition, pages
13271341. Van Nostrand Reinhold, New York.
[Royce, 1900] Royce, J. (1900). The World and the Individual. Macmillan, London.
[Russell, 1917] Russell, B. (1917). Mysticism and Logic and Other Essays. George
Allen & Unwin, London. http://archive.org/details/mysticism00russuoft.
BIBLIOGRAPHY 821
[Salter, 2010] Salter, J. (2010). The art of the ditch. New York Review of Books,
57(1). http://www.nybooks.com/articles/archives/2010/jan/14/the-art-of-the-ditch/
(accessed 14 November 2012).
[Samuel, 1953] Samuel, A. L. (1953). Computing bit by bit, or digital computers made
easy. Proceedings of the IRE, 41(10):12231230.
[Samuelson, 1989] Samuelson, P. (1989). Why the look and feel of software user
interfaces should not be protected by copyright law. Communications of the ACM,
32(5):563572. Accessed 8 September 2014 from:
http://www.foo.be/andria/docs/p563-samuelson.pdf.
[Samuelson et al., 1994] Samuelson, P., Davis, R., Kapor, M. D., and Reichman,
J. (1994). A manifesto concerning the legal protection of computer programs.
Columbia Law Review, 94(8):23082431. Accessed 19 September 2014 from:
http://scholarship.law.duke.edu/cgi/viewcontent.cgi?article=1783&context=faculty scholarship.
From a special issue on the legal protection of computer programs; other articles
elaborate on, or reply to, Samuelson et al. 1 is a good overview; 2 (esp. 2.2) is
also good, as are 5 and the Conclusion section. A summary version appears as
[Davis et al., 1996].
[Samuleson, 1991] Samuleson, P. (1991). Digital media and the law. Communications
of the ACM, 34(10):2328.
[Sanford, 1967] Sanford, N. (1967). Where Colleges Fail. Jossey-Bass, San Francisco.
[Schank, 1983] Schank, R. C. (1983). The current state of ai: One mans opinion. AI
Magazine, 4(1):38.
[Scherlis and Scott, 1983] Scherlis, W. L. and Scott, D. S. (1983). First steps towards
inferential programming. In Mason, R., editor, Information Processing 83, pages
199212. Elsevier North-Holland. Technical-report version accessed 27 July 2014
from:
http://repository.cmu.edu/cgi/viewcontent.cgi?article=3542&context=compsci.
[Scheutz, 2001] Scheutz, M. (2001). Computational versus causal complexity. Minds
and Machines, 11:543566. Preprint accessed 23 October 2014 from:
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.21.8293&represent=rep1&type=pdf.
[Scheutz, 2012] Scheutz, M. (2012). What it is not to implement a computation: A
critical analysis of chalmers
notion of implemention. Journal of Cognitive Science (South Korea), 13(1):75
106. http://j-cs.org/gnuboard/bbs/board.php?bo table= vol013i1&wr id=4
(accessed 9 November 2014).
[Schwitzgebel, 2012] Schwitzgebel, E. (9 January 2012). For all x, theres philosophy
of x. http://schwitzsplinters.blogspot.com/2012/01/for-all-x-theres-philosophy-of-
x.html (accessed 12 February 2013).
[Schyns et al., 2008] Schyns, P. G., Goddelin, F., and Smith, M. L. (2008).
Information processing algorithms in the brain. Trends in Cognitive Sciences,
13(1):2026. Accessed 31 March 2014 from
http://www.mapageweb.umontreal.ca/gosselif/schynsetal TICS.pdf.
[Seabrook, 2007] Seabrook, J. (2007). Fragmentary knowledge. The New Yorker,
pages 94102.
[Searle, 1980] Searle, J. R. (1980). Minds, brains, and programs. Behavioral and
Brain Sciences, 3:417457.
[Searle, 1982] Searle, J. R. (1982). The myth of the computer. New York Review of
Books, pages 36. Cf. correspondence, same journal, 24 June 1982, pp. 5657.
[Searle, 1983] Searle, J. R. (1983). Intentionality: An Essay in the Philosophy of Mind.
Cambridge University Press, Cambridge, UK.
[Searle, 1990] Searle, J. R. (1990). Is the brain a digital computer? Proceedings and
Addresses of the American Philosophical Association, 64(3):2137.
[Searle, 1995] Searle, J. R. (1995). The Construction of Social Reality. Free Press,
New York.
[Sellars, 1962] Sellars, W. (1962). Philosophy and the scientific image of man. In
Colodny, R., editor, Frontiers of Science and Philosophy, pages 3578. University of
Pittsburgh Press, Pittsburgh. reprinted in Sellars, Wilfrid (1963), Science, Perception
and Reality (London: Routledge & Kegan Paul); online at:
http://www.ditext.com/sellars/psim.html (accessed 12 February 2013).
BIBLIOGRAPHY 823
[Shadmehr and Wise, 2005] Shadmehr, R. and Wise, S. (2005). The Computational
Neurobiology of Reaching and Pointing: A Foundation for Motor Learning. MIT
Press, Cambridge, MA.
[Shagrir, 1999] Shagrir, O. (1999). What is computer science about? The Monist,
82(1):131149.
[Shagrir, 2006a] Shagrir, O. (2006a). Godel on turing on com-
putability. In Olszewski, A., Wo enski, J., and Janusz, R., edi-
tors, Churchs Thesis after 70 Years, pages 393419. Ontos-Verlag.
http://edelstein.huji.ac.il/staff/shagrir/papers/Goedel on Turing on Computability.pdf
(accessed 11 December 2013); page references are to the online version.
[Shagrir, 2006b] Shagrir, O. (2006b). Why we view the brain as a computer. Synthese,
153:393416. Preprint at
http://edelstein.huji.ac.il/staff/shagrir/papers/Why we view the brain as a computer.pdf
(accessed 25 March 2014).
[Shagrir, 2010] Shagrir, O. (2010). Brains as analog-model computers. Studies in
History and Philosophy of Science, 41(3):271279.
[Shagrir, 2012] Shagrir, O. (2012). Can a brain
possess two minds? Journal of Cognitive Science (South Korea), 13(2):145165.
http://j-cs.org/gnuboard/bbs/board.php?bo table= vol013i2&wr id=2
(accessed 9 November 2014).
[Shannon, 1937] Shannon, C. E. (1937). A symbolic analysis of relay and switching
circuits. Technical report, MIT Department of Electrical Engineering, Cambridge,
MA. MS thesis, 1940; http://hdl.handle.net/1721.1/11173.
[Shannon, 1948] Shannon, C. E. (1948). A mathematical theory of communication.
The Bell System Technical
Journal, 27:379423, 623656. http://worrydream.com/refs/Shannon%20-
%20A%20Mathematical%20Theory%20of%20Communication.pdf
(accessed 23 October 2015).
[Shannon, 1950] Shannon, C. E. (1950). Programming a computer for playing chess.
Philosophical Magazine, Ser. 7, 41(314). online at:
http://vision.unipv.it/IA1/ProgrammingaComputerforPlayingChess.pdf (accessed
5 March 2013).
[Shapiro and Benenson, 2006] Shapiro, E. and Benenson, Y. (2006). Bringing dna
computers to life. Scientific American, 294(5):4451. Accessed 24 March 2014
from
http://www.wisdom.weizmann.ac.il/udi/papers/ShapiroBenensonMay06.pdf.
[Shapiro, 1985] Shapiro, F. R. (1985). Debugging etymologies. New York Times. letter
to the editor; online at:
http://www.nytimes.com/1985/03/24/books/l-debugging-etymologies-114833.html
(accessed 7 November 2013).
824 BIBLIOGRAPHY
[Shapiro, 2000a] Shapiro, F. R. (2000a). Origin of the term software: Evidence form
the jstor electronic journal archive. IEEE Annals of the History of Computing,
22(2):6971.
[Shapiro, 1996] Shapiro, S. (1996). Space, number and structure: A tale of two
debates. Philosophia Mathematica, 4(2):148173.
[Shapiro, 2009] Shapiro, S. (2009). We hold these truths to be self-evident: But what
do we mean
by that? Review of Symbolic Logic, 2(1):175207. Accessed 19 February 2014
from: http://www.pgrim.org/philosophersannual/29articles/shapirowehold.pdf.
[Shapiro and Rapaport, 1991] Shapiro, S. C. and Rapaport, W. J. (1991). Models and
minds: Knowledge representation for natural-language competence. In Cummins,
R. and Pollock, J., editors, Philosophy and AI: Essays at the Interface, pages 215
259. MIT Press, Cambridge, MA.
[Shapiro and Rapaport, 1995] Shapiro, S. C. and Rapaport, W. J. (1995). An
introduction to a computational reader of narratives. In Duchan, J. F.,
Bruder, G. A., and Hewitt, L. E., editors, Deixis in Narrative: A Cognitive
Science Perspective, pages 79105. Lawrence Erlbaum Associates, Hillsdale, NJ.
http://www.cse.buffalo.edu/rapaport/Papers/shapiro.rapaport.95.pdf (accessed
12 October 2015).
[Shapiro et al., 1992] Shapiro, S. C., Srihari, S., and Jayaraman, B. (December 1992).
email discussion. http://www.cse.buffalo.edu/rapaport/scs.txt.
[Shelley, 1818] Shelley, M. W. (1818). Frankenstein; or, the Modern Prometheus.
online. http://www.literature.org/authors/shelley-mary/frankenstein/.
[Shepherdson and Sturgis, 1963] Shepherdson,
J. and Sturgis, H. (1963). Computability of recursive functions. Journal of the
ACM, 10(2):217255.
[Sheraton, 1981] Sheraton, M. (1981). The elusive art of writing precise recipes. New
York Times. http://www.nytimes.com/1981/05/02/style/de-gustibus-the-elusive-art-
of-writing-precise-recipes.html (accessed 13 November 2013).
[Sieg, 1994] Sieg, W. (1994). Mechanical procedures and mathematical experience.
In George, A., editor, Mathematics and Mind, pages 71117. Oxford University
Press, New York.
http://repository.cmu.edu/cgi/viewcontent.cgi?article=1248&context=philosophy
(accessed 10 December 2013).
[Sieg, 2000] Sieg, W. (2000). Calculations by man and machine: Conceptual analysis.
Technical Report CMU-PHIL-104, Carnegie-Mellon University Department of
Philosophy, Pittsburgh, PA. http://repository.cmu.edu/philosophy/178.
[Sieg, 2006] Sieg, W. (2006). Godel on computability. Philosophia Mathematica,
14:189207. page references to preprint version, accessed 6 November 2012 from:
http://www.hss.cmu.edu/philosophy/sieg/A%20G del%20on%20Computability.pdf.
[Simon, 1962] Simon, H. A. (1962). The architecture of complexity. Proceedings of
the American Philosophical Society, 106(6):467482. reprinted as Ch. 8 of Simon
1996.
[Simon, 1996a] Simon, H. A. (1996a). Computational theories of cognition. In
ODonohue, W. and Kitchener, R. F., editors, The Philosophy of Psychology, pages
160172. SAGE Publications, London.
[Simon, 1996b] Simon, H. A. (1996b). The Sciences of the Artificial, Third Edition.
MIT Press, Cambridge, MA.
826 BIBLIOGRAPHY
[Simon and Newell, 1958] Simon, H. A. and Newell, A. (1958). Heuristic problem
solving: The next advance in operations research. Operations Research, 6(1):110.
[Simon and Newell, 1962] Simon, H. A. and Newell, A. (1962). Simulation of human
thinking. In Greenberger, M., editor, Computers and the World of the Future, pages
94114. MIT Press, Cambridge, MA.
[Skidelsky, 2014] Skidelsky, R. (2014). The programmed prospect before us. New
York Review of Books, 61(6):3537. Accessed 28 April 2014 from:
http://www.skidelskyr.com/site/article/the-programmed-prospect-before-us/.
[Skow, 2007] Skow, B. (2007). Are shapes intrinsic? Philosophical Studies, 133:111
130.
[Slagle, 1971] Slagle, J. R. (1971). Artificial Intelligence: The Heuristic Programming
Approach. McGraw-Hill, New York.
[Sloman, 1998] Sloman, A. (1998). Supervenience
and implementation: Virtual and physical machines.
http://www.cs.bham.ac.uk/research/projects/cogaff/Sloman.supervenience.and.implementation.pdf.
Accessed 21 October 2014.
[Sloman, 2002] Sloman, A. (2002). The irrelevance of Turing machines to AI. In
Scheutz, M., editor,
Computationalism: New Directions, pages 87127. MIT Press, Cambridge, MA.
http://www.cs.bham.ac.uk/research/projects/cogaff/sloman.turing.irrelevant.pdf
(accessed 21 February 2014). Page references are to the online preprint.
[Sloman, 1989] Sloman, A. (6 August 1989). Contribution to newsgroup
discussion of is there a definition of ai? Article 4702 of comp.ai.
http://www.cse.buffalo.edu/rapaport/defs.txt.
[Sloman, 2010] Sloman, A. (7 January 2010). Why symbol-grounding is both
impossible and unnecessary, and why symbol-tethering based on theory-tethering is
more powerful anyway. http://www.cs.bham.ac.uk/research/cogaff/talks/#models.
[Sloman and Croucher, 1981] Sloman, A. and Croucher, M. (1981). Why robots will
have emotions. In Proceedings of IJCAI 1981, page PGS. PUB, ADDR.
[Smith, 1985] Smith, B. C. (1985). Limits of correctness in computers. ACM SIGCAS
Computers and Society, 1415(14):1826. Also published as Technical Report
CSLI-85-36 (Stanford, CA: Center for the Study of Language & Information);
reprinted in Charles Dunlop & Rob Kling (eds.), Computerization and Controversy
(San Diego: Academic Press, 1991): 632646; reprinted in Timothy R. Colburn,
James H. Fetzer, & Terry L. Rankin (eds.), Program Verification: Fundamental
Issues in Computer Science (Dordrecht, Holland: Kluwer Academic Publishers,
1993): 275293.
[Smith, 1987] Smith, B. C. (1987). The correspondence continuum. Technical Report
CSLI-87-71, Center for the Study of Language & Information, Stanford, CA.
BIBLIOGRAPHY 827
[Smith, 1996] Smith, B. C. (1996). On the Origin of Objects. MIT Press, Cambridge,
MA.
[Smith, 2002] Smith, B. C. (2002). The foundations of computing. In Scheutz, M.,
editor, Computationalism: New Directions, pages 2358. MIT Press, Cambridge,
MA.
[Smith, 2010] Smith, P. (4 December
2010). Answer to what good is it to study philosophy?. AskPhilosophers.com.
http://www.askphilosophers.org/question/3710 (accessed 12 February 2013).
[Soare, 2009] Soare, R. I. (2009). Turing oracle machines, online computing, and
three displacements in
computability theory. Annals of Pure and Applied Logic, 160:368399. Preprint at
http://www.people.cs.uchicago.edu/soare/History/turing.pdf;
published version at
http://ac.els-cdn.com/S0168007209000128/1-s2.0-S0168007209000128-main.pdf? tid=8258a7e2-01ef-
11e4-9636-00000aab0f6b&acdnat=1404309072 f745d1632bb6fdd95f711397fda63ee2 (both
accessed 2 July 2014). A slightly different version appears as [Soare, 2013].
[Soare, 2012] Soare, R. I.
(2012). Formalism and intuition in computability. Philosophical Transactions of
the Royal Society A, 370:32773304. doi:10.1098/rsta.2011.0335.
[Soare, 2013] Soare, R. I. (2013). Interactive computing and relativized computability.
In Copeland, B. J., Posy, C. J., and Shagrir, O., editors, Computability: Turing,
Godel, Church, and Beyond, pages 203260. MIT Press, Cambridge, MA. A slightly
different version appeared as [Soare, 2009].
[Sprevak, 2010] Sprevak, M. (2010). Computation, individuation, and the received
view on representation. Studies in History and Philosophy of Science, 41(3):260
270.
[Spruit and Tamburrini, 1991] Spruit, L. and Tamburrini, G. (1991). Reasoning and
computation in leibniz. History and Philosophy of Logic, 12:114.
[Squires, 1970] Squires, R. (1970). On ones mind. Philosophical Quarterly,
20(81):347356.
[Staples, 2014] Staples, M. (2014). Critical rationalism and engineering: Ontology.
Synthese, 191(10):22552279. Preprint accessed 10 February 2015 from:
http://www.nicta.com.au/pub?doc=7397.
[Staples, 2015] Staples, M. (2015). Critical
rationalism and engineering: Methodology. Synthese, 192(1):337362. Preprint
at http://www.nicta.com.au/pub?doc=7747 (accessed 11 February 2015).
[Steed, 2013] Steed, S. (2013). Harnessing human intellect for computing. Computing
Research News, 25(2). Accessed 21 July 2014 from:
http://www.humancomputation.com/2013/CRN-Feb2013.pdf.
828 BIBLIOGRAPHY
[Stevens, 1996] Stevens, Phillip, J. (1996). Magic. In Levinson, D. and Ember, M.,
editors, Encyclopedia of Cultural Anthropology, pages 721726. Henry Holt, New
York.
[Stewart, 1994] Stewart, I. (1994). A subway named turing. Scientific American, pages
104, 106107.
[Strevens, 2013] Strevens, M. (2013). Looking into the black box. New York
Times Opinionator. http://opinionator.blogs.nytimes.com/2013/11/24/looking-into-
the-black-box (accessed 3 December 2013).
[Tedre and Sutinen, 2008] Tedre, M. and Sutinen, E. (2008). Three traditions of
computing: What educators should know. Computer Science Education, 18(3):153
170.
[The Economist, 2013] The Economist (2013). Unreliable research: Trouble at the
lab. The Economist. online at: http://www.economist.com/news/briefing/21588057-
scientists-think-science-self-correcting-alarming-degree-it-not-trouble (accessed
4 November 2013).
[Tingley, 2013] Tingley, K. (2013). The body electric. The New Yorker, pages 7880,
82, 8686.
830 BIBLIOGRAPHY
[Tucker et al., 2003] Tucker et al., A. (2003). A model curriculum for k12 computer
science: Final report of the acm k12 task force curriculum committee, second
edition. Computer Science Teachers Association and Association for Computing
Machinery. online at:
http://www.acm.org/education/education/curric vols/k12final1022.pdf (accessed
1 July 2013).
[Uglow, 2010] Uglow, J. (2010). The other side of science. New York Review of Books,
pages 3031, 34.
[Unger, 1979b] Unger, P. (1979b). Why there are no people. In ED, ed-
itor, Studies in Metaphysics (Midwest Studies in Philosophy, Vol. 4),
pages 177222. University of Minnesota Press, Minneapolis. (online at:
http://www.thatmarcusfamily.org/philosophy/Course Websites/Readings/Unger%20-
%20No%20People.pdf (accessed 6 February 2013)).
[van Leeuwen and Wiedermann, 2013] van Leeuwen, J. and Wiedermann, J. (2013).
The computational power of turings non-terminating circular a-machines. In
Cooper, S. B. and van Leeuwen, J., editors, Alan Turing: His Work and Impact,
pages 8085. Elsevier, Amsterdam.
[Veblen, 1908] Veblen, T. (1908). The evolution of the scientific point of view. The
University of California Chronicle: An Official Record, 10(4):395416. (online at:
http://archive.org/details/universitycalif08goog (accessed 6 February 2013).
[Wainer, 2012] Wainer, H. (2012). The survival of the fittists. American Scientist,
100:358361. online at:
http://www.americanscientist.org/issues/pub/the-survival-of-the-fittists/1 (accessed
23 July 2013).
[Wallich, 1997] Wallich, P. (1997). Cracking the u.s. code. Scientific American,
page 42.
[Wang et al., 2013] Wang, Z., Busemeyer, J. R., Atmanspacher, H., and Pothos, E. M.,
editors (2013). Topics in Cognitive Science 5(4) (October): The Potential of Using
Quantum Theory to Build Models of Cognition. Cognitive Science Society, CITY.
[Wegner, 1997] Wegner, P. (1997). Why interaction is more powerful than algorithms.
Communications of the ACM, 40(5):8091.
[Weinberg, 2002] Weinberg, S. (2002). Is the universe a computer? New York Review
of Books, 49(16).
BIBLIOGRAPHY 833
[Wilford, 2008] Wilford, J. N. (2008). A device that was high-tech in 100 b.c.
(discovering how greeks computed in 100 b.c.). New York Times, page A12.
[Williams, 1998] Williams, B. (1998). The end of explanation? The New York Review
of Books, 45(18):4044.
[Zhai and Kristensson, 2012] Zhai, S. and Kristensson, P. O. (2012). The word-
gesture keyboard: Reimagining keyboard interaction. Communications of the ACM,
55(9):91101.
[Zobrist, 2000] Zobrist, A. L. (2000). Computer games: Traditional. In Ralston, A.,
Reilly, E. D., and Hemmendinger, D., editors, Encyclopedia of Computer Science,
4th edition, pages 364368. Groves Dictionaries, New York.
[Zupko, 2011] Zupko, J. (2011). John Buridan, 7. In Zalta, E. N.,
editor, Stanford Encyclopedia of Philosophy (Fall 2011 Edition). online.
http://plato.stanford.edu/archives/fall2011/entries/buridan/.