Morse Code, Our Programming World:
The keyboard we use today was created 3 years after the U.S. Civil War
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.
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.
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...
very little is added to the concept of programming, add more symbols in
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." --
"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."
"Hypotheses non fingo", Latin for, “I do not do
hypotheses" -- Newton
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:
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
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
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.
sum = 0;
for (n=1; n <= 4; ++n)
sum += ((3 * n) - 1) ;
The United States does not publish its literacy rate. But some estimate it
between 85% to 99%. The world bank
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.
Thought for the Day:
"DNA" that each cell contains information about the total body. A cell
can make copies of itself, and the new cells have an exact copy of the
DNA from the old cell. That 99% of this information is the same for
Now think "computer cell" it has no DNA. It is just some
group of bits that are set for some unknown externalized purpose.
Now think "nature might be right", we need cell DNA to retain all
knowledge of each piece of information down to the smallest part.