[comp.databases] dBASE IV again - a reply to a response

aiko@cs.odu.edu (John K Hayes) (07/11/89)

The following is a reply to Kieth Broussard who responded in defense of Ashton
Tate to a previous posting of mine about the flaws of dBASE IV.

To: Keith Broussard <keithb@hpindda.hp.com>
Subject: Re: Re^2: dBASE IV - is this for real?

I think you're a little confused.  I am not some person who has just started
using dBASE last week, decided it was garbage and then went on a WARNING
SPREE.  I have been been using dBASE since '85.  I started with dBASE II.  This
was a very annoying thing to program in because of its severe limitations as
far as programming go.  It did take care of a whole lot of things to do with
database file management, however, that I then did not have to concern 
myself with.  So I put up with the limitations.  Then came dBASE III+.  This
was a vast improvement over dBASE II.  Most of the limitations of dBASE II
were eliminated or at least expanded upon.  I was very pleased with the
upgrade from dBASE II to III+.  Then I began using Clipper which expands a bit
on III+ and speeds things up immensely (plus I'm actually using a bonafide 
REAL compiler - you see, I spent 5 years in school getting a degree which is
mostly concerned with programming using compilers).  

Then, not too long ago, along comes dBASE IV.  After seeing the vast i
improvements III+ made over II, I was excited about it.  Someone upstairs had
a copy of it so I went up and had a look.  It LOOKED very nice.  As it is
very hard to get a complete feel for a new package until you actually start
using it for a while, all I saw was this superficial improvements to the way
it LOOKED and I did not notice that it was actually a slowed down heap of
garbage - so I went ahead and bought it.

Instead of making vast improvements over III+, it seems that with IV Ashton-Tate
has taken a package that ran very well, reasonably efficient for an 
interpreted system but one that left a little to be desired as far as 
asthetics, and totally transformed it into a package that IS more asthetically
pleasing to the eye but is NOT EFFICIENT.  This is clearly MIND-BOGGLING.
How could they be serious?????  I am not saying that there are bugs in the
system (although there may be few - I have seen none).  I am saying that the
system itself is flawed and they knew this when they released it.  It is
flawed in that it is a step BACKWARD from III+, not in that it does not
work.  That is why for me, already having III+, IV is totally worthless.  The
screens are very pretty, but waiting SO LONG for EVERY LITTLE THING makes me 
want to smash the thing to little bits and burn the documentation.  And that
logo screen and license agreement is just too much.  I go into and out of dBASE
all day long - I really don't have time to look at that idiotic crap.  This may
sound trivial to you - but I do not have 20-30 seconds to stare at that BS
every time I want to go into dBASE.  It makes me lose my train of thought and
it's just goddamned irritating.

Can you tell me this - can you name ONE IMPROVEMENT IV made over III+????


-- 
    ---{john hayes}  Old Dominion University; Norfolk, Virginia USA
                     internet: aiko@cs.odu.edu
                     Home: (804) 622-8348     Work: (804) 460-2241 ext 134  

                      <++++++++++++++++++++++++++++++++++>
Are you a Have or a Have_Not?  Because if you're a Have_Not, you've probably
had it; whereas, if you're a Have, you've probably got it and are going to 
give it away at some point in the future!       --- The Clash
                      <++++++++++++++++++++++++++++++++++>

awd@dbase.UUCP (Alastair Dallas) (07/13/89)

I should learn to IGNORE people who capitalize words rather than provide
SPECIFIC CRITICISMS that can be refuted or confirmed, and who conveniently
ignore tips on how to avoid annoying screen animation...  But I can't
resist:

In article <9467@xanth.cs.odu.edu>, aiko@cs.odu.edu (John K Hayes) writes:
> Can you tell me this - can you name ONE IMPROVEMENT IV made over III+????
>     ---{john hayes}  Old Dominion University; Norfolk, Virginia USA
>                      internet: aiko@cs.odu.edu
>                      Home: (804) 622-8348     Work: (804) 460-2241 ext 134  

A file that dBASE III PLUS takes 55 seconds to LIST takes only 22 seconds
in dBASE IV.  That's ONE IMPROVEMENT.  I could go on, of course.

/alastair/

aiko@cs.odu.edu (John K Hayes) (07/17/89)

In article <154@dbase.UUCP> awd@dbase.UUCP (Alastair Dallas) writes:
>I should learn to IGNORE people who capitalize words rather than provide
>SPECIFIC CRITICISMS that can be refuted or confirmed, and who conveniently
>ignore tips on how to avoid annoying screen animation...  But I can't
>resist:
>
>In article <9467@xanth.cs.odu.edu>, aiko@cs.odu.edu (John K Hayes) writes:
>> Can you tell me this - can you name ONE IMPROVEMENT IV made over III+????
>>     ---{john hayes}  Old Dominion University; Norfolk, Virginia USA
>>                      internet: aiko@cs.odu.edu
>>                      Home: (804) 622-8348     Work: (804) 460-2241 ext 134  
>
>A file that dBASE III PLUS takes 55 seconds to LIST takes only 22 seconds
>in dBASE IV.  That's ONE IMPROVEMENT.  I could go on, of course.
>
>/alastair/



