From: frebe on
> I think the expectation that 4-or-5GLs would be general purpose
> languages is a huge mistake on many programmers part. A GUI is a good
> example of a 4GL. The only thing Amazon's interface is good for is
> buying things from Amazon. It's wouldn't apply to buying Bud Lite from
> my local convenience store, even if after much processing the
> transactions all end up on my charge card.

SQL is also a pretty good 4GL.

//frebe
From: topmind on


Dmitry A. Kazakov wrote:
> On Wed, 9 Jan 2008 15:21:37 -0800 (PST), topmind wrote:
>
> > Dmitry A. Kazakov wrote:
> >> On Sun, 6 Jan 2008 10:00:37 -0800 (PST), frebe wrote:
> >>
> >>> But
> >>> your point seem to be that since you can't tell the complexity from
> >>> the source code, the model is flawed?
> >>
> >> Exactly.
> >>
> >> I don't board an aircraft without wings. Who knows, maybe it has an
> >> anti-gravity relational engine inside, but I better take no chances.
> >
> > Are you suggesting we use only primative tools unless we know each
> > layer and subsystem fairly well? Use COBOL or Fortran and a mainframe
> > if you want such fine control over resources. You can still buy them.
> >
> > Generally there is a price to pay for higher abstraction, and less
> > predictability about resource use is perhaps one of them. One is
> > "outsourcing" more to underlying tools and systems.
> >
> > But in the RDBMS case, one tests to make sure performance is
> > acceptable. If having known performance boundaries are a critical
> > issue, such as for an armed missile, then use assembler, C, Pascal, or
> > ADA instead of RDBMS. Of course, it would cost you more to stay at
> > that level.
>
> Oh, thank you for supporting my point, which was: requirements first.
>
> > Software development is all about weighing tradeoffs.
>
> It is about engineering.

I disagree generally with a comparison between software engineering
and physical engineering.

> He spoke about the *source code*! When your
> architect could not tell you from the plans he made if your future house
> won't collapse. Then, I guess, there is no need to build the house, in
> order to say that there is something wrong with him and the way he produced
> those "plans"...

Preventing errors is one of many factors to weigh, and different
situations require differing weightings of these factors. Such factors
include:

* Quality (no errors in output)
* Usability (user-friendly)
* Features
* Cost to build
* Cost to maintain (change)
* Cross-programmer pick-up (staff changes)
* Time to complete project
* Run-time speed
* Etc.

>
> --
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de

-T-
From: Robert Martin on
On 2007-12-27 23:00:01 -0600, Matthew Shelton <crash700(a)gmail.com> said:

> I'm just wondering if OOP is a bit overkill for a database app.

OO is a tool. What does the tool do? It helps you manage the
dependencies between modules. It would be *very* surprising if your
database application did not have modules whose dependencies did not
need managing!

Consider, for example, the problem testing your database application.
You can test the whole application by using it. But how do you test
the individual modules? How do you test that each query works as it is
supposed to. How to you test that certain records are displayed in
just the right way? How do you test that negative numbers appear in
red, but positive numbers appear in black? How do you test that
passwords are echoed silently? etc. etc.

How do you test things things independently, if you cannot isolate the
modules one from another? If you can't manage the dependencies between
modules, you cannot make your modules testable.

And so, just the basic need of all software, to make it testable, is a
strong argument for using OO.

--
Robert C. Martin (Uncle Bob)��| email: unclebob(a)objectmentor.com
Object Mentor Inc.� � � � � ��| blog:��www.butunclebob.com
The Agile Transition Experts��| web:���www.objectmentor.com
800-338-6716� � � � � � � � ��|



From: frebe on
> > I'm just wondering if OOP is a bit overkill for a database app.
>
> OO is a tool.  What does the tool do?  It helps you manage the
> dependencies between modules.  It would be *very* surprising if your
> database application did not have modules whose dependencies did not
> need managing!
>
> Consider, for example, the problem testing your database application.  
> You can test the whole application by using it.  But how do you test
> the individual modules?  How do you test that each query works as it is
> supposed to.  How to you test that certain records are displayed in
> just the right way?  How do you test that negative numbers appear in
> red, but positive numbers appear in black?  How do you test that
> passwords are echoed silently?  etc. etc.
>
> How do you test things things independently, if you cannot isolate the
> modules one from another?  If you can't manage the dependencies between
> modules, you cannot make your modules testable.
>
> And so, just the basic need of all software, to make it testable, is a
> strong argument for using OO.

If testability is the most important requirement, then a functional
programming laguage would be the best choice. Functions without side-
effects are more easy to test, than objects with state. The larger
part of your application you can write as functions without side-
effects, the easier would the testing be.

//frebe