Editor's Forum
Perhaps this magazine shouldn't be quite so narrow.
Perhaps we should
address some broader issues -- maybe something like
religion?
Webster hasn't called me for my contribution, but if
he (they?) did, I'd
probably define religion something like this: Any set
of beliefs that
one is willing to accept as absolute truth.
Admittedly, that's an overly broad definition and doesn't
require the
involvement of a supernatural power, but I like it.
You could even
complain that my definition is so broad as to give both
the pious and
the bigoted equal standing. You'd be right. As I said,
I like it.
In its defense, my definition has a certain elegance
befitting an
engineer who always longed for the unattainable clarity
of a
mathematician, physicist, or philosopher. It certainly
goes a long way
toward explaining why certain technical discussions
quickly assume the
same emotional intensity that people usually reserve
for issues like
abortion or infant baptism. If the participants are
discussing absolute
truth, be it OOP or the birth of a soul, it's a religious
debate.
Under my definition, everyone has religion; some just
have "larger"
religions than others. As a software engineer and a
minimalist, I think
a good religion ought to be like a good programming
language: small,
elegant, easy to understand, and highly expressive.
Maybe that's because
I'm cynical about absolute truth. The history of science
is ripe with
useful, widely held absolute truths that weren't quite
absolute:
Aristotle's air, earth, fire, water; Ptolomy's geocentric
cosmos; and
Newton's mechanics, to name a few. I think it's telling
that while
contemporaries treat those who question absolute truth
as heretics,
history accords them a special genius: Calvin, Copernicus,
Rosa Parks.
But even if the underlying "truths" seldom
turn out to be very absolute,
the models or analytic systems built upon these truths
can still be very
useful. Is a straight line the shortest distance between
two points? I
don't know, but I know that familiarity with the properties
of both
Euclidean and spherical geometry can sometimes be very
useful.
Is object-oriented design the saviour of software engineering?
I doubt
it. But I think OOP is a useful tool to add to one's
working set. Should
the curly brace be on the line with the if or by itself
on the next
line? I don't know (or even care -- after all, there
are pretty
printers). I guess I just don't have enough religion.
As an engineer, my defining truth is this: it's all
a matter of choosing
a tradeoff point. You can borrow from all these religions
to evaluate
the consequences of a given tradeoff or to facilitate
an implementation
that reduces certain costs, but ultimately, you are
just selecting from
a set of tradeoffs. In fact, sometimes I think life
is just one big
engineering project. You never obtain perfection, you
just balance the
tradeoffs.
But then again, there are those I know and trust who
maintain that
everything is marketing. Could be.
Sincerely yours,
Robert Ward
|