June 2018
Issue
July 2018 Issue
Collins Software's Newsletter
Aug 2018
Issue
Litmus Test:

The perfect operating system and software development system is one that does not require documentation. That every application that is written can be accomplish from the knowledge a person already possesses.

The litmus test to determine when the systems has reached its most simplest form is when:

  • time to develop applications is reduced from man-years of effort to minutes
  • software is absolutely unbreakable
  • software is absolutely secure

I believe a perfect system can only be reached by first assuming that it can. Jane is my attempt to reach this goal. I first determined that it can be done, then I set out to design such a system. I estimate that it will take me another twenty five years of effort to create a perfect system. Will it be enough, and where will it fail? These are always the key questions in any new endeavor. I cannot find any failure points other than time and money. Technically it is a very easy design task: get rid of all current technologies and build new ones with these goals.

Get rid of all your text books, ignore personalities, politics, and most importantly get rid of your fears. Assume that it "has" to get done, do whatever it takes. I then can find no reason that cannot be solved.

If we start only from first-principles with these goals, it is very easy. It is impossible if we use any of the current technologies which are a fragmented mesh of partial propitiatory solutions.

The worst case, it does not work. The best case is that it does work. What have I lost, just 25 year of work, nothing in the scope of things.


Quotes:

"Formula for success: rise early, work hard, strike oil." -- J Paul Getty

"It is always the simple that produces the marvelous." -- Amelia Barr

"Don't mistake activity with achievement." -- John Wooden

"Do what you feel in your heart to be right, for you'll be criticized anyway." -- Eleanor Roosevelt.

 

Tools needed to build Jane

There are four basic tools that are needed to begin writing a better software development system. A language, forms, database, and a change to the basic hardware.

Our current technology is based on the idea that humans would be doing all the programming. To turn this task over to the computer will mean that a whole new foundation will needs to be built. The first tool is a redesign of the hardware itself, which includes the hardware instruction set.  The computer design will be indifferent to the human, and should be designed with one overriding objective, get the human out of the equation. A weighing scale is used, on one side computer time on the other human time to determine design. The hardware should perform compile-time logic as well as run-time logic, in a way that optimizes both. Context sensitive instructions to increase reliability and to reduce compile-time logic declaration.  Hardware induced knowledge, with extensions of the fundamental information unit. Have information units that are executable, storable, and transferable as a single format.

The second tool, A language that is optimized for communication from humans to computer. An instruction set that is N-tiered and optimize-able from level to level in both directions. The language that is context sensitive and knowledgeable about its total environment. The optimization shall be for space, speed, and human communication. The language shall be modifiable / extendable but without versions.

The third tool is an application builder. This tool permits the building of Jane to manage itself in a method similar to human construction techniques. Load calculators, testing standards, project management, product tracking, improvements, schedules, procurement, and units of measurement.

The fourth tool is the transport and storage of knowledge, a database if you like.  The segmentation, ordering and the knowledge base for world wide communication of information and knowledge.

It is no longer just information but also the historical context and the capabilities on knowledge that the system is to manage.

If I use inferior tools, I get inferior products. I remember at age twelve I built a desk from a sheet of plywood. First I did not know what I was doing. Second; I did learn that lack of experience was my greatest challenge. I have since learned that having the proper tools to will overcome the lack of experience.  I therefore need to build the proper tools.

Software development without documentation:

A software development system that does not need documentation means that we can communication logic to the computer with knowledge that a human can remember for long period of time. This communication will include every aspect of knowledge. The funny thing is that humans need to know very little if the computer already knows what to do.  It is not documentation that we remove but the requirement for documentation. A weak explanation,  but if we have self driving cars, then there is no need to learn to drive a car, and we do not need to program a car to drive itself, if it can already do so. So we simply remove the need for documentation.

You will never be able to get there from here. The current software development technology has no knowledge that does not require documentation. So we have to start over with a design that begins at the bit and work forwards until everything piece of logic is known to the system and requires no documentation. Yes, yes, yes, easier said than done.

This says that the computer will become a master-craftsman in all subject matters. This implies twenty man-years of learning on each subject that is implemented by the computer. However since we do have at least one human master-craftsman in each subject, then the wall-clock time to inject knowledge into the computer should be extremely fast.

Looking at it from our current technology, we expect every human to become a master-craftsman in hundreds of technologies. We are, therefore where we are, still using 1822 technologies, that of Charles Babbage's machines. A single instruction / single step programming logic, with the human hand coding the logic just as Ada Lovelace did in 1843. I have not had the opportunity to program the Babbage's Analytical Engine, but I suspect that it is easier to program than modern computers. It did operations that I am just now trying to put into my language, that of flow control, which I suspect have fewer constraints than modern languages.


What is Documentation?

Documentation provides a human facts he/she does not possess. It does not provide the expert knowledge or craftsmanship to put those fact together.

Documentation causes far greater devastation than just the trillions of development hours wasted. Documentation does not provide complete knowledge (experience) and this causes imperfections in everyone's application.

 

Author: Clif Collins
http://CollinsSoftware.com
Houston, Texas
July 1, 2018

email: c1@CollinsSoftware.com