Feb 2019
Issue
March 2019 Issue
Collins Software's Newsletter
Apr 2019
Issue
Examples of Explicit Languages:
I am trying to program the foundation of software development. As I look at each of the issues, with our current technology, I run into vague terminology.

The hardware only work with numbers, so I will start here. We use words "integer" and "float". these words convey very little other than a class of a numbering system. We use the words "signed" and "unsigned", again a vague approach to the really mean. Is zero included?  The number of bits in a number, I have yet to learn these words.

To be explicit in numbers, the English language has words for our numbering system:

  • Integer:  -∞ to +∞
  • whole number: 0 to +∞
  • counting number: 1 to +∞

Without explicit knowledge in our languages the work to handle logic will remain in the minds of the programmer.  To build a better programming foundation is to reduce the work of the programmer. We need to convey more context in the words we use so the computer can do the job with less human involvement.


 


"Marathon runners set explicit goals." -- Joseph B. Wirthlin

"What is known can't jerk us around unwittingly. Before anything can be resolved, the implicit must be made into the explicit." -- Ryan Holiday,

"Writing is thinking. To write well is to think clearly. That's why it's so hard." -- David McCullough

"Sometimes it's not enough to know what things mean, sometimes you have to know what things don't mean." -- Bob Dylan

"We're fascinated by the words, but where we meet is in the silence behind them." -- ram dass

"My psychiatrist told me I was crazy and I said I want a second opinion. He said okay, you’re ugly too." -- Rodney Dangerfield

 

Assumption are not facts:
Knowledge are the facts we know before we act. Programming is an act without knowledge. This is our inability to really have any control on our programming environment.

I do not use GitHub or any other library or packaged systems. I look for what should be, not what is. You can assume the world is flat and still be happy. I prefer to see past the assumptions.  I do not think progress is being made using the same technology.


Why don't we have better software?
With better software we would have better accountability. This would mean hospital charges would have meaning.  NASA would not have overruns. Roads would be build on time. We would not need governments. Factories would run themselves. We would have self driving everything. Cloud computing would disappear. Stock markets would become illegal. Advertizing would no longer be tolerated. Security would become absolute. Business meetings would become a thing of the past.

What is the hold up. Economics... why make things better it it is going to put yourself out of business.  Most companies spend more time removing capabilities rather than making improvements.

If a capability is not in the compiler then each programmer must become an expect at that capability. This means that other than simple math expressions everything else we do is done by amateurs.


Ada Lovelace and Charles Babbage:
Even though no one used their work on modern computer languages the results are the same; a simple instruction set working with numbers.

Using the instruction set of of the 1843 language, I could produce, just as fast, any of today's programs.

 


 

Readability of Code:
I can read and know the meaning of every word in a program, yet I have no knowledge of the whole. If our language of computer instructions remain at the level that a handful of words, there cannot be understanding.

A computer language should not be instructions but rather requests where the words and meaning are explicit.  The meanings of the language should already programmed before a request is made.

There are 171,476 words in the English language yet our latest computer language only has a vocabulary of 33 words. Progress in technology will never be made until we have a much larger vocabulary.


How many Computer Languages do we need?
I have, over the years, learned some 30 so called high level computer languages, and maybe a dozen assembler languages.  They all do the same job.

There seems to be an unwritten law that no two compilers can use the same conventions. Everything from how to write a comment, how functions are declared, to how variables are declared. I looked at twelve of our most popular languages, it turns out that they have only four keywords in common (for, else, return, if).  Most of our languages use less than sixty keywords.

To make things worse, our high level school systems follow the latest fad in languages. Are we learning science or the latest dance step? What students learn is not the language but rather the packages attached to them. None of these packages (API) ever use the same conventions. Python seems to be the flavor of the day. Not because it is a better language but because it can handle reading and writing files, Inconceivable.

Author: Clif Collins

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

email: c1@CollinsSoftware.com