skip to main content
10.1145/1094855.1094863acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

Breakthrough ideas

Published:16 October 2005Publication History
First page image
Skip Supplemental Material Section

Supplemental Material

p76-coplien_56k.mp4

mp4

78.5 MB

p76-coplien_768k.mp4

mp4

556.6 MB

Index Terms

  1. Breakthrough ideas

                    Recommendations

                    Reviews

                    Haim I. Kilov

                    This interesting collection of short essays, "designed to stimulate thought and reflection among the computing community," contains ideas ranging from programming as a group performance (some of us may recall Weinberg's book [1]), through the fallacy of teaching "the right" technology to students instead of teaching basic concepts, to promoting computational diversity (including that of computing science faculty, as in the early days when it "contained a rich diversity of scientists, engineers, philosophers, and even talented people without a PhD!"). The essay that contrasts precise semantics and methodological rigor (within the context of control and domination) to neural nets and genetic programming (within the context of accommodating and surviving the unexpected) may stimulate reflection about the essence of programming. I would rather distinguish between unpredictable but purposeful actions and choices made by people?sometimes because they "just want to act like that"?and those made by inanimate agents. A description of such human actions with many examples may be found in von Mises' book [2]. Another essay raises the issue of reimplementing in applications some of the facilities?such as type checking or synchronization?provided at lower levels of abstraction. If this reimplementation is required, then we may ask whether these language facilities were adequate or even needed. On the one hand, such issues were raised decades ago in the context of adequacy or of operating system facilities for database management systems. On the other hand, serious problems in applications using inadequate languages were eloquently discussed by such classics of computing science as Dijkstra and Wirth (and have been known to all of us, for example, in buffer overflows). Still, another essay observes that a program text has two radically different audiences, "a flawless but unforgiving reader (some computer) but also a flawed but creative reader (any person)," and considers programming, in this context, as a group activity requiring the study of rhetoric and performance. Another essay presents similar ideas about cooperative education, that is, about students who should learn to work with artifacts produced by other people, and stresses that we should show students how and why each new commercial wave "is similar but different from what came before." An essay urges us to "program with our whole selves, not just the tiny parts of our brain that are good at abstraction" because, in the opinion of the author, "abstraction is somewhat unnatural for us." Other essays discuss various kinds of agencies, emphasizing need-based, delegated, and conditional ones, with the latter producing (new kinds of) unintended effects. It is also emphasized that objects are not everything, and that (future) software engineers should be taught many different communication skills. Are these ideas thought and reflection provoking__?__ Of course. Are they new__?__ Some are; this is for the reader to decide.

                    Access critical reviews of Computing literature here

                    Become a reviewer for Computing Reviews.

                    Comments

                    Login options

                    Check if you have access through your login credentials or your institution to get full access on this article.

                    Sign in

                    PDF Format

                    View or Download as a PDF file.

                    PDF

                    eReader

                    View online with eReader.

                    eReader