[comp.databases] Clarion Professional Developer

wiz@wiznet.UUCP (Kean Johnston) (08/19/90)

To start off with, I'm not sure which platform this conference addresses, but
since it isn't a comp.UNIX.databases, I am assuming that I won't step on any
Unix nuts toes by talking about a DOS product.

The product I wish to draw your attention to is the Clarion Professional
Developer, by the Clarion Software Corporation, 150 East Sample Road, Pompano
Beach, Florida 33064, Tel 305-785-4555, Fax 305-946-1650.

Let me preface this review with the statement that never, in all the years that
I have had any experience with database tools, have I been as impressed with a
product. I am quite frankly of the opinion that Clarion is the perfect product.
I was so impressed with my pirate copy (yes, I actually admit it :-)) that I
rushed out and purchased a copy. Not that I actually NEEDED to, the on-line
help is so good and comprehensive, that it covers all but the nastiest of
topics.

However, let me back up a bit and explain what Clarion is: Clarion is a data-
base design and and prototyping tool, to put it simply. Clarion allows you to
quickly and easily prototype relational database systems. From a single screen
you can create a plethora of database files for your system, and then go and
fill in all the fields for these files. This design display tells you at a
glance what files you have defined, and when you are editing the fields of a
file, it displays in a neat and logical fashion the fields and file indeces.

As a prototyping tool, Clarion is not a fore-runner. However, it is so quick
and simple to change your mind that using Clarion as a prototyping tools can
make your life a little simpler.

Once you have your basic file structure and field format done, you are
ready to define a full-scale application. You can create menus, tables(more
on tables later), data entry forms, reports, and you can even make provision
in your application layout for external programs and Clarion modules. The
format in which the application is presented is quite intuitive: You get an
overall picture of the application by means of a tree disgram of the
application, with any procedures which you have not completed marked as
"ToDo" items. Thus, with very few keystrokes, you can see exactly where
you are in an application, and how much you have still to do.

While designing menus,tables,forms and reports, you use a very flexible
screen painter, which allows you to totally control the appearance of your
screens and reports. Changing your mind is trivial: you can move fields or
blocks of text, copy from one place on screen to another, paint areas of
the screen, draw lines, and you can even import screens or reports from
other applications.

Once you have completed the layout of your application, and you have defined
all your tables,reports,forms and menus, you then let Clarion go and write
the necessary source code for your application. This is not very quick, but
the source code generator id clever enough to change only those modules
which NEED changing, unless any globals have changed, in which case the
entire application is re-written. Even at this level you have total control
over Clarion. The Designer (the program which lets you design screens and
applications) uses a "model" file, and this model file controls how Clarion
writes its source code. If you don't like the style of the code it generates,
then you simply change the model file, and from that point on, all the code
looks as you specified.

The result of about 2 hours work with Clarion, with no documentation, was a
name and address databases, with related databases in which I could store
things like, books lent to the person, (the book titles were maintained in a
separate database, and appear as a pop-up list), the last time the person was
contacted, and a memo field for each person in the database. The user inter-
face is something to be marvelled at for so little work. It looks really neat
and professional, and every field in every database had a help field attached
to it, so the user could get help at any stage (although hitting F1 would
just pop up a "No-help" available message, as I hadn't designed the help
screens yet).

Clarion can generate stand-alone executables which you can distribute
royalty-free to your customers, or you can have your application use the
RTLink run-time library, the choice is yours. The executable size is not
small, but then the programs do a lot!

As regards speed, well, Clarion REALLY impressed me here. Until I found
Clarion, all our heavy-duty DBMS's were written in C, using Faircom's c-tree
file handler, which is probably one of the fastest database engines availible
today. Our low-grade stuff was done in Paradox. Because I have been spoiled
by c-tree's speed, I was expecting another Paradox type snail, which would
take 13 seconds to scan a 100 000 record database. But boy, was I in for a
BIG surprise, when Clarion actually performed AS FAST AS c-tree! I was so
impressed that I immediately smelt a rat, and looked int he Clarion library
and lo and behold, there were c-tree's low-level index function names. This
is not to say that Clarion DOES use c-tree, the tech-support people denied
it emphatically when I asked them, but it does make you raise your eyebrows.

