[comp.lang.prolog] PROLOG DIGEST V6 #44

restivo@POLYA.STANFORD.EDU (Chuck Restivo) (07/12/88)

Date: Mon, 11 Jul 1988 02:53-PST
From: Chuck Restivo (The Moderator) <PROLOG-REQUEST@POLYA.STANFORD.EDU>
Reply-to: PROLOG@POLYA.STANFORD.EDU>
US-Mail: P.O. Box 4584, Stanford CA  94305
Subject: PROLOG Digest   V6 #44
To: PROLOG@POLYA.STANFORD.EDU


PROLOG Digest           Monday, 11 July 1988      Volume 6 : Issue 44

Today's Topics:
                                          Query -  dBase III,
                       Implementation - VAX/VMS Review
------------------------------------------------------------------------------------------------------------------------------

Date: 24 Jun 88 18:29:32 GMT
From: uccba!ucqais!bbeck@tut.cis.ohio-state.edu  (Bryan Beck)
Subject: Query Dbase III Plus with Turbo Prolog

I recently read an article in AI EXPERT, June 1988 written by Karl Horak about
using Turbo Prolog to query Dbase III Plus files. There were two points that
were not clearly delineated in the article, (1) How to get prolog to read the .dbf and   
how to get prolog to read the .dbt files.   

Also the article referencing  Fileman, Rick. "Memo to Character Conversion,"
Aston-Tate Inc.  TechNotes, Nov. 1987,pp 15-24.

I any one has read this article of have done anything like this, or where I can find these TechNotes.  I would greatly appreciate any additional information
about trying to do this.

Thank you.

------------------------------

Date: 29 Jun 88 14:37:22 GMT
From: mcvax!ukc!dcl-cs!simon@uunet.uu.net  (Simon Brooke)
Subject: Survey of Prologs for VMS VAX

About 10 days ago, I put out a message asking people to recommend PROLOGs
for VAX VMS. Many thanks to all those who replied. I'm posting (in case
anyone else is interested) what I learned. Brief word of explanation: I
was asked to select a PROLOG in which it would be possible to construct an
interface to a relational database mangement system, and the report is
heavily biased to reflect this need.

PROLOGs available for VAX/VMS: 

A brief review, with regard to the needs of the Savant 
project.

How systems were selected for inclusion into this report 

In order to find as many VMS compatible PROLOGs as 
possible, in the shortest possible time, I posted to the 
USENET newsgroup comp.lang.prolog, on the basis that all 
serious PROLOG developers would inevitably keep an eye on 
this. This method appears to have was only partially 
partially successful, in that it produced reviews of most 
of the systems I was already aware of, including systems I 
wasn't aware were available for VMS. However, it didn't 
produce any news of systems I don't know about, and there 
may still be some of those.

I also consulted the news section of the Journal 'Expert 
Systems', going back two years. 

What I asked for

The message which I posted asked respondents to tell me:

* What syntax it uses - especially, how like Quintus it is.
* What the 'foreign function interface' is like.
* Roughly what the performance is like.
* What the programmer's environment is like . . .
* How robust it is - and any points to watch...
* What it costs and from whom (UK supplier if possible)

The systems included

The systems which I received replies about were as follows 
(in the order I received them):

Edinburgh Prolog
Quintus Prolog (two replies)
BIM_Prolog (two replies)
Poplog

On the whole, replies were directly from implementors, and, 
although they may be somewhat more honest than promotional 
literature, cannot be considered independent.

I also have received promotional material describing

LPA Sigma Prolog

and have found a news item describing

I/F Prolog.

Experience of the systems

I have been able to play with Quintus (on Suns under Unix), 
Edinburgh (on VAX under Unix), and Poplog (on Suns under 
Unix).

Quintus

This is the only one of the systems I have any significant 
experience with. Quintus is a widely used - and in general 
widely liked - version of a vanilla flavoured Edinburgh-
syntax PROLOG. After LISP machines, the EMACS based 
development environment strikes me as so wretchedly crude 
as to be almost unusable. However, by using system editors, 
code can be developed reasonably quickly.

The system is relatively fast, and appears well thought out 
and solid. I imagine that, on a Xerox workstation, this is 
a very nice system.

Edinburgh

I have played only briefly with Edinburgh Prolog. I loaded 
in the dBAccess code, most of which ran. However, the use 
of the token 'not' as a negation operator is apparently not 
permissible in Edinburgh prolog, and, as I did not have a 
manual, I was unable to attempt to patch this. 

There appears to be no compiler.

My feeling, however, is that it would be trivial to port to 
Edinburgh Prolog. Whether any particular development 
environment tools are supplied I can't say; but if not, 
they aren't strictly needed.

Poplog

Again, I have experimented only briefly with Poplog. My 
first impression was of quite remarkable slowness. Whilst 
the reader of the Edinburgh system skipped over the 
declarations in the (Quintus) files containing the dBAccess 
code which it could not understand (because they were 
Quintus specific), the Poplog reader aborted. Thus these 
files could not be loaded without some editing. 

