Why Start Over -- Software Technology:
Software development technology does not work. It is something that cannot be fixed. The foundation of the
technology is a house of cards, where every card is a single point of failure.
The current software development technology is a set of incomplete
solutions. In the development of software we are forced to use a predefined
logic style. Meaning that we have no choice in how we implement our logic,
it has already been decided.
It has been decided how we allocate and access memory, how we store
information on disk, how we draw on the monitor, how we perform math, how we
put information on paper, what characters we can use, what language we can
use and where we can use it. The list is basically everything we do has been
decided by the thing we call "Our Software Development Technology".
It should really be called "Our One Lane Path to Oblivion". Software
development has become a religion of idiots. Our colleges think that
computers are only used for math operations.
We have pasted the point of no return. We cannot fix the technology, we
must start over.
"Success is stumbling from failure to failure with no loss of
enthusiasm." -- Winston Churchill
"Every man takes the limits of his own field of vision for the limits of
the world." -- Arthur Schopenhauer
"Do not be afraid of
complexity. Be afraid of people who promise an easy shortcut to simplicity."
-- Elif Shafak
"To those of you who
received honors, awards and distinctions, I say 'well done. And to the C
students, I say: you too can be president of the United States." --
George W. Bush
"An intelligent person can rationalize anything, a wise person doesn't
try." -- Jen Knox
"We forget very easily what gives us pain."
-- Graham Greene
"Any intelligent fool can make things bigger, more
complex, and more violent. It takes a touch of genius - and a lot of courage
to move in the opposite direction." -- E. F. Schumacher
"It takes a
long time to learn how to do something simple." -- Marty Rubin
Universal Knowledge - Not:
We know things, this is how we function and communicate with others.
In computer programming there is no knowledge of anything. Any knowledge
needed by an application must be created from scratch for each
We need our development system to have universal knowledge so we can
reduce the repetitive work of implementation. With universal knowledge
the computer would already know things and would have the ability to do
something with this knowledge.
What kind of knowledge?
- The English Dictionary Words
- English to Chinese translation
- All Boy names
- Parts in a 1934 Ford Coupe
- CPU Instructions for an ARM processor
- What's in a DLL
- All Math functions
- All Computer Language Compilers
- Dog Breeds
- The Periodic Table
- All Units of Measurement
- Software Parts of a Compiler
The operations we want the computer to perform reflect our reality. We
must be able to communicate our intensions in a way that everyone
understands in the least number of words. We have developed our
vocabulary specifically for this purpose.
"Elephant Toenail Fungus"
Our current software development technology is not readable. The
computer only understands that the "E" is represented by the number 69,
but not really. The number 69 might represent my age, or the price of an
apple. Only the one line of code that does something with the
value of 69 assumes its meaning. This assumption might be wrong,
who is to say. Maybe the programmer made a mistake, maybe that was
not his intension, maybe his understanding of the units of 69 were wrong
and the value really represented inches not feet. It could be that 69
was EBCDIC not ASCII.
But if the computer understood the word "Elephant" and its context
there would be communication and understanding by everyone who knows
English. For anyone in Sweden the system would convert it to
We have common knowledge: the symbol PI, the meaning
of E = MC2, my Wife's Name, how many inches in a foot. Once
we have a vocabulary and knowledge that goes along with the words we can
ask the system: "What is the average weight of a
baby elephant?". We no longer have to try and figure out that the
A multitude of minimalistic cryptic mathematical definition instructions
we currently use to define reality.
We do not master a language, we master the inconsistencies in the
implementations of others that implement small incomplete solutions.
So we need to start over, throw away all the code that we have
created over the past eighty years. We do this to not contaminate
our future software technologies.
We start over by having software design the hardware. We have come
far enough in development that we know our mistakes. The new computer
language will use our spoken and written languages.
We write one single language that can contain an infinite amount of
knowledge and logic. The knowledge base is the words and terms we use in
our spoken language, along with all the known written symbols and their
It is bad that the complete software development technology depends
on human knowledge. Not one line of code is readable. That is, do we
know or must we assume knowledge. For instance our development system
does not know units. When we do program such items do we trust them.
We must first and formost have confidence in our software. Our current technology knows nothing. It's up to the human to know
everything. Change this to have the system that knows everything, and then
we will have a system we can trust.
by: Clif Collins