May 2014

Jan 2015
Terminology without Technology:

Building the next level of technology requires a solid foundation, and a clear approach. Our current terminology has vague meanings with unfinished or partial solutions.

Technology can be built on "words" which communicate, in the least confusing way, the actions to be performed for any given situation.

An Infinitely Large Database:

Changing our view of databases: we currently store and retrieve data from a permanent location and call it a database, then use SQL language to access it. This requires software developers to create static synthetic organizational schemes to group related values.

I changed this logic around to permit the system to organize information based on usage and personal preferences. All the relationships and information about a word are stored in a permanent location that is optimized by the system for access speed and security.  The difference here is that everything that I know about a given piece of information is known to the system. Every person who wants the system to know something can have it permanently stored, organized, and retrieved.

With an infinitely large database I will have to turn over all relationships, security and content handling to the system.  Most of what the system knows is "common knowledge", this is information that is entered once, rarely changes and is globally accessible.  All other information is "personal knowledge", information that is known to a single individual or group of individuals. The system will accept and treat all information as if there is a single structure. 

"In the end, all business operations can be reduced to three words: people, product, and profits." Lee Iacocca

"There's a great power in words, if you don't hitch too many of them together." Josh Billings

"Without knowing the force of words, it is impossible to know more."  Confucius

"Don't use words too big for the subject. Don't say infinitely when you mean very; otherwise you'll have no word left when you want to talk about something really infinite."   C.S. Lewis

"The limits of my language means the limits of my world."   Ludwig Wittgenstein

"Words are cheap. The biggest thing you can say is 'elephant'."  Charlie Chaplin

Communicating with Adams, the end of software development?

We have yet to begin to communicate with Adams. Not from lack of trying, but rather from lack of understanding by the machine. If we ever do communicate with the Adam then understanding is achieved and no more software development would be needed.

Communication is the production and exchange of information by means of signs and symbols. It involves encoding and sending messages, receiving and decoding them, and interpreting the information and meaning. Communication permeates all levels of human experience. We have yet to communicate with Adams. We do not exchange information with the Adam, the Adam simply performs predefined responses.

Natural language is our preferred method of communication. But, we should not expect the Adam to learn all our words at once. The difference between human learning and machine learning is in the method of learning. The Adam simply needs a method to store words and retrieve their meanings. I have devised a technology to do just this. The foundation of my technology is to place all knowledge into the Adam using human words.  The Adam must comprehend at conversational speeds.

There are three criteria for this technology. The first is speed, the easiest of the technologies to build.  It is some 70 years old and the easiest to implement.  The second is organization. It should be natural and self improving. As the size of the system increases, it must continually improve in speed, and knowledge. The third is understanding, to insure the words that we communicate are understood the same by both sides.  Information context can be achieved through experience weighting - a word's meaning in context depends on its use.


A domain can be thought of as a single word or term that has a set of actions that can be performed by or on it. A domain has values and characteristics. A domain's scope should be defined as narrow as possible for every user.

A domain can have any number of named sub-domains. A "school" domain can have "department" as a named sub-domain.  One action that can be performed on a school domain would be "show teachers".  

A domain may have processes that require complex definitions or controls which might require a language. The language should then be the easiest possible form for humans to create without documentation.  Often, no language is required for domains since the system already has a general language that encompasses many common domain actions.

Domain Specific Language:

A domain specific language is used to define and control an application. The main problem with our current technology is the limited number of domain specific languages.

A few months ago I created the science of "Software Logic Management" to define a scientific method for creating logic. If we break an application into "domains" and create a specific language for each domain, then we can reduce our development time to a minimum.

I created Common Ground 2000 (cg2) some 19 years ago as a common language for transferring information between any two systems. Software Logic Management seeks to create a set of domains and their language whereby the least number of words are used and no documentation is required.

At the core of current compilers, we have only three domains of "Character", "Integer" and "Floating Point" which we generally implement in hardware. From these we have derived "Currency", "Date" and "Boolean". It took social and economic changes and 51 years (1935 to 1986) for these to stabilize.  Even today these have not been adequately defined.

We only have languages such as C#, C++, JavaScript. Fortran, Pascal, Basic to control these 6 domains for every application written over the past 79 years.  These "compilers" allow us to "Add", "Divide" "Print", "Move" - maybe 10 basic operations. This is as far as we have taken our current technology. 

The system I am building has domains for words; such as "Phone Number", "Address", "Menu", "Form", "Style", "Invoice", "Purchase Order" and so on.  Each word can have sub-domains. This reduces the language down to just a few well chosen words to create and control all aspects of the system.

DSL Comment:

A DSL should rarely need documentation for most every-day human interactions. A DSL for complex sub-domains can be described with little or no explanation.


Author: Clif Collins
Houston, Texas

Oct 6, 2014