BIG DEAL.  Who wants to list files to the screen so they fly past without
being read?  If you look at useful processing tasks - such as simple BROWSE
operations - IV takes about TWICE AS LONG as III+.
-- 
    ---{john hayes}  Old Dominion University; Norfolk, Virginia USA
                     internet: aiko@cs.odu.edu
                     Home: (804) 622-8348     Work: (804) 460-2241 ext 134  

                      <++++++++++++++++++++++++++++++++++>
Are you a Have or a Have_Not?  Because if you're a Have_Not, you've probably
had it; whereas, if you're a Have, you've probably got it and are going to 
give it away at some point in the future!       --- The Clash
                      <++++++++++++++++++++++++++++++++++>

keithb@hpindda.HP.COM (Keith Broussard) (07/17/89)

DBase IV's addition of the VALID clause to the @ SAY...GET command
combined with a user-defined function makes my life WORLDS easier!

Try emulating that with other commands...

Keith

awd@dbase.UUCP (Alastair Dallas) (07/18/89)

In article <9520@xanth.cs.odu.edu>, aiko@cs.odu.edu (John K Hayes) writes:
> Can you tell me this - can you name ONE IMPROVEMENT IV made over III+????

In article <154@dbase.UUCP> awd@dbase.UUCP (Alastair Dallas) writes:
> A file that dBASE III PLUS takes 55 seconds to LIST takes only 22 seconds
> in dBASE IV.  That's ONE IMPROVEMENT.  I could go on, of course.

In article <9520@xanth.cs.odu.edu>, aiko@cs.odu.edu (John K Hayes) writes:
> BIG DEAL.  Who wants to list files to the screen so they fly past without
> being read?  If you look at useful processing tasks - such as simple BROWSE
> operations - IV takes about TWICE AS LONG as III+.

BROWSE on an indexed 25,000 record file takes less than a second to Page Down,
and approximately a second to Page Up (scroll backward).  dBASE IV is slightly
slower than III+ at this because IV's BROWSE is much more powerful and 
flexible.  IV's BROWSE has pull-down menus which support file navigation
without leaving BROWSE; you can BROWSE in one window while you do other
things in other windows, and so forth.  How important is 77/100th of a 
second versus 93/100ths in an operation that is user-bound anyway?

LIST is a more useful measure of a data engine's performance because it 
involves indexed record retrieval without much screen I/O overhead.  In
contrast, BROWSE has line-drawing overhead but also pre-fetches while 
waiting for keyboard input.  If you don't think that LIST is BIG DEAL,
how about SORT?  A 1,000-record file takes 5:77 seconds to SORT in III+,
but only 4:90 seconds in IV.

Ashton-Tate is very concerned about the performance of dBASE--we may be 
conceding "the fastest" to others for now, but we are committed to being
the fastest with the most-est.  That is, there may be other vendors offerring
a subset of dBASE IV that runs faster, but no one offers you a faster IV.
We have run hundreds of benchmarks on dBASE IV and when I tell you that
IV is considerably faster than III+, I know what I'm talking about.

By the way, these timings (and the previous numbers cited) were done by
me--ad hoc--on the Compaq 386 next to my VT100.  I'm not releasing
Ashton-Tate numbers, I'm performing research that John Hayes could do
almost as easily.  All I ask is that attacks on Ashton-Tate or dBASE
employ at least a modicum of scientific method.  If you say that FoxBASE+
sorts faster than dBASE, you won't get an argument from me.  If you
maintain that III+'s data engine is slower than IV's without providing
a shred of evidence, that's something different.

/alastair/


Disclaimer: Comments about what "Ashton-Tate" is concerned about and
committed to notwithstanding, these are my opinions only and should not
reflect upon my employer in any way.  When I say performance is important
to A-T, it is from the standpoint of a day-by-day observer of the company,
nothing more.

emuleomo@yes.rutgers.edu (Emuleomo) (07/19/89)

In article  <3520004@hpindda.HP.COM> Keith Broussard writes,

>DBase IV's addition of the VALID clause to the @ SAY...GET command
>combined with a user-defined function makes my life WORLDS easier!

BIG DEAL!!

That was __Stolen__ from CLIPPER and FOXBASE+.!!!

--Emuleomo O.O. (emuleomo@yes.rutgers.edu)
-- 
** Research is what I'm doing when I dont know what I'm doing! **

emuleomo@yes.rutgers.edu (Emuleomo) (07/23/89)

In article <349@rls.UUCP> you (Randall Smith) write..

>Uh, who stole what from whom?  Althouh I use Foxbase, it seems turnabout is
>fair play.  While I'm on the subject, doesn't it seem glorious that the
>various litigants in numerous "look and feel" suits have only benifited by
etc..etc..

