The State of Software Engineering Research
At the 2016 Foundations of Software Engineering conference, a panel discussed the state of software engineering research. The panelists were asked to reflect on three questions.
Continue reading "The State of Software Engineering Research"
Abstraction and Variation
“Master, a friend told me today that I should never use the editor’s copy-paste functions when programming,” said the young apprentice. “I thought the whole point of programming tools was to make our lives easier,” he continued.
The Master stroked his long grey beard and pressed the busy button on his phone. This was going to be one of those long, important discussions.
Continue reading "Abstraction and Variation"
Choosing a Collection: A Discussion with Kent Beck
Recently I reviewed the mansucript of Kent Beck's upcoming
book Implementation Patterns.
I will certainly put it in the list of books any professional programmer
When discussing collections (containers in C++ STL parlance),
Kent mentions that
his overall strategy for performance coding with collections is to use the
simplest possible implementation at first and pick a more specialized collection
class when it becomes necessary.
My view is that
we should choose the most efficient implementation from the start.
With prepackaged collections this doesn't have any cost associated with
it, and it avoids nasty surprises when a dataset increases beyond the
size the programmer envisaged.
I added a comment to that effect in my review, and later I sent him
an email with a supporting citation, which
kindled an interesting exchange.
I reproduce our email exchange here, with his permission.
Continue reading "Choosing a Collection: A Discussion with Kent Beck"
Quality, Democracy, and Code
Edwin Fine recently posted on amazon.com a review of my
Code Quality: The Open Source Perspective.
In the review he complained about the quality of proofreading and copy editing.
(The errors he noted are now listed in the book's errata.)
His comments sparked off a delightful discussion on the reasons behind
the falling quality levels of various products, the philosophical importance of this phenomenon,
and its effect on coding standards.
Continue reading "Quality, Democracy, and Code"
Active Voice v Passive Voice
The most common change copy-editors perform on my prose is the conversion
of passive voice constructs into active voice.
By now I've become accustomed to it, and I now try to use active voice
It turns out that the proverbial coin has in this case two faces.
Continue reading "Active Voice v Passive Voice"
Human Thought and the Design of Computers
Peter J. Denning
wrote an excellent article titled
"The Locality Principle"
in the July 2005 issue of the Communications of the ACM.
The article explained the story behind the
locality of reference, a fundamental principle of computing with many applications.
that appeared in the October issue of the same magazine I commented:
Peter J. Denning's "The Profession of IT" column ("The Locality Principle," July 2005) invoked an anthropomorphic explanation for the prevalence of the locality principle in computational systems, observing that humans gather the most useful objects close around them to minimize the time and work required for their use, and that we've transferred these behaviors into the computational systems we design.
A more intellectually satisfying explanation might be that we are dealing with two parallel and independent evolutionary design paths. Trading some expensive high-quality space (fast memory) in order to gain time performance is a sound engineering decision. It is therefore likely that evolution first adapted the human brain by endowing it with limited but versatile short-term memory and large long-term memory structure that exhibits behavior similar to caching.
Millennia later, we make similar design decisions when building computing systems.
The comment triggered an email exchange with Phillip G. Armour
It was one of the most intellectually satisfying email exchanges I've ever had, and I am reproducing it here, with his kind permission.
Continue reading "Human Thought and the Design of Computers"