Aug 2019
Issue
September 2019 Issue
Collins Software's Newsletter
 
Morse Code, Our Programming World:
The keyboard we use today was created 3 years after the U.S. Civil War in 1868.  The character set that we write software with is the Morse Code character set created in 1838. The dot and dash signal was changed to ASCII in 1963 for the communication between computer. ASCII was adopted by the government in 1968 as the standard for all federal computers.

Our programming character set is the same as Morse Code. The device we enter these characters is the keyboards.  We have not added any more symbols to this set of characters, and we use the same keyboard designed for the typewriter. Our programming character set and keyboard was created eighty years before the first computer. So all our programming could be done in Morse Code if we so choose, and would probably be just as readable.


Symbolic Languages:
Marks in the dirt to communicate ideas.  The words we speak to the crops we produce are recorded in symbols. Numbers, stylized pictures of objects, and maps were humans first symbolic languages. Over the centuries we have created many types of symbolic languages. The one we are most familiar with is, this "text", the symbolic representation of the spoken word.

Symbolic languages evolve. The need to represent more complex ideas requires changes to a language. New concepts sometimes requires new ways to communicate. Math, and Music symbolic languages are two languages that we use to convey concepts, a practical way to representation these things, things that cannot be represented any other way.  We have worked on the Math and Music symbolic languages from the very first time we began to draw in the dirt.


The Editor:
Jane will have only one editor. Using other editors will not be possible. Or rather I should say, not practical. The concept here is to have a visual / editable representation of a complete programming language. The binary representation should keep all character knowledge: language, font charisterics, style, and context. All symbolic actionable and informational symbolic languages will be possible. This in simple terms is extending the character set (adding math, music, dance, logic, ... symbols) and including relative location as a programming component. A subscript is an index, a superscript is exponentiation and so on...

In fact very little is added to the concept of programming, add more symbols in context, and add meaning to the location of terms. 


"What's the difference between obsolete and cutting edge?  Obsolete works"  -- Nicholas Negroponte

"The best way to think outside the box is to not know where the box is" -- Sarah Blakely

"Computers are useless. They can only give you answers." -- Pablo Picasso

"The production of too many useful things results in too many useless people." -- Karl Marx

"Steam seems to have killed all gratitude in the hearts of sailors." -- Jules Verne

"I'd far rather be happy than right any day." -- Douglas Adams, The Hitchhiker's Guide to the Galax

"I used to think I was indecisive, but now I'm not too sure." -- Anonymous

 

Symbolic Language Editor:
Jane needs an editor to handle all actionable symbolic languages. 

Over the last four thousand years we have developed thousands of symbolic languages, many of them still survive today. Yet we only use one in programming, that of the English character set with a few punctuation mark (Morse code).

For Jane to be able to communicate with the human it must be able to handle all human symbolic languages. We must also recognize that these languages are no longer just figure written in the dirt, but are displayed in high resolution in millions of colors and styles. So Jane will take advantage of all visual clues that will help in communication, in their readability, and in their ability to represent logic. Just as we use a character's upper or lower case to distinguish identifiers, we will use color, boldness, slant, and any number of visual clues to place identifiers into unique classes. Making easier for the compiler to recognize multiple contexts. For instants the IUPAC chemistry notation might be declared as green characters, therefore:

A = 3-methylhexane;

would alter the variable name parsing conventions. So instead of a simple expression, the characters "3-methylhexane" becomes a very specific identifier of known meaning  to a chemist and to the compiler.

It is the representation of logic that we have not begun to explore. One which I hope to take advantage of, with a symbolic language editor and compiler. The representation (readability) of an idea is one thing. The real benefit will come from the ability to program "in concepts", not just program "concepts".  Over time new and better symbolic languages should evolve to make programming easier and more readable. Which is exactly what we strive for in all symbolic languages. To have the brain instantly recognize concepts from a visual clue (i.e. a stop sign is a red hexagon)

The editor will be designed for humans to visually recognize concepts, and to enter these concepts using only the keyboard. The internal bit representation will be for Jane to compile this information accurately into actions.

The editor shall be used for all documents, scripts, forms, and data structures handled by Jane.  The copy and paste of a single character shall retain its complete context.

It should be understood that there is sometimes a difference between the visual representation and its editable representation. The visual representation of a video, image, or matrix might have a different representation for editing. Some of these many even have many editable representations.  For instant a 4 x 4 matrix is easier to visualize in table form, but far easier to edit as a csv, or possibly in a selected cell popup editor.  The editor therefore is not a static application, nor is the content or context static. Nothing shall be hard coded, and user accessibility shall be completely open.

The text editor has not changed in 150 years. I cannot add any more permutations to the symbols that we have, to represent anything other than the concepts we now have. The world of the compiler had limits even before it was created.   We work in a black and white world with a handful of rocks, to build all human knowledge. Progress will not happen in the world of 64 symbols.

The Need for Symbolic Languages:
The need for symbolic languages continues to increase, yet our technology to process them is non-existent. We have 64 symbols to represent all of programming.  To increase our ability to communicate to the computer we must include all of our actionable symbolic languages.

Mathematics has over 200 symbols, Music has over 100 symbols yet the technology we use to represent them comes in the form of our natural language of 64 symbols. We therefore are forced to interpret an interpretation of a concept, in a language that is not designed for that purpose. "Using a pipe wrench as a hammer"  it can be done, but at what cost. Technology cannot grow if we represent an idea in a language that we cannot understand or read. I as a human must read documentation to know the meaning of the symbols that we use in programming.

Characters are a representation of sounds. Symbolic languages, such as the alphabet, are designed for communication of ideas. The better we get at using them the more useful they become.


Readability:

sum =

sum = 0;
for (n=1; n <= 4; ++n)
{
    sum += ((3 * n) - 1) ;
}


Literacy Rate:
The United States does not publish its literacy rate. But some estimate it between 85% to 99%. The world bank publish rates of countries, that do report, at an average of 89%, but with some countries below 30%. 
 
Literacy Rate of Computer Programs:
I have been programming for over 42 years, and I cannot read any program, I would estimate the rate at 0%.

I can study a program, just like maybe hieroglyphics, and tell you what the individual symbols mean, but I cannot interpret their true meaning. This is because we are using one symbolic language to describe another. Words are a poor representation of logic, art, math, music, and anything that is not the words themselves. Not in the world of computer languages, where explicit meaning is absolutely necessary.
 

Author: Clif Collins

http://CollinsSoftware.com
Houston, Texas
September 1, 2019

email: c1@CollinsSoftware.com