Glass Walls
June 8, 2021


The unbreakable glass box in programming limits our ability to write programs. We built this glass box over the past two hundred years beginning with the invention of the telegraph. This started around 1830 with the development of how to represent information in electronic form. With earlier mechanical system of semaphores developed in 1794 to send messages. This technology got fixed in 1868 with the invention of the typewriter. Our programming method started with the first man, which was to determine an order to his day. Our first program written down by Ada Lovelace in 1842 when she programmed Charles Babbage's mechanical computer.

The Keyboard is one of the walls of the glass box. I am limited in computer language development by the keyboard.  We have been shackled to the keyboard with our very first computer languages. We have no division or multiplication symbols, and the use of the equal sign has been hijacked for the limited use of an assignment.

The Font technology is another glass wall,  designed as a simple fixed single line technology. Our character technology limits scripting to that is restricted to 1868 typewriter methods for information handling.

Keywords being used in our programming languages is another glass wall.  Most of our computer languages have around 50 reserved keywords. COBOL has over 500 reserved keywords.  FORTRAN our first high level compiler has no reserved keywords.

Functions make up another Glass Wall. Functions restrict our technology by requiring documentation which restricts the flexibility of our software development efforts.


 

The amount of logic I can add to the compiler is limited (Glass Wall) to what can be represented with a set of 27 keyboard characters:

 ( ) { } [ ] ~ ` ! @ # $ % ^ & * - _ | \ / < > . , + =


Each compiler has its own meaning for the use of these characters. Unfortunately only a few actually represent their common usage. This means that the human must interpret their use as documented by each compiler.  There are very few uses of these characters that are commonly known, and even less that are actually implemented by our compilers. What this really means is that our compilers stop to the minimum functionality that can be represented by this set of characters. Which is: addition, subtraction, division, multiplication, modulus, shift, compare, and, or, exclusive or, negate, equality and assignment.  Add the limitations of our font technology onto this character set and it restricts the characters to a single line of display.  The functionality of compiler technology is now almost nil. Really no better than Ada Lovelace's program.  It is as easy to read her program as it is any of the programming language in use today.

To add to the restrictions most compilers have implemented restricted use of keywords as part of their logic. This means that some words only have one meaning and cannot be used for any other purpose. The problem with this is; to add new keywords (i.e. logic) is impossible without affecting existing programs. Also to use the same keyword in multiple context is impossible. The use of keywords restricts how advanced the language can become.  This reason is that context is not known.

Compilers stop at doing the very minimum, leaving all the logic to user defined functions.  This means that every software development starts at a minimum knowledge base. The compile has no knowledge of anything that is being processed. There is no knowledge base in which to call upon to support our software development efforts.  It also isolates our information to a single implementation of logic.


 

Conclusion:

Breaking through just one Glass Wall does very little to remove the box that we have built for ourselves.  I will have to remove all the walls and start over from scratch.  So all new keyboards, fonts, editors, context sensitive keywords, and incorporate most logic into the compiler.

By adding common Math, Chemistry, Physic, and similar symbolic characters into the basic editor, and permitting complex cell placement into our programming languages, we can represent our existing textbook notations. Tie this notation to the compiler and now these equation and scientific equations will be functional, readable, and useful. By removing the global scope of keywords, this will enable the computer languages to grow without concern of obsoleteness. Finally getting away from the use of functions as our primary software development paradigm this will remove the limitation on the scope of our applications.