July 2022

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 application.

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?

  1. The English Dictionary Words
  2. English to Chinese translation
  3. All Boy names
  4. Parts in a 1934 Ford Coupe
  5. CPU Instructions for an ARM processor
  6. What's in a DLL
  7. All Math functions
  8. All Computer Language Compilers
  9. Dog Breeds
  10. The Periodic Table
  11. All Units of Measurement
  12. Thermodynamics
  13. Software Parts of a Compiler
  14. ...

Readability:
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 "Elefant tånagelsvamp"

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 "W" means.

 


 
Computer Languages:
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 meanings.

 

 

 

 


Conclusion:
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