Dec 2019
January 2020 Issue
Collins Software's Newsletter
Feb 2020
Compiler Changes:
Small changes to the compiler that will change the way we write software. These changes have minimum impact on the knowledge base of the programmer. No new syntax is introduced, rather existing syntax is used or added to implement these changes. Most of the changes are transparent to the programmer. The objective is to reduce the syntax and knowledge required.

1. Variable Length Numbers
Integers and real numbers that have no fixed range.

2. Fixed Length Numbers
Integers and real numbers that can be defined as any fixed number of bits

3. Character Style
A Character representation that contains font, language, and style information for each character.

4. Boolean Datatype
A true or false data type. Has no numeric representation

5. Units
Built-in unit representation and conversions

6. Mutable values
Values that can be modified in place

7. Compiler Timeline
Timeline with markers of when variables are created, changed, and deleted

8. Load on demand
Loading of logic and data when needed

9. Emulation and Hardware instructions
The dynamic and static storage format and name creation

10. Passing of variable names
Knowing the name of the variable name used by the calling function

"Maturity is when you stop complaining and making excuses, and start making changes." -- Roy T. Bennett

"Oh, the fools, like a lot of good little schoolboys, scared to death of anything they've been taught is wrong!" -- Émile Zola

"Maybe I am doing right , maybe I am doing wrong but at least I'm trying" -- Jameel

"Women are meant to be loved, not to be understood." -- Oscar Wilde

"Better three hours too soon than a minute too late."  -- Shakespeare

"Whenever you write, whatever you write, never make the mistake of assuming the audience is any less intelligent than you are." -- Rod Serling


11. Return multiple values (Python partly)
Return more than one variable by a function. Also add an alternate return variable argument list to the function statement to be used in a conditional for the calling function.

12. Change Precedence Order
Change the order in which operators are performed, from application specific to logically ordered, making it easier to remember.

13. Text and Binary include values
A syntax for infinite amount of text and binary values in the source code with user defined terminators.

14. Constants and Masks
Global constants with enumeration and named masks also defined as a table of constants and masks

15. Qualified Function Names
Using qualified function names to create parent child relations of functions

16. SQL select statement
Treat arrays, objects, tables, and other select statements as your source database

17. Infinite Continuous Data
Large structures and files are access on demand, in multiple small buffered increments

18. Partitioned Arrays, Objects, and Tables
Horizontal and vertical partitioned based on content

19. Extended Prompts
Prompts for files, folders, fonts, color, style, save, save-as, password, ...

20. Singular and plurals
Tie singular and plural objects together

21. Absolute flow control
Synchronous and asynchronous flow control, event recovery, two way function calls, entry points, refresh.

22. Function entry points (FORTRAN partly)
Allow multiple entry points to be called, or to be reentered from the called function

23. Global With Statement
multiple modes such as Development, Production, Guest, and Training by using global "with" statements

24. Flattened Structures
Nested parent child objects, with a single level naming convention.

25. Object parent search
Searching object upward as will as downward

26. System defined events
user definable functions for system events, onChange, onNotFound, onCreate, onDelete,...


27. User defined Operators
User functions to perform user defined keywords or syntax dynamically parsed and handled in the same way a system known operator performs. Same operator order, precedence and number of arguments.

28. Complex Numbers
mathematical imaginary numbers (FORTRAN,...)

29. exit statement
quit program execution without unwinding the call stack

30 Fractions
provide a new syntax to express a fraction with unit conversion and math operations are performed

31 Extended case
Provide list, match, case insensitive, numeric range and other extended switch statement matches

32 Declare statement
provide extensive number, character, structures and binary storage representations

33 Closure calls
call sub-functions of a closure function

34 orphan catch and finally
permit catch and/or finally without a try statement

35 Alias function names
A simple variable name for an Object's methods

37 alert ruler
define column layout for alert function

38 inline functions
functions treated as an inline block statements to a function

Subset of the Changes:
These thirty eight changes to the compiler are a small subset. I have listed these changes as those that are mainly transparent to the programmer. There are many more changes that require more detailed explanation.

I was watching a blacksmith demonstrate his trade on TV the other day. He said that he learns one significant new skill every two or three years. In programming it takes us about 25 years to lean a new skill. At this rate I figure it will take us nine hundred and fifty years to implement just this small subset of changes if we wait for others.

These changes are to ensure that when writing programs we never have to guess at what the result will be.

Author: Clif Collins
Houston, Texas
January 1, 2020