Hear, HEAR.
Since UDF's and Array processing came from Clipper, does it now seem very 
reasonable for A-T to be suing left,right and center?

I have hope for A-T though. Alastair Dallas (An A-T GURU) wrote that A-T
is committed to being the fastest dBASE-language vendor!!
That's great.  However I wish them luck. 


>Another for the Foxbase people.  Has anyone heard of a case where
>procedures execute and return nicely in small filtered sets, but large
>filtered sets hang in the same procedure?  That is, they do not return to
>their calling module. 

Although I don't know why you are experiencing that problem,
I DO KNOW that Filters are a VERY BAD IDEA.  They are performance HOGS.
If you remove the filter statement and simulate it, you will be SURPRISED 
how much FASTER your application will run!!!


>Emuleomo O.O. (emuleomo@yes.rutgers.edu)
-- 
** Research is what I'm doing when I dont know what I'm doing! **

jbrown@herron.uucp (Jordan Brown) (07/25/89)

emuleomo@yes.rutgers.edu (Emuleomo) writes:
> Although I don't know why you are experiencing that problem,
> I DO KNOW that Filters are a VERY BAD IDEA.  They are performance HOGS.
> If you remove the filter statement and simulate it, you will be SURPRISED 
> how much FASTER your application will run!!!

People keep saying this, and it just isn't true.  Filters are stupid, yes,
but they aren't any slower than doing the SAME STUPID THING that they do.
If you truly simulate a filter, you'll get the same speed (only slower).

Sure, if you use indexes you'll win big.  If you "know" that after
a certain point you can stop examining records you'll win big.
But for a general-purpose function with no knowlege of the behavior of
the query, filters don't do anything particularily horrible.  With some
clever query optimization they could be a lot better.  They'd probably
be buggy and require more memory too.

SET FILTER TO <cond>
LIST

should be *exactly* as fast as

LIST FOR <cond>

Similarly, 

SET FILTER TO <cond>
GO TOP
DO WHILE .NOT.EOF()
   ... process ...
   SKIP
ENDDO

should be *exactly* as fast as

LOCATE FOR <cond>
DO WHILE .NOT.EOF()
   ... process ...
   CONTINUE
ENDDO

and faster than "simulating" it by

GO TOP
DO WHILE .NOT.EOF()
   IF <cond>
      ... process ...
   ENDIF
   SKIP
ENDDO

(Which, by the way, is nothing like a full simulation as it doesn't
handle backing up, seeking, etc.)

A filter is an absolutely abysmal way to pick out a particular invoice from
a line items table.  It's not a bad way, however, to pick out all the
people in California in name order using an existing "last+first" index.

Filters are no stupider or slower than FOR clauses or LOCATE commands.
I guess people just think that because they look like they happen at
a lower level they should be magical.

(Disclaimer, sort of... I don't have anything to do with AT any more,
other than having some friends there.  I'm even a competitor in some
senses.  However, I had a fair amount to do with the initial
implementation of filters in dBASE III, and I'm tired of people griping
that filters are slow when they are certainly NO WORSE than any of the
other equivalent things in the language.  They aren't the magical
solution to all your searching needs.  They are the WRONG WAY to
do many things.  If you want to argue that filters and FOR should
do query optimization, fine, but recognize that query optimization
is still an unsolved problem and is not trivial to do.)

randy@rls.UUCP (Randall L. Smith) (08/15/89)

In article <Jul.18.20.09.45.1989.2100@yes.rutgers.edu>, emuleomo@yes.rutgers.edu (Emuleomo) writes:
> In article  <3520004@hpindda.HP.COM> Keith Broussard writes,
> >DBase IV's addition of the VALID clause to the @ SAY...GET command
> >combined with a user-defined function makes my life WORLDS easier!
> 
> BIG DEAL!!
> 
> That was __Stolen__ from CLIPPER and FOXBASE+.!!!

Uh, who stole what from whom?  Althouh I use Foxbase, it seems turnabout is
fair play.  While I'm on the subject, doesn't it seem glorious that the
various litigants in numerous "look and feel" suits have only benifited by
the expanded market that they alone could never have developed?  Ah, well. 

Um, technical type question.  How does one retrieve command line switches
for Foxbase and Ingres at execution time.  I have two applications that
have massive front end processing for integrety checks on startup.  With
command line switches, I'd like to disable that processing for testing
purposes.

Another for the Foxbase people.  Has anyone heard of a case where
procedures execute and return nicely in small filtered sets, but large
filtered sets hang in the same procedure?  That is, they do not return to
their calling module. 

Please respond via e-mail and I will summarize or return mail depending
on interest.

Cheers!

- randy

Usenet: randy@rls.uucp
Bangpath: ...<backbone>!osu-cis!rls!randy
Internet: rls!randy@tut.cis.ohio-state.edu

#disclaimer: All flames cheerfully refunded in the denomination of my choice.