Feb 2020
March 2020 Issue
Collins Software's Newsletter
Apr 2020
The development of software is the human understanding of the relationship between the code and reality. A number is only a number with no relationship to reality. To validate code absolutely,  a complete understanding must be derived or assumed to a level that you accept as true.

The understanding of units requires the "what" and "when".   A = 34 miles/hr of an eagle in normal flight.

Unit Conversion:
Not as simple as it looks. The First type is the unit conversion within a unit class, such as time, minutes to seconds, which is to apply a scale factor for conversion.

Second type is algebraic simplification, feet * feet = feet2. For more complex units will require an array of unit and exponent solving: 1/meter * meter2 * 1/second * hour

Third type of conversion requires a function such as Fahrenheit to Celsius.

Fourth type is solving unit conversions in different unit types,  power * electromechanical:

amps = power / ohms

Fifth type is user defined units. Number of pencils in a box, boxes per carton, cartons per crate, crates per railcar.

Along with unit conversion, is validation of attributes, such as the weight of a crate of pencils cannot weight less than the sum of the weight of all the cartons plus the weight of the pallet.

All of these can be done by the human, but could also be done just as easy by the compiler, without any human involvement.

"We all die. The goal isn't to live forever, the goal is to create something that will." -- Chuck Palahniuk

"There is no abstract art. You must always start with something. Afterward you can remove all traces of reality." -- Pablo Picasso

"To generalize is to be an idiot." -- William Blake

"I cannot teach anybody anything. I can only make them think" -- Socrates

"An expert is a person who has made all the mistakes that can be made in a very narrow field."
-- Niels Bohr

"The superior man understands what is right; the inferior man understands what will sell." -- Confucius

"Politics is supposed to be the second oldest profession. I have come to realize that it bears a very close resemblance to the first." -- Ronald Ragan


Word Problems:
Programming using only your voice. With full access to Jane's logic, which is access to all knowledge then application writing is possible using descriptive terms.

Units conversion is a word problem. We can specify it in mathematical terms "A = 3 feet/s * 4 hours" or as a word problem: "distance = A train traveling 10 miles and hour how far will it travel in 240 minutes";

Extending units and word problems beyond the realm of mathematics we can describe all software development issues. Form Management, Accounting systems, Flight control, self driving cars, any and all applications can be utilized fully.

Readability and changeability are the main attributes of a word problem. Programming in the traditional sense is completely void of either of these attributes.

Compiling from a word problem to a set of qualified nested value structures from a set of terms, phrases and sentence. This can only be accomplished when we have fully qualified descriptions of persons, places and things. A word problem is the declaration of the equations needed and the values used to solve a problem. By extending the compiler to do this work  at compile time, it can program the run-time code to implement the execution. I believe that 100% of every application can be coded in this way. Especially if we get the compiler to do all those things that we already know how to do.

It is context that a word problem is stating. It is context that is missing from traditional programming. By programming for human readability, this can then be used to write applications by the compiler in the fewest possible words.

Word Problem Equations:
Power, Torque, Thermodynamics, Vectors, Acceleration, angular velocity: many types of units that if we know what we have, and what we want, put it in a word problem and have the compiler generate the proper solution.

A = amps from 100 watts and 45 ohms;

Hopefully we can get to a point where we can, from context, derive the expression without having to be explicit in our request. So if we have a problem like a block down an incline, that the coefficient of friction, if needed, will be assumed and or requested by the compiler, or better yet be derived from previous context (oak block of a certain size, down a steel ramp)

The issue is to implement word problems in the compiler is a way that no documentation is required. To make it obvious, flexible, and extendable by the user. So we can add things like: patient, medicine, and accounting units and equations to the compiler. So we might apply a speed-of-payment coefficient to our customers.

Units Declare:
We could start with the terms "exact" and "approximate" but these terms may not be understood in all context. Many units therefore give a +/- "tolerance".
  • A = 1 inch +/- .0001
  • A = 1 inch absolute
  • A = 1 inch approximate

Any use of these values can therefore propagate the accuracy of the resultant calculations.

Understanding of a unit is required:

  • 1 Altuve = 5.4166 feet = Height of Houston Astros player of 5' - 5"
  • 1 DDB = volume of a Double Decker Bus
  • 1 dog year = 1/7 of a year
  • 1 PB = 12 Pencils per Box

Relationships and ownerships are all part of our knowledge that we base decisions upon. In programming we read into our code these attributes, however these are assumptions, because they in fact do not exist in the code. We spend most of our programming time in conceptualizing the logic from fragments of knowledge spread out in multiple locations and making assumptions upon logic correctness. If units were used to augment the pieces of information that we assume, then all we would waste is a few seconds in typing.

A = Edith who is Clif's aunt on his mother's side.

Many of our failures using computers come from the fact that software has no understanding of units. Units are known to the developer but and never available in the code. From Christopher Columbus using the wrong conversion to calculate the size of the earth to our failed Mars mission using the latest technology. Understanding of the numeric values we use to represent reality must be performed at the hardware level with complete readability by every human that comes into contact with these numbers along with all the values derived from them.

The compiler must manage and perform all unit conversions and mathematical unit operations. This is the only way that emulation of reality can be accomplished. Units implies having the ability to have in a single location all knowledge about any given term or value. Having this knowledge then implies a given set of logic to manipulate these values. Therefore again my assertion that we can reduce software development time from man years to just a few minutes.

Author: Clif Collins

Houston, Texas
March 1, 2020

email: web1@collinssoftware.com