So, just how fast is Clarion? To give you an indication, when we tested
Clarion against Paradox 3.01, which is reputed to be one of the fastest PC
databases around, Paradox didn't even come CLOSE to Clarion. The way we
did the test was to create, in the respective languages, a program which would
generate a database of 100 000 records, each of which consisted of 1 six
character, randomly generated surname, and a 4 character first name field.
The databases were indexed on the surname. To test the speed of the database
indexing, we searched for the first surname beginning with an A, then the first
Z, then the first N. This gives the two extremes of the index, and the middle.
Paradox took over 13 seconds to get to the Z, and about 7 seconds to get to
the first N. (I don't know how to time these things exactly). Clarion was ...
wait for it ... KEYPRESS TIME! As I hit the Z, there first surname to begin
with a Z appeared. And, just so I could boast about the speed of Clarion,
I then created a 250 000 record database and the speed was NO DIFFERENT!
This thing REEKS of power.

So many things about Clarion stick out above the rest of the competition.
Their use of database "tables" for example. These tables are basically
"browse windows" into your database. A table usually contains an abbreviated
entry from the database to which it is attached, which allows the user to
scroll through the database until he finds the record he wished to delete
or edit. In a table you can set up a "locator", which will search the defined
index for any matching entry that the user types. The way THIS is done is also
pretty niffty. As an example, in the surname and first name database, I set up
a table with those two fields in it, and a locator for the surname. Then,
to find the surname "JOHNS" as an example, I press the 'J' key. The first
entry which begins with a J is brought to the top of the table. Then I hit
the 'O', and the first surname to begin with JO appears, and so you go on,
until you are within range of the surname you desire, at which stage you
can scroll down the table until the desired entry is highlighted. Users just
love this sort of thing, as it makes searching so easy and quick.

Now that I have had the documentation for a while and I have had a chance
to play with the language itself, I am quite convinced that Clarion has all
it will ever need to kick Paradox and dBASE right out the water. That is, of
course, if Clarion start marketing their product properly. The language is
different to anything else you have seen, but once you are used to it, it
makes a lot of sense. The Clarion Editor is a marvel as well. From within
the editor you can call up a screen or report painter, design the screen in
your editor, and all the source gets written directly into your editor buffer.
From there you can fine-tune it if you wish, or you can get on with writing
support code of the screen or report. This is only necessary, of course, if
you are doing something very nasty which you can't do from within the Designer.

All in all, Clarion is the most professional looking program I have seen in
this market. Clarion Software have thought of just about everything that a
programmer would need to make his life easier. The result of very little
work is a professional, elegant, smooth-flowing program which your customers
will all love. The context-sensitive, hyper-linked help which you can generate
makes the application all the more professional too. The overall "feel" of a
Clarion program is that the designers must have worked for years to create
such an application. And the speed at which this is achieved is phenomenal.

So, do yourself a favour. If you need a database development environment, or
even if you just need a  database system for the office, buy a copy of Clarion.
You can run it on your network, and you will love every minute of the develop-
ment cycle.

And before anyone asks it, or accuses me of it, NO, I am NOT a Clarion
employee :-) Just a VERY satisfied customer. And for $549 from the Programmers
Shop, its a real bargain.

-- 
   Kean Johnston: wiz@wiznet.UUCP      Bang: ..!ddsw1!olsa99!tabbs!wiznet!wiz
               "I think, therefore I am" - Rene Descartes 

paul@frcs.UUCP (Paul Nash) (08/20/90)

From article <1562@wiznet.UUCP>, by wiz@wiznet.UUCP (Kean Johnston):
> Once you have completed the layout of your application, and you have defined
> all your tables,reports,forms and menus, you then let Clarion go and write
> the necessary source code for your application.

