

Table Oriented Programming - chipsy
http://geocities.com/tablizer/top.htm

======
raphar
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.

------
chipsy
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.

------
mahmud
tablizer ..

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.

~~~
chipsy
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.

~~~
silentbicycle
The reason his system is table-centric is because he feels the relational
model is a good foundation.

------
silentbicycle
There's quite a bit of (frequently trollish) posts from him on the c2 wiki, as
well - <http://c2.com/cgi/wiki?TopMind>

He generally signed his name as just "-top", so not all the pages are
interlinked.

------
DenisM
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.

------
DenisM
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.

------
alecthomas
I always thought Cellulose (<http://pypi.python.org/pypi/Cellulose/0.2>) was
an interesting idea, though haven't done anymore than play around with it.

------
JoeAltmaier
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".

------
PhilChristensen
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?

~~~
jfoutz
(All material © copyright 1998, 1999, 2000, 2001 by Findy Services and B.
Jacobs unless otherwise noted.)

Granted, lua seems to go back to '95 or so, but these ideas were old when the
geocities page was created.

------
zeynel1
<http://news.ycombinator.com/item?id=871111>

Is there a way to archive geocities pages like this one? And are there any
other sites on this topic?

~~~
RyanMcGreal
> Is there a way to archive geocities pages like this one?
    
    
        wget -r http://geocities.com/tablizer

~~~
cpach
When I've tried that on larger GeoCities sites (say >100 documents), the
servers seems to shut me down after a while :-(

~~~
RyanMcGreal
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.

So the command becomes something like:

    
    
        wget -r --limit-rate=20K --wait=20 -U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 FireFox/3.5.4' http://geocities.com/tablizer

~~~
cpach
Thanks!

