author’s Response:
As Williams says, the topic of my article
was not interpreting preserved bits. Jeff
Rothenberg drew attention to the threat
of format obsolescence in scientific
american (Jan. 1995), a focus that has
dominated digital preservation ever
since. Rothenberg was writing before
the Gutenberg-like impact of the Web
transformed digital formats from private,
to applications, to publishing medium,
leading him and others to greatly
overestimate the obsolescence risk of
current formats.
I am unable to identify a single format
widely used in 1995 that has since become
obsolete but would welcome an example.
At the 2010 iPres conference (http://
www.ifs.tuwien.ac.at/dp/ipres2010/) I
asked the audience whether any of them
had ever been forced to migrate the
format of preserved content to maintain
renderability, and no one had.
Format obsolescence is clearly a threat
that must be considered, but compared to
the technical and economic threats facing
the bits we generate, it is insignificant
and the resources devoted to it are
disproportionate.
David s.h. Rosenthal, Palo alto, Ca
def quicksort(v)
return v if v.nil? or
v.length <= 1
less, more = v[ 1..- 1].
partition { |i| i < v[0] }
quicksort(less) + [v[0]] +
quicksort(more)
end
objects always! Well,
almost always
Unlike Mordechai Ben-Ari’s Viewpoint
“Objects Never, Well, Hardly Ever!”
(Sept. 2010), for me learning OOP was
exciting when I was an undergraduate almost 30 years ago. I realized that
programming is really a modeling exercise and the best models reduce the
communication gap between computer and customer. OOP provides more
tools and techniques for building
good models than any other programming paradigm.
Viewing OOP from a modeling perspective makes me question Ben-Ari’s
choice of examples. Why would anyone
expect the example of a car to be applicable to a real-time control system in
a car? The same applies to the “
interface” problem in supplying brake systems to two different customers. There
would then be no need to change the
“interface” to the internal control systems, contrary to Ben-Ari’s position.
Consider, too, quicksort as imple-
mented in Ruby:
This concise implementation shows
quicksort’s intent beautifully. Can a
nicer solution be developed in a non-
OOP language? Perhaps, but only in a
functional one. Also interesting is to
compare this solution with those in 30+
other languages at http://en.wikibooks.
org/wiki/Algorithm_implementation/
Sorting/Quicksort, especially the Java
versions. OO languages are not all cre-
ated equal.
ing trap that often permeates this debate. OO offers a higher level of encapsulation than non-OO languages and
allows programmers to view software
realistically from a domain-oriented
perspective, as opposed to a solution/
machine-oriented perspective.
The notion of higher levels of encapsulation has indeed permeated many
aspects of programmer thinking; for
example, mobile-device and Web-ap-plication-development frameworks leverage these ideas, and the core tenets
of OO were envisioned to solve problems involving software development
prevalent at that time.
Helping my students become competent, proficient software developers,
I find the ones in my introductory class
move more easily from OOP-centric
view to procedural view than in the
opposite direction, but both types of
experience are necessary, along with
others (such as scripting). So, for me,
how to start them off and what to emphasize are important questions. I like
objects-first, domain-realistic software models, moving as needed into
the nitty-gritty (such as embedded
network protocols and bus signals).
Today’s OO languages may indeed reflect deficiencies, but returning to an
environment with less encapsulation
would mean throwing out the baby
with the bathwater.
James B. fenwick Jr., boone, nC
I respect Mordechai Ben-Ari’s View-
point (Sept. 2010), agreeing there is
neither a “most successful” way of
structuring software nor even a “domi-
nant” way. I also agree that research
into success and failure would inform
the argument. However, he seemed to
have fallen into the same all-or-noth-
The bells rang out as I read Morde-
chai Ben-Ari’s Viewpoint (Sept. 2010)—
the rare, good kind, signaling I might
be reading something of lasting im-
portance. In particular, his example of
an interpreter being “nicer” as a case/
switch statement; some software is
simply action-oriented and does not fit
the object paradigm.
Communications welcomes your opinion. To submit a
Letter to the Editor, please limit your comments to 500
words or less and send to letters@cacm.acm.org.