What language does it generate?  Is it (hold thumbs :-) ``C'', and if
so ...

> looked in the Clarion library
> and lo and behold, there were c-tree's low-level index function names. 

... is it portable to other machines (like Unix boxes)? It sounds as
though there is a special run-time library needed (not surprising!).
Do you know whether this is available in source form, for other machines,
or could be developed for other machines?  This could be a nice way
to cross-develop databane systems ...
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Paul Nash		paul@frcs.UUCP		ddsw1!proxima!frcs!paul

wiz@wiznet.UUCP (Kean Johnston) (08/22/90)

From article <54@frcs.UUCP>, by paul@frcs.UUCP (Paul Nash):
> What language does it generate?  Is it (hold thumbs :-) ``C'', and if
> so ...
Unfortunately not - I writes the applications in its own language which you
then compile and translate into a raw .EXE file. As yet, Clarion has no
Unix version, but they are working on it in the background. I spoke to one
of the international sales ladies at Clarion, and she said that they did
have plans on releasing a Unix version once they had completed version 3.0
of the designer. Thy are also working on a GUI version so that it will run
on Macs and (I think) under Windows. Don't quote me though :-)

> ... is it portable to other machines (like Unix boxes)? It sounds as
> though there is a special run-time library needed (not surprising!).
> Do you know whether this is available in source form, for other machines,
> or could be developed for other machines?  This could be a nice way
> to cross-develop databane systems ...
Again, no go. Right now it is a purely DOS product.

-- 
   Kean Johnston: wiz@wiznet.UUCP      Bang: ..!ddsw1!olsa99!tabbs!wiznet!wiz
               "I think, therefore I am" - Rene Descartes 

wiz@wiznet.UUCP (Kean Johnston) (08/22/90)

Here is a copy of a reply to some mail concerning Clarion which may answer
some questions yet unasked ...

From wiz Wed Aug 22 14:02:04 1990
Subject: Re: Clarion DBMS
To: ddsw1!riacs!rutgers!mona.jpl.nasa.gov!khioe (Kent Hioe)
Date: Wed, 22 Aug 90 14:02:04 GMT
From: Kean Johnston <wiz@wiznet.UUCP>
In-Reply-To: <9008212148.AA06884@mona.Jpl.Nasa.Gov>; from "Kent Hioe" at Aug 21, 90 2:48 pm
X-Mailer: ELM [version 2.3 PL0]

> I am currently searching for a good data base that can support the following 
> features:
> 
> 1. muti-user.
> 2. record locking for multi-user environment.
> 3. support LAN (NOVELL or 3COM, or other LAN).
Clarion uses a very neat feature called "MODELS" when it generates your source
code for you. Proviced standard with Clarion is a NETWORK model file, which
has full support for record and file locking. As regards data security on a
LAN, or in fact with ANY Clarion application, you can set an owner password
on a file which makes the file invisible to external Clarion applications
like the Scanner (which views data in its raw format). Using these passwords
and making a safe, secure LAN, you can pretty much guarantee the security of
your data.

> 4. support programming feature like Dbase langauge ( not necessarily dBASE
>    compatible).
Clarion has its own language, in which you can manually write your programs.
However, the Clarion Designer offers so much power and flexibility, that in
a VERY large application which I have written in Clarion, I have only had to
write about 40 lines of code manually, and that was for setting up tables
and doing program serialisation. The language is unlike anything you have
seen before, but it is nonetheless very powerful once you get into it.

> 5. menu style.
This is where Clarion stands out head and shoulders above the rest. The
professional look of the programs you can create is unlike anything I have
seen in any other DBMS. You have full control over the screen, as well as a
very neat feature called a "transparrent" attribute. This allows you to
create a help screen, for example, which will have a transparent region
which overlays a data entry field. The result of this is that when the
user presses F1 for help, you can build your help around the field he is
entering. He can then see, in the middle of the help text, the data that
he has entered. This REALLY impresses the users :-)

