Much of this Table Oriented Programming was always included in products like Progress. (AFIK Proggress was mature in 1995)
In that platform you have tables as native languaje entities, data dictionary, transaction semantics for every entity in the languaje, a real DBMS in the backend handling persistense, unix/linux/windows real portability ... you name it.
For example you can do in progress the following:
for each customer:
display customer.name.
for each phone of customer:
display phone.number.
/*or can do: delete phone.*/
end.
/*or can do: customer.name = 'xxxx'.*/
end.
It's very easy to read or write that code.
But believe me that the platform, in adition to be propietary (read expensive), has its problems.
But I never knew why the good ideas of the platform weren't ported to newer ones.
This is a concept I discovered independently recently, terming it "relational data modelling" since that is the more general concept at work; I'm starting to use it to great effect in my own code to simplify all aspects of the program.
Interested parties can read his track record in usenet, slashdot and various other communities. They are advised to read the rebuttals as well.
He has been at it since 1999 at least; his ideas are sometimes sound, but the fervor with which he evangelizes them, and his neglect to take any opposing opinion into account, or respond respectfully, makes his work approach crackpot.
I am a fan of fringe ideas; on the positive extreme are people like Elaine Morgan of the Aquatic Ape Theory who is both dedicated to her position and also embraces criticism as an expected route to the truth. On the other hand are people .. who really should be seeking immediate medical help, and Usenet is full of them.
I don't think his presentation is great, but I recognized something I thought of myself, which is why I posted this. I would also like to offer my thought, which is:
Most of the difficulty in programming comes from defining data in relationship to other data, rather than to abstract value systems(which are what types and classes are).
If this is the case, then we should formulate the vocabulary and definitions we use for our data structures in a way that makes it as easy as possible to define and maintain data relationships, and correspondingly, easy to generate any kind of index or result set. If you do this, the nitty gritty of "which data am I working with" is gone. SQL is the obvious example of how this works, but it's tied into database systems, which are not the only use case.
The system proposed is table-centric. I don't think tables are special, myself. I think all collection types are worth considering based on their properties to define relationships. The model I'm currently testing out myself relates a single value to any number of property lists and collections and autoupdates all of them.
Functional programming is a strongly related concept to my eyes, since in that paradigm, processing on list structures is used and reused to define many sorts of relationships.
Does anyone have a nicer, more concise introduction to TOP? This one is too verbose and yet is constantly referring to things that are not explained (at least yet?). Thanks.
To respond to one point: In standard SQL you usually cannot assign variables, macros, subroutines, etc. to complex or repeating parts in order to break the logic and sequence down into more manageable parts.
SQL actually has a way to break queries down, at least MS SQL does. There are views (certain kinds of views are even updatable), inline table functions (aka views with parameters) and Common Table Expressions.
Languages have been based on lists, stacks, procedures, objects. For years I have expected a table language to appear, just to complete the "Periodic table of Computer Languages".
I'll admit that I didn't read this article particularly thoroughly, but how did he get through an entire overview of 'Table Oriented Programming' without mentioning Lua?
Try the --limit-rate and --wait command line options to rein in the voraciousness of the download request. You can also use the -U option to pretend you are a browser.
But I never knew why the good ideas of the platform weren't ported to newer ones.