Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!rutgers!ames!cit-vax!newton From: newton@cit-vax.Caltech.Edu (Mike Newton) Newsgroups: comp.lang.prolog Subject: Re: How do you like Turbo-Prolog? - (nf) Message-ID: <1974@cit-vax.Caltech.Edu> Date: Sun, 8-Mar-87 03:19:30 EST Article-I.D.: cit-vax.1974 Posted: Sun Mar 8 03:19:30 1987 Date-Received: Mon, 9-Mar-87 03:14:51 EST References: <426@thumper.UUCP> <7000002@iaoobelix.UUCP> <1973@cit-vax.Caltech.Edu> Reply-To: newton@cit-vax.UUCP (Mike Newton) Organization: California Institute of Technology Lines: 68 Keywords: Turbo Pascal Prolog [This is a review of Turbo Prolog sent out in response to Peter Alfke's recent comments on net.lang.prolog. The review was originally sent to the AI-DIGEST many months ago, but I believe that net.lang.prolog would also be a good place for it!] [Also, in response to Peter's comments about the speed of the vax -- Cprolog runs on all of our suns, at (*real*) speeds (see notes below) that are much better than Turbo's] [ Caveats to remember when reading this review: I have *not* read all of the manual, nor used it on many programs. Views expressed are from the perspective of someone who has done the code generation and evaluatable predicates for a high speed (~900 KLips on one processor of a IBM 3090) prolog compiler. I have no affiliation with Borland, and only a (*very*) indirect affiliation with IBM -- MON] From a local software store we purchased Turbo Prolog over the weekend. It came as a cellophane wrapped book with a couple of floppies. It cost $69.95, list of $99. The enviromnent was very nice. There was a window for the editor, goals debugging information and messages. This seemed well done, and responded reasonably well (I am not used to IBM-PC's.) The unfortunate part was the Pascal-ization of the language. Everything had to be typed (they called it domains). As far as I could tell, lists had to be composed soley of other lists or elements all of one type. One had to define the possible terms (giving the functor) that could be arguments to a predicate. It seemed impossible to write generic predicates for dealing with arbitrary types of terms. Ex: to have a term that could be a 'symbol' (atom) or an integer one had to do this: domains aori = a(atom) or i(integer) It was not possible to just use an atom or an integer as a subterm... Typing each subterm of a term is not my idea of Prolog. After about an hour we got the 'standard' timing example of naive reverse running (Some people have used other, non-environment-creating samples. This is an unfair comparison). It did 496 unifications in aproximately 11/100 of a second. This amounts to a speed of a little under 5 Klips. Considering that they do not need to do 'real' unification (since everything is pre-typed, and thus can be reduced to a simple test), this speed is not particularly impressive. Also, and most seriously (thanks to Fernando Pereira) there are two more *MAJOR* problems: the logical variable doesn't really exist: it is a runtime error to do variable-to-variable unifications as in p(X,X). ?- p(X,Y), p(X,a). And, it is not possible to assert clauses with variables. In summary, I would say that there advertising is at best a misrepresentation. They are not selling a 'Prolog' system! (If I owned a TM on the word 'Prolog', I would be tempted to sue them!) newton@cit-vax.caltech.edu {ucbvax!cithep,amdahl}!cit-vax!newton Caltech 256-80 818-356-6771 (afternoons,nights) Pasadena CA 91125 Beach Bums Anonymous, Pasadena President "Life's a beach, then you graduate"