Re: A question for Mr. Celko
Date: 18 Jul 2004 11:42:44 -0700
Message-ID: <18c7b3c2.0407181042.321c8893_at_posting.google.com>
>> The only definition I can find for characteristic function is a
fancy word for the in operator. Is this the meaning you are intending?
<<
>> As for no recursion, self-references, and indeterminable sets, it
sounds to me like this is just unnecessarily restricting the power of
the language, a technique extremely common in today's systems, and one
of the reasons relational languages get such a bad rap. <<
No, the bad rap comes from weak programmers who are having enough problems learning even simple relational/set concepts. They write crappy code and blame the tool. I don't mean to avoid language design issues, but the average commercial programmer cannot handle simple procedural recursion.
The fancy end of set theory quickly gets infinite and messy to display or manipulate in the real world -- how would print out an indeterminable set? Why would the average business application need to use one? Okay, I'll give you accounting at Enron :)
>> Can you give a specific case where allowing relation-valued
attributes would result in a wrong answer? Are you suggesting that
allowing list, tuple, and relation-valued attributes somehow makes the
language inconsistent (inconsistent in the formal sense meaning it
would be possible to derive contradictory theorems)? <<
The classic example for relation-valued columns is to put the table inside itself. Lazurus Long is his own great grandfather, if you are a Heinlein fan, and you fall into infinite recursion. A parts explosion suddenly has more assemblies than there are atoms in the Universe. I nest a table using the Ackermann function as my model (non-primitive recursion), Etc.
The list stuff also has its problems -- look up Post Production strings. This was designed by the logician Emily Post to demonstrate unprovablity of what look like simple theorems. You are given a set of prodution rules and string; the rules involve cutting letters from the head and adding letters to the tail until the string either repeats a prior configuration (loopin) or comes to a halt state. Unfortunately, there is no way to know what the situation is in general.; It's basically the Turing Machine Halting problem in new clothes.
In fact, any data structure more complex than a scalar can run into Mr. Godel and his friends. I am not bothered by having just simple scalar columns and unimaginative tables -- Number theory gets along fine with nothing but integers. Received on Sun Jul 18 2004 - 20:42:44 CEST