> 6. Data entry control key:
>    - redefine exit key during data entry mode.
>    - browse record at particuler fields.
>    - help key.
>    - support function key.
>    - field validation.
Again, using the model file to customise the source code generation, you
can assign any key to do anything you wish. By default, the keys are
pretty logical: INS adds a record, DEL deletes one, ESC backs you up a field
CTRL-ENTER does a "screen accept" CTRL-ESC does a screen abort. From within
the designer you can define up to 3 hot-keys which can execute any function
you specify, be it a Clarion Designer function or something you have written
externally.
With regards to browsers, when you set up your browse tables, you can select
any fields you like. If you use the "locator" feature (see original review),
then this field MUSt be the field which forms part of an index, but all other
fields are optional. You can even display fields from other databases in 
a table, as well as doing computed fields, total fields, and lookups into
other databases.
The help key is by default the F1 key, and unless you are a WordPerfect fan
you would want to leave this as it is. However, you can assign it to anything
you like bu modifying one single EQUATE value.
I'm not sure what you mean by "support function key", but as I have just said,
you can assign hot-keys to any form or indeed any part of the program. From
within the designer, you are limited to 3 hot-keys per form, table or menu,
but if you are writting the code manually, I don't think there is any limit.
With regard to field validation, you can set any field to be a compulsory
field, or you can write in your own code for field validation and sanity
checks.

> 7. support external routine (written in C language).
Yes, this you can do, but you are limited in the complexity of the C you
want to link in. You can not link in any C code which relies on the C 
startup code, as Clarion itself already has C startup code, and you can
immagine the confusion that will reign if you have two run-times running.
However, it is my experience that just about everything can be written in
Clarion's language. I have linked in an external module which I use to
serialise copies of my program, and it works well. I initially had a problem
when using Microsoft C, but when converting to Turbo C (which is what Clarion
was written in after all), I had no problems. Another work-around is to get
the compiler to generate the assembler instructions for your C, and then
remove all the "obnoxious" run-time stuff. A long way around the problem,
but it works :-)

> 8. produce .EXE file.
Yes, Clarion produces EXE files without a hitch. This is how I distribute my
application. You can also distribute applications in Clarions's compiled
format and provide the Clarion run-time module, but producing EXEs makes the
application faster.

> 9. multiple index files and automatic update.
This is what makes Clarion so fast. All files can have multiple indices and
keys, and these keys/indices can be composite keys, IE use multiple fields
for the key value. The way Clarion differentiates between an INDEX and a KEY
is thus: An index if automatically updated every time you add a record. A key
file must be built using the BUILD command. This gives you control of the
index generation.
> Kent Hioe
> khioe@mona.jpl.nasa.gov

I hope this answers your questions. I will be posting this to the net as
well, as I'm sure it will answer others user's questions as well.
Regards,

-- 
   Kean Johnston: wiz@wiznet.UUCP      Bang: ..!ddsw1!olsa99!tabbs!wiznet!wiz
               "I think, therefore I am" - Rene Descartes 

todd@slammer.UUCP (Todd Merriman) (08/23/90)

In article <1562@wiznet.UUCP> wiz@wiznet.UUCP (Kean Johnston) writes:
> 
> [ praise be to Clarion ]
>

I, too, just bought Clarion and have a somewhat different view of how
well the product was done.

I have only used the application code generator as I am not interested
in learning the database language (unless I absolutely have to).  The
code generator, "Designer,"  is easy to use, but it is difficult to do some
things because the documentation is poorly written.  In fact, if it
weren't for the on-line help, you'd be lost.  I have other experience with
application generators using DataEase (MSDOS) and Unify (Unix), and they both
blow Clarion away with regards to both functionality and quality of 
documentation.  The underlying architecture of Clarion is awkward and 
unconventional, which makes it unintuitive to use.  The lack of 
intuitiveness and poor documentation means that it will be difficult 
to learn its ins and outs.

