July 2019
August 2019 Issue
Collins Software's Newsletter
Sep 2019
Case Values and Qualified Values:
I have created two computer language statements to permit the entry of information and action requests. A resource is a collection of information and all the actions that relate to it.

Cast Value: a resource. The text representation of a resource.

Qualified Value: a complex resource with qualifiers. The text representation of the context of a set of resources, which includes the resources or access to them.

A "FILE" is a resource. To be more specific it is the binary "content" stored on disk. "FILENAME" is a resource. To be more specific it is the text name of the location of a "FILE".

cast value example:
A = file:(A,B,C\n1,2,3);
B = filename:(c:/temp/csv.txt);
B = A;

qualified value example:
C = csv{<B>,sep=comma,has names};

All the actions possible on a resource are available, and loaded on demand.

for (index,row in C) alert(row);

To carry this out to its conclusion, every company resource is available as a one line statement.

A = accounting{user=Clif Collins};
B = A.New Invoice;
B.Customer = "Collins Software";

Do we need both qualified values and cast values even though a qualified value is in fact a cast value. I added cast values to make code more readable.  It comes down to how information is to be used, and how we perceive its use.

"Try not to become a man of success. Rather become a man of value." -- Albert Einstein

"If I have seen further it is by standing on the shoulders of Giants." -- Isaac Newton

"I learned very early the difference between knowing the name of something and knowing something." -- Richard Feynman

"Do I love you because you're beautiful, or are you beautiful because I love you?" -- Cinderella

"4 out of 3 people struggle with math." -- Anonymous


The Assistant:
We must think of software as the assistant to the master. It is there to provide help to someone that is performing a task. In real terms, an assistant provides help doing things that the master can do but wishes to let someone else perform them.

The Perfect Assistant:
We know what this is, he/she does what we ask, when we ask, understands what we ask, and gets better over time to the point that the student becomes the master.
The Computer as an Assistant:
This is where we went wrong. We have too many assistants, they are constantly changing, each thinking they are the master and require us to learn their way of doing things.

In programming we have hundreds of thousands of assistants.  The instruction set, the operating system, the compilers, the editors, the applications, all the system and library functions, all of which are unique and independent. Each doing things in a way that requires the master to become the student to perform even the simplest of tasks. To make things worse, we never know if the request will be done as we expect. An example, there are probably four thousand ways to add two number together, none of them giving identical results.

Every application now requires hundreds of assistants to create it, and even more to run it.  This is far too fragile and time consuming.  In programming terms, a function is an assistant that we call to do part of our work. Functions are almost never complete, which forces more work on the programmer. The result is that we can only ask for things that each assistant allows, which is the worst possible way to program.

Jane, One Assistant:
The only way to improve software development is to have only one assistant. One that we train, that understands our requests, and we can rely upon to do what we ask. As "the" only assistant she will perform any and all requests quickly and professionally.

By giving the assistant a name, implies that the user has no control over how she does things. In a word we will not micromanage. We design and build Jane as an individual and give her complete authority to perform her job to the best of her ability. The job of building Jane is to have professionals create the subsystems at the direction and control of Jane herself. The result is to let Jane do as many common programming jobs as possible to free up the masters to do their work of application development.

The more she learns the faster it will be for every job to be done and with less work on the user. Again back to my belief that software development can be reduced from man-years of work to just a few minutes.

Jane - The Perfect Assistant
Maybe not perfect, but maybe by having only one assistant we train and who understand us, is all that is really needed.  The one thing I have learned, is that no two people will ever do anything in an identical manor.

The assistant should listen to us and learn to anticipate our needs. Over time it should learn and begin to take over more and more of our work. There can only be one master and by the looks of things there can only be one assistant.

Jane starts by listening, listen to what I want. The act of listing is totally isolated from performing the action. The technology of Cast Value and Qualified Value is a declaration of a resource, but not the action. An action is then called upon based on the capabilities of the resource. The declaration of a resource is the context in which to take requests. "Doctor's Office" is different from "My Kitchen", the requests "go to the sink" and "take inventory" makes sense only in context.

Jane will handle all the common resources:

  1. File System
  2. Character Sets
  3. Numeric Values
  4. Units
  5. Screen
  6. Editor
  7. Compilers
  8. All Devices
  9. Databases
  10. Services
  11. Storage
  12. All Applications
  13. Security
  14. Data Transfer
  15. Processes and Threads
  16. Language
  17. Communication
  18. Fonts
  19. Accountability
  20. Linker Loader
  21. Bootstrap
  22. Device Drivers
  23. Forms
  24. Images
  25. Videos
  26. Common and Uncommon Structures
  27. Known algorithms
  28. ...

Applications and sub-systems can themselves become resources. All organized and managed by a single assistant "Jane".

Author: Clif Collins

Houston, Texas
August 1, 2019

email: web1@collinssoftware.com