June 2022

The Future of Software Development Technology:

Software development will no longer exist, there will be no technology, it will just be. The capabilities of software has limitations, but those limitations are known, everything else is possible. 

Natural language communication is designed and implemented to be the input of choice. A better editor, one that handles all forms of written, verbal and implied communication.  Math equations as written, along with music, chemistry, and all other symbolic written forms of knowledge transfer. Symbolic language pieces (characters)  can be used defined. This is important to have technology forever moving forward and improving.  Which is to improve communication and to produce a common understanding for everyone. 


Self Aware Context:
Leaving behind the concept of single application for a single data structure.  This is the completeness of our current software technology.  Every application is unique and different, and only works on one unique data structure.

The future software is context aware and will adjust itself to any change to its own environment. Instead of state transitions, where all states are predefined and controlled by logic, the future of software is to alter the existing logic whereby no controlling logic is required. Context is able to change but will stay in the same state of execution.  This ability permits an infinite number of possibilities with minimum impact to understanding and programmability.

For example: take a given state of a "number".  We will be able to change the context of the number, from an "Integer" to a "Whole Number" to a "Real Number". For a more complex example: the state of "Compile a text file", we will be able to change the context to handle over seven hundred computer languages.

The difference here is that a change of state would be "Compile a COBOL program" now change the state, to "Compiler a C++ program". Where a change of context:  The state is "Compile a Program" set the context to "COBOL" and then change the context to "C++". 

In our current software development technology,  "change in state" is rare, and we never have a "change of context".  The better technology is to have unlimited use of both, charge of state and change of context transparent to the user and handled completely by Jane.


"If you think in terms of a year, plant a seed; if in terms of ten years, plant trees; if in terms of 100 years, teach the people." -- Confucius

"Unfortunately, the clock is ticking, the hours are going by. The past increases, the future recedes. Possibilities decreasing, regrets mounting." --
Haruki Murakami,

"The best way to predict your future is to create it." -- Abraham Lincoln

"If stupidity got us into this mess, then why can’t it get us out?" -- Will Rogers

"If you want your children to be intelligent, read them fairy tales. If you want them to be more intelligent, read them more fairy tales."  -- Albert Einstein


 

Taking Advantage of the Computer:
The computer has certain capabilities that can enhance the work of humans: speed, infinite memory, never forgets, and global sharing of information and capabilities.

The future for software is to have absolute control by the user of every aspect of the hardware. There will be only one computer language. There will only one information format, with no limitations on logic.   All personal preferences will be removed from software. Software is to reflect reality, and as such will use the existing terminology and forms of communication.

Speed of execution: The computer started at about 2,000 instructions a second (Z2 computer - 1941). This is somewhat faster than a human can perform the same function at about 1 instruction every 5 seconds.

Storage Capabilities:  The amount of information that can be stored on disk out performs the amount of information the human can accurately store for a longer period of time.

Global Sharing of Information and Resources:
Moving,  accessing, and sharing information, knowledge and logic has never been easier.

Never Sleeps:
Can run forever without stopping.


Common Logic:
The future is to be designed with single internal methods for handling all information and logic. The object is to eliminate "single points of failure, with a side effects of fewer lines of code and easier to understand.

Much of the future's logic is built into the system, hidden, and automatically applied.  No more reading and writing files. No more databases to content with. No more client server technology. No more security issues. As time passes the system will automate more and more of our logic to a point that it can handle all possibilities, removing the need for programming of any kind.

Our only job will be to tell the system how we want reality to be handled. We provide the knowledge needed to adjust logic to fit our needs. "Fire at the Klingons", "Drive me to the Office",...


No Documentation:
The future software has no fixed applications. Applications are created upon request to the specification of the user. Every logic block of an application will be described and demonstrated to the user upon request.

The future is to remove all the so called "standards" and remove all the made up terms used to describe vague concepts.

The future technologies will have to adjust to the limitations of our spoken languages

  • Homonyms --spelt same different meaning
  • singulars and plurals the same (dice, deer )
  • multiple meanings (pet, fall, park, ...)
  • ...

context will have to be explicit, and be able to be verified.  Humans know context and what to ignore, the computer does not.  

Providing context will be the "art" part of the future system.

 

Accumulative Logic:
Building Block Logic, built to handle all realistic logic possibilities. As conditions change, logic is adjusted to take advantage of the capabilities of the computer, and to select the best possible approach to resolve the request.

No longer are applications written, what we have are capabilities and knowledge that is accumulative. These actions are then put together as a functional application. As more logic blocks are added to the system the more powerful is the overall system. At some point, the requirement for customization is no longer required, and the system can run on its own. No more human involvement in the software development process.

What goes away first will be "Client Server Technology", next are "Databases", and then "Security issues". These are the first three parts of Jane. 


No Functions:
No longer is logic defined as "functions". A function being a fixed set of statements to produce a fixed result. Rather logic is defined as blocks of code that are chained together as a single continuous flow of statements, which is the minimum amount of code to produce an expected result. The system can adjust itself based on context, both static and dynamic. The system will start by assuming a give action, but as conditions change and more information is available, the system can alter its own logic to accommodate the new conditions.

Without functions the system only loads block of code that are required for any given solution. This improves speed of execution, and greatly reduces the complexity of any given solution.


Conclusion:
"There can only be one".  Software can never be done by committee. The future of software must be done by the software itself, not by the personal preference.  We must have confidence in software, and this will only happen when all possibilities are considered.

The future single cheap system will have infinite knowledge and infinite logic needed to provide a flawless computing environment.


by: Clif Collins