There is an interesting discussion on CodeProject concerning making a simple programming language and what that may look like.  Link to: https://www.codeproject.com/Articles/1244412/How-to-Design-and-Build-the-Simplest-Possible-Prog ramming Language to see the whole discussion on “Simplix” (for want of a better name).

 

Is Enigma the start of a 6GL revolution?


 

Why Simplix? – Why not dispense with language?

 

For 40 odd years, of my 45 in this business, I have been wondering if there is a simpler way of making programs.  Perhaps something like Simplix is the answer.  But why are we still working in this box?  Why, more simpler of the same old?  Are we so blinkered that “this is the way it has always been done, so this is the way it is”?

 

What could be outside the box?   What if we dispensed with program coding?  What about thinking of using what we know, or should know, before we even start to put instructions together.  So, what is before the box?  Simple – Analysis and Design!

 

My original concept was to improve programmer productivity by use of Analysis and Design documentation.  Particularly this was to address the “commercial” type of system.  As development went on there was a need for a name and “Enigma” was chosen.

Enigma: something that is not easily explained or understood (Encarta Dictionary).

 

As Christian (the original author) rightly puts it: “Before writing code, design your data carefully!”

 

Enigma uses data definitions, information definitions, GUI maps and database table definitions to produce working programs.  All of the definitions reside in the Enigma database.  All of the code is held as “snippets” in the Enigma database.  More than 99% of the code is Enigma generated by combining these records.

 

A few small programs provided “proof of concept” and I am now well into a complex system (over 150 programs, nearly 200 distinct data elements, 80 plus information constructs, 25 initiating constructs and 27 tables in the database) to trial development and challenge the generation processes.  All of these numbers will grow larger as more is done.

 

This development is also to provide insight into two things:

 

An Enigma system comprises two parts: a Net System designed to be used over the Internet, through an Intranet or on a local computer, and a Core system which handles all the database recording and retrieval.  This split has proved useful.  It allows concentration within the Enigma program generators by splitting the two necessities for a system; information provision and capture, and database manipulation.  The former is basically mechanical; the latter much more conceptual.

 

In contrast to Simplix, Enigma has no syntax, no instructions, no structures (trees), no use of .bat files, no use of comments, no functions, no …..  All Enigma requires is facts and the relationship between those facts.  From this come the Net system programs in VB.Net, HTML and Javascript, and the Core system program in VB6

 

Enigma does have rules:

 

What I have learned so far:

 

The proven functionality is quite astounding:

In both cases all that is supplied, is the identification of the controlling data and the information required.  These are not limits.  They are just what has been observed.  This behaviour was not expected when Enigma was conceived.  It relies exclusively on the database design.

 

Nor was the extent of generated, as opposed to hand coded, code anticipated.  99% is a very good generation ratio.  Enigma will not do everything at present, and never will.  I have much to do.  But if we are to look to the future and toward making programming “as simple as possible, but not simpler” then Enigma is something “out of the box”: perhaps the start of a 6GL revolution.  Who can tell?

 

(Enigma generated systems use Internet Explorer, IIS, SQL Compact, VB.Net, Windows and VB6 to operate.  Other versions of SQL could be used, as could later versions of VB.  A VB development suite is required for Core system compilation.)