Again, the syntax of 'not' differed from Quintus; in Poplog 
prolog, 'not' is a one place predicate rather than a prefix 
operator.

Once the files had been edited, they loaded satisfactorily, 
and again, very nearly ran. Again, there appeared to be no 
compiler.

Discussion

Relative performance

I don't have any good comparative figures on the relative 
performance of these systems. However, what I have is as 
follows:

Version	KLips	Hardware	KLips	Test	Syntax		Price
				/Mips
Edin	2.2 	VAX 750/Unix	3.66 	N.Rev	Edinburgh	#1000
BIM	26 	VAX 750/VMS	43.33	N.Rev	proprietary	#8150
	85 	Sun 3 		42.5	??	[Edin optional] 
Sigma	6.9 	Sun 3 		3.45	??	Lisp-based	#750 [one user]
						[Edin optional]
Quintus	60 	Sun 3	 	30	N.Rev	Edinburgh	#4200
I/F	90 	Sun 3 		45	??	Unknown		#11000
	40 	VAX 780 	??	??
Poplog	4.5	VAX 750		7.5	??	Edinburgh	#12000

As the Sun is rated at about 2 Mips, and the VAX 750 at 
0.6 Mips, this suggests that I/F may be fastest of all, 
with LPA Sigma slowest; the column KLips/Mips uses this 
estimation to try to produce a normalised speed for each 
implementation. Also, these figures come from various 
different sources, and reflect different peoples 
benchmarks; they may not be directly comparable. 

Nevertheless, the fastest PROLOGs are clearly very much 
faster than the slowest. This at least partly reflects the 
fact that some of these systems are interpreters only, 
while some have compilers. Certainly Sigma has no compiler, 
and I was unable to find one in either the Edinburgh or 
Poplog systems. Given the benchmark speeds quoted, I would 
suspect that none of these systems has a compiler, while I 
know that all the others do. 

Prices and where possible speeds have been verified with UK 
suppliers.

Foreign Function Interface

All the systems described with the exception of I/F (about 
interfaces to C. Specific claims are as follows:

Edinburgh 

"Users can supply C bodies for Prolog predicates - this is 
easy under UNIX, as the .o file can be dynamically loaded, 
but we are just now doing the decomposition to let the 
object file be linked into the executable under VMS (pardon 
any terminology errors, VMS isn't my own field)" (source: 
Correspondence with implementor)

BIM: 

"BIM_Prolog has a complete interface to all procedural 
languages which create a standard VAX/VMS object file. 
Examples of C and Fortran are delivered with the 
distribution" (source: Correspondence from BIM 
representative)

"BIM_Prolog has an external language interface, although it 
has no dynamic linking: it means that you can link into the 
system a package (or more than one) with C functions - or 
assembler, pascal, ada ... as long as the linker of VMS can 
link the object of BIM_Prolog to it" (source: 
correspondence with user)

LPA Sigma: 

"A simple to use 'C' language interface allows new 
facilities to be added quickly to the basic system" 
(source: promotional literature).

Quintus: 

The UNIX version of Quintus provides interfaces to C, 
Pascal, and Fortran; I have no information to hand about 
the VMS version. (source: User Guide)

I/F: no information

Poplog: 

The Poplog environment includes LISP, POP-11, and 
optionally ML in addition to Prolog, and all these can be 
integrated. Additionally, "....you can link in C, Fortran, 
or whatever" (source: correspondence from Prof Aaron 
Sloman)

Recommendations

I would not at this stage recommend I/F Prolog, as, 
although it's performance is reported to be very good, I 
don't have adequate information about it; also, it's price 
is extremely high. I would not recommend Sigma, as its 
performance is just too poor, and this generally reflects 
my experience of LPA implementations - nice systems with 
dreadful performance. Also, LPA are no longer supporting 
Sigma. They plan to have a new implementation out sometime 
next year. Of the remaining systems:

Quintus 

Quintus is (I believe) the market leader; it is solid, well 
behaved and well supported, reasonably fast and not 
excessively priced.

BIM

BIM_Prolog has two primary advantages: firstly it is fast; 
secondly, it comes with a complete and working database 
interface. Although it is more expensive than Quintus, the 
benefits of a supplier supported db interface might well 
more than make up for this from Savant's point of view (of 
course, it would also put me out of a job).

Poplog

Is a very rich environment - far richer than is needed for 
the current project. Although a nice product, it is less 
suitable for our purposes than BIM, in view of its greatly 
inferior speed, and lack of database interface.

Edinburgh

Is adequate for development purposes, and is very cheap. 
The project would probably have to buy a faster system when 
the time came to construct a marketable product.

Conclusion

Edinburgh PROLOG, plus my salary for as long as it takes to 
make Edinburgh do what BIM already does, would probably add 
up to a fair proportion of the cost of BIM - for a system 
with markedly inferior performance. 

So I (were I not me) would buy BIM (I'd want to see it first) - unless a
proprietary database interface is of primary importance; in 
which case Edinburgh would do only as a cheap development 
system, with Quintus being required for serious product 
development. 

-- Simon Brooke

--------------------------------

End of PROLOG Digest