. Programming
According to the DL-IT-CS definitions above, programming can belong both to IT (“application of computer[ized] systems”) and CS (“development of computer[ized] systems”). The former concerns the more concrete side of programming, whereas the latter
focuses more on abstract aspects, such as design.
As argued by Denning in Denning (2004), “The persistent public image of computing as a field of programmers has become a costly myth. Reversing it is possible but not
easy.” It is also instructive to consult the online FAQ of Denning (2003), and read the
questions and answers about programming.
In Denning’s classification, programming does not appear as a principle; instead, he
treats it as a practice. Denning and Martell Denning and Martell (2015) have this to say
about programming.
● “What is the paradigm of computing? . .
. There were three waves of attempts to
unify views. . . . The first . . . argued that computing was unique among all the sciences in its study of information processes. A catchphrase of this wave was that
“computing is the study of phenomena surrounding computers.” . . . The second
wave focused on programming, the art of designing algorithms that produced useful information processes. . . . A catchphrase of this wave was “computer science
equals programming.” In recent times, this view has foundered because the field
has expanded well beyond programming and because public understanding of a
programmer became so narrow (a coder). . . . The third wave . . . defined computation as the automation of information processes in engineering, science, and business. Its catchphrase was “computing is the automation of information processes.””
Denning and Martell (2015, Ch. 1 (Computing))
● “A program is a set of instructions arranged in a pattern that causes the desired
function to be calculated. Programming is the art of designing a program and providing convincing evidence that the program computes its function correctly. A
computing system is a combination of program and machine.” Denning and Martell
(2015, Ch. 4 (Machines))
● “A program is an expression of an algorithm, encoded for execution on a machine.
. . . Programming is the practice of encoding algorithms for execution on a machine.” Denning and Martell (2015, Ch. 5 (Programming))
Programming, Software Development, and Computer Science – The Golden Triangle 161
● “[I]t appears to many that algorithm analysis and programming are the heart of
computer science. This conclusion does not seem right to us. . . . [I]t appears to
us that the architecture of computers is as important as the algorithms they run.
This is abundantly evident in the principles of computing. Many principles are
about the systems on which computations run. We cannot give a complete picture
of computing if we limit our principles to algorithms and ignore the principles of
architecture.” Denning and Martell (2015, Ch. 12 (Afterword))
By the way, their book does not seem to contain an explicit definition of algorithm.
Robert St. Amant has this to say in St. Amant (2012, Ch. 5 (Programming: Putting
Plans into Action)):
“Algorithms and collections of information, organized by abstract data
types, need to be translated into a form that a computer can process.
This is what programs are for: they translate between the abstract and
the concrete.
“Programming means expressing abstractions in a language that a
computer can deal with. Given what we know about computer architecture . . . I suspect programming may sound a bit daunting. And it
can be, . . . ”
Kernighan (2017) devotes
● Chapter 4 to algorithms (a dozen pages):
“. . . algorithms, which are abstract or idealized descriptions of processes that ignore practicalities. An algorithm is a precise and unambiguous recipe. It’s expressed in terms of a fixed set of basic operations whose meanings are completely known and specified; it spells
out a sequence of steps using those operations, with all possible situations covered; and it’s guaranteed to stop eventually.” (First paragraph
of Ch.5)
● Chapter 5 to programming and programming languages (twenty pages):
“. . . , a program is anything but abstract – it’s a concrete statement of
every step that a real computer must perform to accomplish a task.”
(second paragraph of Ch.5)
● Chapter 7 to learning to program (in JavaScript, a dozen pages), including loops,
conditionals, libraries and interfaces:
“I think it’s important for a well-informed person to know something
about programming, perhaps only that it can be surprisingly difficult
to get very simple programs working properly.” (First paragraph of
Ch.7)
162 T. Verhoeff
In Barr et al. (2010), the issue of ‘What everyone needs to know about computation’
is discussed by four panelists. One conclusion appears to be that some form of programming (in a language with a well-defined semantics; hence, executable) is necessary, if
only to keep people from becoming sloppy in expressing their computational ideas. By
the way, this has also been the motivation to include actual programming in the International Olympiad in Informatics (IOI, 2019).
The IOI is an algorithmic problem solving
contest for high school students, aimed at identifying, encouraging, and challenging
students with a talent for CS. The contestants are required to solve algorithmic problems, and code their solutions in one of the supported programming languages. These
programs are then checked by execution.
Chris Granger argues in Granger (2015) that ‘coding is not the new literacy’, but that
modeling is. Others have countered that modeling must be done in some language, and
that in the end this comes pretty close to programming.