Re: Mixing OO and DB

From: Marshall <>
Date: Fri, 29 Feb 2008 07:06:06 -0800 (PST)
Message-ID: <>

On Feb 29, 4:10 am, "David Cressey" <> wrote:
> "Marshall" <> wrote in message
> > On Feb 28, 2:37 pm, Patrick May <> wrote:
> > > Tegiri Nenashi <> writes:
> > > >> For one thing, it decouples the application code and the
> > > >> database schema. For another, as noted by Mr. Martin, it allows
> > > >> the creation of a domain specific language that better reflects the
> > > >> concepts in the problem and solution domains.
> > > > Sure Mr. Martin is working on a "domain specific language" that
> > > > would put SQL to shame?
> > > Do you consider SQL to be the best possible language for all
> > > problem and solution domains?
> > Certainly not. SQL is only good for data management.
> Can you help me out here, Marshall? My first take on your comment was that
> it was sarcasm. But then I thought that maybe you're not being sarcastic,
> and there's a serious thought here. I've always considered you a serious
> participant in the newsgroup.

My comment was intended to have some bite, but the bite wasn't of a sarcastic nature.

Coding in desktop applications, enterprise application, or web applications of most sorts is only about 80-90% data management, or that subset of computation that is well-handled in a purely relational manner.

> I remember back when I first started reading you in cdt. You were, by your
> own assessment, somewhat ignorant about data management at that time, a
> "purebred programmer in recovery" in my words.

That is an accurate assessment, I would say. I had about 20 years of C, C++, Java coding experience before I began to notice that SQL was worth my attention. And I had virtually no study of formal methods up to then. I have worked hard to rectify both failings since.

> My question is, "aside from data management, what else is there?"

Heavy duty computation. There are algorithms that cannot be written relationally, but that can be written with a general purpose programming language, such as OCaml or Haskell. (Or, if you are stuck, Java or C++ or Python. :-) I say that as a Java programmer.)

What would really be ideal is a general relational system with an associated Turing-complete functional language embedded. So one could do the 80-90% part in a pure declarative/algebraic way, and the hardcore stuff recursively. Of course most programmers trained only on what's popular today would recoil from such a thing, the same way kids who have only eaten at McDonald's will retch at fine Italian food.

Marshall Received on Fri Feb 29 2008 - 16:06:06 CET

Original text of this message