About Softpanorama
Simplicity is the ultimate sophistication
-- Leonardo da Vinci
It is time to unmask the programming community
as a Secret Society for the Creation
and Preservation of Artificial Complexity.
Edsger W. Dijkstra:
The
next forty years (EWD 1051)
There are features that should not be used.
there are concepts that should not be exploited.
There are problems that should not be solved.
There are programs that should not be written.
—Richard Harter
<[email protected]
Statistics
Extended abstract
The mission of this site is to promote a "slightly skeptical" approach to the
computer science and programming, and to help those who try to educate themselves
in software technologies. The site is mainly oriented to be a self-help
site. It can be used both for on the job training and for university CS students.
The latter now need to live and survive in a rather crazy world populated
by fashion-driven curriculums and then need to move to the world dominated outsourcing
and crazy marketing of overly complex but fashionable software technologies. The
problem is that many textbooks overcomplicate
and obscure the subject and vanity-driven professors want students to learn
as much useless staff as they managed to learn in 10 years in just one semester
;-)
All materials are for educational use only and are provided under the
Open Content License
(local copy is here).
Open source (OSS) is in essence a non-conformist and anti-conformist movement,
that recently was partially hijacked by corporate types that promote productivity-killing
overcomplexity and bloatware (look at Red Hat 8, 9 or 10, what a monster, not that
different in complexity from windows...) and
advocates of new OSS cults. Unlike
many others, we consider scripting languages,
not OSes like Linux or other bloatware OS to be the most important part of open
source movement because scripting languages really help to preserve the simplicity
of the system despite the tremendous growth of functionality (they move the complexity
into the scripting engine and while this is bad, it still better than to deal with
it directly; see Scripting languages for
more information). And of course, specifications (especially in the form of standards)
and algorithms both are more important then
the source code itself.
Spartan style and lack of polish is somewhat intentional because of the lack
of resources. We just try to help students to use open source software to fight
excessive complexity, dullness and overload of a typical university curriculum.
We also want to provide some information that helps to
resist brainwashing. For example, it's
important to understand that
contrary to Raymondism there are good open source programs and bad open
source programs,
open source does not automatically guarantee quality. It's all about choice.
To help you to resist brainwashing we created a large
collection of open source humor:
humor is a good antidote to the attempts to dump loads of useless information on
unsuspecting university students. Unix is a classic OS that any serious student
of CS, any programmer needs to know well. But like in natural languages you need
to know more that one language and more than one OS to understand both strong and
weak points. It's actually very difficult to appreciate Unix without knowing Windows
:-).
WWW not only increases the amount of available information, it also contributes
to information pollution and creates new
kind of social pressure against non-conformists: fashionable ideas now have
a much greater hold on programmers than they did before advent of WWW. The
temptation to jump into new complex fashionable technology ASAP became almost irresistible.
This badly affects the quality of software and actually us from the large part of
classic software heritage. As Donald Knuth noted "There was a lot of 'political
correctness' about how to program in those days." I would add there is a lot of
political correctness about what program use in those days. 'Political correctness'
is another name for conformism and it is especially visible in OSes and languages
area. Paradoxically WWW stimulated "monocultures" and this site is my very limited
attempt to fight this trend. I am convinced that the following important areas
are underrepresented or totally ignored in a typical university curriculum:
- Coexistence and integration of open source software with proprietary
software including Windows and proprietary
Unixes, especially Solaris (free high
quality OS that in version 10 supports limited virtualization, with probably
the best Unix kernel on the market; version 8 was open, version 9 and 10 are
not but that's not so important as the complexity level is such that almost
nobody can make useful changes to the kernel). "Fundamentalist Lunixoids" (including
Raymodists and
Stallmanists
:-) are advised to stop reading this page here, although people who sincerely
believe that the Linux kernel is the most advanced or stable kernel on the market
still might find some interesting material and links. I advocate
tandem of a Windows desktop and
a Unix server as an optimal development environment with Windows serving
as a desktop and Unix serving as a server accessed using VNC and Samba.
I might be wrong and OS X might well be a better deal for the desktop, and UltraSPARC
has a better instruction set and is more open, but still Intel architecture
is cheap, widely available and due to that more democratic... With the growing
role of GUI the quality of X implementation is very important. Not all X servers
are created equal ;-) In comparison with Solaris X implementation, Xfree86
is not impressive, but still usable.
- The importance of studying classic
computer books (and how to find
better, not the most fashionable CS books,
especially a semi-forgotten The Art of
Computer Programming written by Donald
Knuth. IMHO assembler and
algorithms not OO and Java are the crucial
parts of a programmer education...
- KISS as a software engineering principle
and its application to open source development and open source licensing. According
to an old saying, "Simplicity is the hallmark of truth" and I am convinced
that the source code is the most valuable when a program is still short
and thus modifiable by the user. Here scripting languages present a definite
advantage and IMHO represent the most viable approach to open source development.
For a system that is rapidly changing, a complicated architecture (especially
coupled with a low level language implementation) either doesn't work or is
very expensive and thus can be developed only by players with deep pockets.
At the same time finding a the simplest possible architectural solution, optimal
mixture of implementation languages and components is difficult and requires
a lot of effort and high IQ... Open source is not a free lunch, as some people
assume. It's much easier to go with the crowd and buy WebSphere :-).
- The value of little known and underutilized classic programming technologies
(especially pipes and coroutines
and compiler-based technologies).
- The important of less fashionable OSes in programming noosphere like
Virtual Machines (VM/370, Virtuozzo, VMware),
Solaris and classic BSD-style OSes (FreeBSD/OpenBSD/NetBSD).
IMHO both Solaris and BSD kernels are more
advanced and reliable than Linux kernel.
OpenBSD's track record
--- one remote hole in the default install in nearly six years of market exposure
--- is so far ahead of Linux and other Unixes that it is really stands out.
- Unix
security and, especially,
scripting languages based security
tools. including undervalued and underdeveloped internal vulnerability scanners/hardening
scripts. Unix is a really great OS, but this classic environment was
designed for developers and needs careful hardening for production use.
- Classic Unix tools and unfashionable
non-GUI tools like Orthodox file managers,
Folding scriptable editors (the later category
includes Orthodox editors --
scriptable editors with command line interface like
THE and VIM6
), "pipable tools" (almost all classic Unix
utilities can be used in pipes); pipes
as a system integration approach (note the elegance and power of the famous
vi capability of processing the buffer with pipes).
- The two-level approach ("scripting language" + "compiled language"
like TCL + C or "Python
+ C") to the design of software as alternative to the fashionable "a single
OO language" implementation strategy with Java
or C# as one size fits all implementation languages. The value of scripting
languages that support pipes
and coroutines like Python,
ksh93,
Icon and to a
lesser extent Perl.
- The problem of information overload
and a related programmer burnout problem.
Unique Collection of Open Source Related
Humor as a method of fighting job-related stress, brainwashing and
information overload.
- Program understanding (especially slicing as a
program understanding method
-- see also Folding scriptable editors)
and Reverse engineering
(reimplementation with possible simplification of a (legacy) program) and autodocumentation
(along the lines of Knuth's literary programming)
- The importance of studying the history
of computer science (including Open source
movement). the importance of resisting the "cult of personality"
games of servile press. Critical view on such OSS figures like "Linux
superstar" Linus Torvalds and "professional
software freedom fighter" RMS;
see my Open Source Pioneers book. One of
the most important rules (and a litmus test) of democracy is that no
man should be idolized.
- And last but not least: Skeptical approach
to cult-style attempts to eliminate alternative approaches in the name of a
single "superior" approach including, but not limited to,
Java,
GPL,
Linux, and
OOP. if we assume that "Simplicity
is the hallmark of truth", then GPL is just an invitation for creation of a
better open source license. It might be that
such
a license already exists ;-).
Note about disappearing sites: after dot-com fallout, many
interesting Web sites are gone. That means that some links in pages can be broken.
Please try to use Goggle, Open directory, etc. to find a replacement link and, if
you are successful please mail us a correct link
See
HOWTO search the WEB. This is WHYFF (We Help You For Free) site. You
may wish to reciprocate by sending interesting links or books that we miss, suggestions
and information about errors and broken links. Thank you in advance for your help.
Created: May 16, 1996; Last modified:
November 02, 2011