What does “Simple” mean in the context of software?
A lot of computer programs, and especially many open-source applications
like to boast that they are “simple”. But what does it mean? Given the various
applications and misapplications of this word, I can think of several
meanings:
-
Easy to use.
-
Lacks complexity (whatever that means and implies).
-
Simplistic.
-
Minimalistic.
-
Lacks extraneous features.
Very often, these meanings are at conflict with one another. For example,
the GNOME developers have been
keen on making the feature set as minimalistic (in accordance to meaning
#4) as possible, which has taken the project to spiraling depths of
unusability (opposing meaning #1). Furthermore,
Arch Linux taglines itself as
“a lightweight and flexible Linux® distribution that tries to Keep It
Simple”. However, during one day, I spent three incredibly vexing
hours in trying to install it on a Virtual Box virtual machine, due to the
installer's lack of usability, and if I had to do it on live hardware, it
would have taken me much longer. You call that simple? I joked that it would
take an engineering degree from a prestigious university to figure it out. I
have that, but it did not help me much.
As a result, I have become incredibly suspicious and weary of any software
that prides itself on its “simplicity”, even though “simplicity” should
be a good thing.
Bjarne Stroustrup (the creator of C++) has this to say about Java on
his FAQ:
Much of the relative simplicity of Java is - like for most new languages -
partly an illusion and partly a function of its incompleteness. As time passes,
Java will grow significantly in size and complexity. It will double or triple
in size and grow implementation-dependent extensions or libraries. That is the
way every commercially successful language has developed. Just look at any
language you consider successful on a large scale. I know of no exceptions, and
there are good reasons for this phenomenon. [I wrote this before 2000; now
(2012), the language part of the Java 7 specification is slightly longer in
terms of number of pages than the ISO C++11 language specification.]
So simplicity is often a function of immaturity and incompleteness.
Of course, some things that call themselves “simple” are not simple in any
of the meanings, for example
SOAP, the so-called “Simple
Object Access Protocol” (see the
S stands for Simple), is not simple in any of the meanings I have
given, but it is still called like that.
I feel that like
the word “Zionism” no one is no longer sure what “simplicity” means,
and as a result, some people no longer consider it a good quality to have.
It’s a shame, but that’s life.
Syndicated 2012-10-08 15:08:52 from shlomif