There is an interesting discussion on CodeProject concerning 6GL and what that may look like.  Link to: https://www.codeproject.com/Articles/1167844/What-Might-a-GL-Look-Like to see the whole discussion.

6GL – A DISCUSSION

 

It is interesting how the language generations have moved over time from a progression (1st, 2nd, 3rd) into data storage and retrieval (4th) and then into the AI languages (5th).  So what does come next?  Does a 6GL build upon 1 to 4 or go onto some other tangent as AI has (like interpreting flowcharts)?  I think that onward building is the way that 6GLs will go.

 

I entered “6GL” into a Google search and found this discussion.  The range of comment, as well as Marc’s paper, is very informative; particularly the comments from Peejay Adams on the ever increasing complexity required to program anything.  It is almost that, if some “advance” in the computing world is not so complex as to be unintelligible to a mortal programmer, it is not of any use.  And the corollary is, that being so complex, makes the “advance” of little use.  What are we doing?

 

My experience is the world of commercial programming.  I have spent my 46 year career making programs, and systems, that interface with the common user to perform relatively common tasks.  Tasks such as suggested by C Grant Anderson in his first challenge.

 

With that in mind, I would suggest that a 6GL should make programming simpler and perhaps more accessible to the masses; who don’t know where to begin.  I would suggest that a generic name for 6GLs could be “Descriptive Programming”.  Programming without a language: programming by describing a system in very layman, but rigid, terms.

 

“Descriptive Programming”!  Think about a system.  What needs to be described?

 

It would be useful to describe the DATA contained in the system.  It would be useful to describe the INFORMATION used, or created, by the system.  It would be useful to describe the DATA RECORDING needed to retain the DATA for the system.  And lastly, it would be useful to describe the ENVIRONMENT within which all the other descriptions would operate.

 

ENVIRONMENT: The general look and feel of the system when completed, and also some controls over the operation of the system.  So we get screen headers and footers, copyright claims, system names, database names, colours to be applied to GUI elements, and so on.

 

INFORMATION: What does the user want the system to accept as input and provide as output?  How is the input going to be arranged?  Where will the Input come from?  Where should the output go; printer or screen or …?  What should the GUI interface contain and how should the INFORMATION be split across the GUIs?

 

DATA: All the individual items that, when assembled, make particular INFORMATION.

 

If INFORMATION and DATA and GUIs sound to you like the products of classical Analysis and Design that is exactly what they are.

 

DATA RECORDING: How are we going to store the DATA in a database.  What should be the table structures?  Are we going to apply a strict normalisation to the tables?  What DATA relates to other DATA and what DATA is typically part of INFORMATION but does not relate to all of the DATA in the INFORMATION?

 

An example: Your Car and permitted Drivers.  The Car is a singular object but the permitted  Drivers can be more than one for a specific Car.  So the INFORMATION could be supplied as Car and Driver but the DATA RECORDING could be better split over three Tables: one for Cars and one for Drivers with the third Table to connect the other two as required: which would also allow for one Driver having access to more than one Car.

 

The design of the database is very important and thus some technical knowledge is required.  The design, the DATA RECORDING, can be defined by describing the Tables required to contain the DATA and the keys used to recover and connect the DATA.

 

In a nutshell, that is a simplistic description of “Descriptive Programming”.

 

Now, before I get deluged by comments like “It can’t be done!”, let me assure you that it can be done and IS being done.

 

As a test bed I am using a “Descriptive Programming” 6GL to create a commercial system that currently contains –

 

There are 26 additional INFORMATION constructs that initiate the recording, or retrieval, of INFORMATION from the database through 165 programs (increasing rapidly).

 

From the descriptions the 6GL generates code to provide for –

 

The data recording process uses SQL generated by the 6GL that is necessary to –

 

To this point I have not mentioned any coding; just Descriptions.

 

Now I must admit that not everything can be done through the descriptions.  There are system requirements that need a bit of code to be added here and there.  The developing system currently contains around –

 

 

I consider that this is programming.  The developing system does NOT require access to the 6GL to operate.  The 6GL is not a run-time interpreter.  However, to run, the developing system does require access to IIS, which is little different to a 4GL requiring access to whichever brand of 4GL is your favourite.

 

6GL = “Descriptive Programming” or is it “Descriptive Programming” = 6GL?

 

“The best way to predict the future

is to create it.”         (Abraham Lincoln)