Hacker News new | ask | show | jobs
by thrown123098 1191 days ago
>SQL is a practical application of relational bags.

Apart from the fact it isn't; elements have specific order and that order matters.

SQL is SQL, it's not relational algebra or whatever bastardization of it you can think up. In fact when it comes to SQL the only use relational algebra has is to tell you that anyone talking about it has never used SQL.

2 comments

Your computer is also not a Turing Machine. The regex that you use is not really a regular language. Your functions and logic are not referentially transparent, because well, they have to run on a computer.

But it's useful to learn the foundational mathematics of these things as there is a direct relationship between them.

SQL has semantics that can be understood by relational algebra of relational bags. It's of course not a 1:1 translation, but the mathematical underpinnings are explained there. It's useful to learn the simpler, more abstract thinking tool in order to understand the concrete programming tool.

My computer is very much a Turing machine since each time it runs out of disk space I can buy more disks. The fact you think a Turing machine has infinite memory rather than finite but arbitrarily large memory tells me all I need to know about the sorry state of your theoretical education.
A Turing machine is a mathematical concept. It has, by definition, infinite memory. A computer is just a real machine that can do similar things as a Linear Bounded Automaton, a Turing machine's little brother who'll never do quite the same things.
There is a physical limit to the number of disks you can add to your CPU. There is a physical limit to the memory you can address in your CPU (48-bits). It is not arbitrarily large.

Also wrong for Turing Machines, it really is infinite. That's a big difference to arbitrarily large. The halting problem is undecidable for TM's but not for arbitrarily large (you'll need precise definitions though).

It is left as an exercise to the reader to find a natural number which isn't arbitrarily large but calculable.
> each time it runs out of disk space I can buy more disks.

There's only so many that you can buy.

How much does an infinite amount of disk space cost?
Nothing, if it's your users who buy it instead of you.
The developers who don't understand the relationship between relational algebra and SQL are the ones who end up confused why their query browned out prod.

It's not exactly the same thing, but the underlying lessons and mental model matter.

Of course, the move back towards nonrelational data stores these days may make the point moot.

Three decades of programming in various languages and at various companies and today's discussion is the first time (after all those years writing SQL used by those applications) that I've seen the term "relational algebra". My queries run great in production at various companies right now, including many I guarantee are widely recognizable.
Sounds like you're working hard to defend your ego rather than seeing the opportunity to learn and improve yourself.

You must be a delight to work with.