You had better shop around before you make the kind of investment
that these kinds of packages require.

   Todd Merriman
   Software Toolz, Inc.
   8030 Pooles Mill Dr., Ball Ground, GA 30107-9610
   todd@slammer.UUCP, V-mail (800) 869-3878, (404) 889-8264

cortesi@infmx.UUCP (David Cortesi) (08/23/90)

In article <1562@wiznet.UUCP> wiz@wiznet.UUCP (Kean Johnston) writes:
>The product I wish to draw your attention to is the Clarion Professional
>Developer, by the Clarion Software Corporation, 150 East Sample Road, Pompano
>Beach, Florida 33064, Tel 305-785-4555, Fax 305-946-1650.
> [ ... ]
>As regards speed, well, Clarion REALLY impressed me here [...] The way we
>did the test was to create, in the respective languages, a program which would
>generate a database of 100 000 records, each of which consisted of 1 six
>character, randomly generated surname, and a 4 character first name field.
>The databases were indexed on the surname. To test the speed of the database
>indexing, we searched for the first surname beginning with an A, then the first
>Z, then the first N. This gives the two extremes of the index, and the middle.
>Paradox took over 13 seconds to get to the Z, and about 7 seconds to get to
>the first N. (I don't know how to time these things exactly). Clarion was ...
>wait for it ... KEYPRESS TIME! [...]
>I then created a 250 000 record database and the speed was NO DIFFERENT!

Seems to me you are making a lot out of a rather undemanding performance
test.  As usually implemented, an inverted index is a B-tree, and to 
look up ANY given key should entail reading no more than d+1 disk pages,
where d is the depth of the tree and the "+1" is for reading the page
that contains the target row.

Lessee: speculate that a disk page is 512 bytes (common in DOS) and that
allowing for overhead there are roughly 40, 6-byte keys per leaf page.
There would be about 2,500 leaf pages in your index. The next level would
have about 65 pages, then two, then the root, so d=4. The first probe for
an arbitrary row should take 5 disk reads, and all subsequent ones should
take either 3 or 2 depending on whether an intermediate page is cached.
So the response time should consistently be the time to do 3 longish
seeks on your hard disk, or roughly "chk-chk-chk-blink."  I cannot imagine
what Paradox is doing that takes multiple seconds.

To verify my guesses, I ran a comparable test using Informix OnLine
executing in a Sun 3/80 (M68030, not a SPARC) with a local SCSI drive.
I made up a dbload file to your recipe (actually I used unix tools to
make up the file from the contents of /usr/dict/words), 100572 unique
rows in all.

You didn't mention how long it took to load this table.  In my setup,
it took 4 min 15 sec to load the table without an index in place, and
an additional 3 min 40 sec to create the index afterward.

As I expected, the execution time for
	SELECT * FROM test_table WHERE lname MATCHES "A*"
(or "Z*" or any other initial letter) was between 1 and 2 seconds.
This is the time to find and display the first screen of 20 matching rows.
I do not intend this as bragging; I would have serious reservations about
any database that didn't do as well on this not-very-difficult test.
This Clarion sounds nice, but with respect to performance you should
maybe test it more thoroughly and compare to better competitors.

	

jstuart@kentvax.kent.edu (Jeff Stuart) (08/23/90)

In article <54@frcs.UUCP> paul@frcs.UUCP (Paul Nash) writes:
>What language does it generate?  Is it (hold thumbs :-) ``C'', and if
>so ...
No.  The language is Clarion's own.
>... is it portable to other machines (like Unix boxes)? It sounds as
>though there is a special run-time library needed (not surprising!).
Not at this time.  The orignal author also mentioned the real LACK of
advertising by Clarion Software but if you call them, (sorry I don't
remember the number off hand) they will send you their current
newsletter.  I have worked with Clarion's product for the past two and a
half years and have been REALLY impressed with it.  Unfortunatly my
current job does not use PC's so we can't use Clarion :-(
(We are using Accell and Unify Aghhh.) .  I am curious as to how many
people are using clarion out there and what it is being used
for.  If you are using clarion would you please send me your name, how
long you have been using it and what you are using it for.  I'll start off with
myself.  I am Jeff Stuart, I have been using clarion for the past two and a half
years, and my previous job we used to write an appraisal package.  Please send
it in email to either the address above or to jstuart@math-cs.kent.edu.
--
Jeff Stuart			Internet: kentba!jstuart@math-cs.kent.edu
Kent State University		UUCP    : ...!uunet!telxon!teleng!kentba!jstuart
Kent, Ohio 44449		(216) 672-3282
#include std.disclaimer

jstuart@kentvax.kent.edu (Jeff Stuart) (08/25/90)

In article <1564@wiznet.UUCP> wiz@wiznet.UUCP (Kean Johnston) writes:
>I'm not sure what you mean by "support function key", but as I have just said,
>you can assign hot-keys to any form or indeed any part of the program. From
>within the designer, you are limited to 3 hot-keys per form, table or menu,
>but if you are writting the code manually, I don't think there is any limit.
At least with version 2.0 and probally version 2.1 you can have at most 16
keys or key ranges alerted.  A key range is basiclly a range of keys like F1 to
F10.  The alert is used so that in the code you can automaticlly check to see if
a certain key was pressed.  If I remember correctly ( I ought to but I probably
don't, I spent over 2 years working with clarion! ) you can also
check for more than 16 keys or key ranges.
>
>> 9. multiple index files and automatic update.
>This is what makes Clarion so fast. All files can have multiple indices and
>keys, and these keys/indices can be composite keys, IE use multiple fields
>for the key value. The way Clarion differentiates between an INDEX and a KEY
>is thus: An index if automatically updated every time you add a record. A key
             ^^^^^
This should be a key.  You have them mixed up.
>> Kent Hioe
>> khioe@mona.jpl.nasa.gov
>
>-- 
>   Kean Johnston: wiz@wiznet.UUCP      Bang: ..!ddsw1!olsa99!tabbs!wiznet!wiz
>               "I think, therefore I am" - Rene Descartes 
Hey when did Rene write that ^^^?
--
Jeff Stuart			Internet: kentba!jstuart@math-cs.kent.edu
Kent State University		UUCP    : ...!uunet!telxon!teleng!kentba!jstuart
Kent, Ohio 44449		(216) 672-3282
#include std.disclaimer

dafuller@sequent.UUCP (David Fuller) (08/28/90)

I believe that Clarion and its ilk are examples of the axiom that
expression does not necessarily imply communication.

As a Smalltalk dillitente, I have often bemoaned the lack of a 
Networked Smalltalk.  I love Smalltalk for its expressiveness in the
face of a windowed user interface and the delightful conundra it
can generate ("let's throw the system clock icon into the trash
and see what happens"), but developing a multiuser Smalltalk application
leaves me cold.  The hooks just aren't there.

I have dealt with a number of Expressive Environments.  The problem 
tends to be that they fall victim of their organization's success; that
a platform which is productive in the early phases of implementation proves
to be a problem during large-scale production.

I do not mean to bemoan fast prototyping; the ability to get something
going and ideate concepts early is crucial. But I believe that the long 
end of the software lifecycle demands tools that do not exist in the same 
quality and quantity as Things Which Generate More Code.

I believe that our tool crafting efforts are largely misplaced; that
we do not need more development tools.  We need production maintenance 
tools.  Hoorah for Clarion and its friends; but let's not get carried
away until the other 90% of the software lifecycle are similarly 
addressed.

Dave

-- 
Dave Fuller				   
Sequent Computer Systems		  Think of this as the hyper-signature.
(708) 318-0050 (humans)			  It means all things to all people.
dafuller@sequent.com