[comp.lang.prolog] Turbo Prolog

cameron@elecvax.UUCP (08/18/87)

I'm posting this for a friend. Replies by email please.
	- Cameron Simpson
-------------------------------------------------------------------------------
Information on TurboProlog

Can anyone supply me with figures on how successful Turbo Prolog is? 
Specifically, how many units has it sold?  where? how much income?
If the figures come from some article/news item, could that reference be 
passed along as well?

Thanking you in advance...

Tim (there are some who call me $1) Menzies
-------------------------------------------------------------------------------
ACSnet:	cameron@elecvax.eecs.unsw.oz	JANET: elecvax.eecs.unsw.oz!cameron@ukc
CSNET:	cameron@elecvax.oz		BITNET:	cameron%elecvax.oz@CSNET-RELAY
UUCP:	...!seismo!munnari!elecvax.eecs.unsw.oz!cameron
     or	munnari!elecvax.eecs.unsw.oz!cameron@seismo.css.gov
ARPA:	cameron%elecvax.eecs.unsw.oz@seismo.css.gov
-------------------------------------------------------------------------------

king@dciem.UUCP (Stephen King) (12/08/87)

/**/
	I have been interested in Prolog for some time, but only recently
have I been able to try my hand at programming, due to the lack of Prolog
for the Amiga (sigh). Now, however, I have been experimenting with Borland's
Turbo Prolog on the GRiD, and I have a few questions:
	1) Is there a generally recognized 'best' Prolog for the PC?
	2) Is it a compiler, is it expensive? (Turbo is a compiler, cheap)
	3) does it support calling C functions? (Turbo does)
	4) does it include the clause() and call() clauses? (Turbo does not)
	5) how rough is the PD C-Prolog?
	6) how about prolog for the Amiga? (drool)
Thankyou for your comments, flames welcome (ward off frostbite :-) ...sjk

-- 
 * Defence & Civil Institute *		...!utzoo!dciem!king 
 * of Environmental Medicine *		Stephen J King
- Simulation & Training Group -		(416) 635-2149

byu@csri.toronto.edu (Benjamin Yu) (09/30/89)

In article <2181@munnari.oz.au> ok@cs.mu.oz.au (Richard O'Keefe) writes:
# In article <10822@eerie.acsu.Buffalo.EDU>, axaris@cs.buffalo.edu (Vassilios Axaris) writes:
# > I have been surprized when I first got my Turbo Prolog compiler, in that I was
# > required to specify the type of objects being used.
# 
# In short, you were surprised to discover that what you got was NOT a
# Prolog compiler, but a compiler for another (closely related, but still
# OTHER) language.

Can someone enlighten or remind me of what so terrible a thing which Borland
has done in Turbo Prolog??  I am sure this has been discussed sometime ago,
but I like to know some of the issues before I decide on the Prolog system
to use for a course.


Benjamin Yu
University of Toronto                CSNET, UUCP, BITNET: 
Department of Computer Science         byu@csri.toronto.edu
Toronto, Ontario   Canada M5S 1A4      {uunet,watmath}!csri.utoronto.edu!byu
(o) (416) 978 - 4299                 (h) (416) 470 - 8206

ok@cs.mu.oz.au (Richard O'Keefe) (09/30/89)

In article <1989Sep29.144838.16225@jarvis.csri.toronto.edu>, byu@csri.toronto.edu (Benjamin Yu) writes:
: In article <2181@munnari.oz.au> ok@cs.mu.oz.au (Richard O'Keefe) writes:
: # In short, you were surprised to discover that what you got was NOT a
: # Prolog compiler, but a compiler for another (closely related, but still
: # OTHER) language.
: 
: Can someone enlighten or remind me of what so terrible a thing which Borland
: has done in Turbo Prolog??

Nobody said that the authors of the program which Borland bought and market
as Turbo Prolog did anything TERRIBLE.  The claim is simply that it is
sufficiently different from ``Prolog'' that it is best regarded as another
language.  You can write non-trivial programs which work in both SICStus
Prolog and LPA Mac Prolog; you have to work at it, but you can do it.  But
you cannot lift a Prolog program out of a book like "The Art of Prolog"
and expect it to work in Turbo Prolog; you'll have to do a lot of editing.
And you cannot take a Turbo Prolog program and run it unchanged in a Prolog
system.

The major difference is that Prolog was designed to be an interactive
language like Lisp; you can easily add to and change a running program.
Turbo Prolog was designed to be statically compiled like Pascal.  Prolog
programs can easily manipulate other Prolog programs:  read(Term) can be
used to read clauses, for example.

-- 
GNUs are more derived than other extant alcelaphines,| Richard A. O'Keefe
such as bonteboks, and show up later in the fossil   | visiting Melbourne
record than less highly derived species.  (Eldredge) | ok@munmurra.cs.mu.OZ.au

bradley@cs.utexas.edu (Bradley L. Richards) (10/01/89)

 >Can someone enlighten or remind me of what so terrible a thing which Borland
>Can someone enlighten or remind me of what so terrible a thing which Borland
>has done in Turbo Prolog??  I am sure this has been discussed sometime ago,

The primary problem (from my view) is that programs cannot assert and
retract program clauses.  The typing can be a problem if you aren't used
to it, but in the end is probably a good feature.  But without the ability
for a program to change its universe, a whole class of logic programs goes
out the window.

brad

garym@ulysses.UUCP (Gary Murphy) (10/02/89)

In article <880@gamera.cs.utexas.edu> bradley@cs.utexas.edu (Bradley L. Richards) writes:
>
>The primary problem (from my view) is that programs cannot assert and
>retract program clauses.  The typing can be a problem if you aren't used
>to it, but in the end is probably a good feature.  But without the ability
>for a program to change its universe, a whole class of logic programs goes
>out the window.
>

TurboProlog also does not allow passing a predicate call as an argument,
removing yet another large class of applications.  Although there are
internal predicates which accept predicate arguments (such as 'trap')
there is no provision in the compiler to write new prdicates which do
the same.  In many ways, it's not Prolog, but then in many ways it's
not a serious compiler at all.

Other 'problems' are not so serious, such as the heavy reliance on .SYM
files, which require that a module compiled within a project be defined
as part of that project; to re-use a module, the source must be
recompiled with the new project's name.  On the other hand, there are
many positive sides, such as a builtin lexical scanner, a complete array
of Borland window, editor and graphics operations and some fancy tricks
at jump optimization within single-segment modules.  As a prototyping
tool for PC based applications, or as a delivery vehicle for Turbo C
I found it unsurpassed, but as a vehicle for logic programming, there
are just too many shortcomings.
-- 
     Gary Murphy - Cognos Incorporated - (613) 738-1338 x5537    
  3755 Riverside Dr - P.O. Box 9707 - Ottawa Ont - CANADA K1G 3N3
          e-mail: decvax!utzoo!dciem!nrcaer!cognos!garym         
  Cosmic Irreversibility: 1 pot T -> 1 pot P, 1 pot P /-> 1 pot T

pcampb@rhea.trl.oz.au (Peter Campbell) (05/07/90)

Hi out there.  I'm currently working on a large project written in
Turbor Prolog, Version 2.0 (Borland).  This project makes extensive uses
of databases, both global and local, being split into about 9 modules.

I have found that IMHO the internal memory management does not appear to be
working - I use a local database for some function, retract all of the
predicates within in, and then find out that the memory does not appear
to be being freed (according to the predefined storage predicate).  The
funny thing is that sometimes when I try using a different database,
when I'm finished with this the memory used by the previous database is
then freed.  This also appears to be random - I have used the same
sequence of key presses 5 times in a row once, and except for the
initial free memory at the start of the program, on every occasion the
free memory was different, according to storage.

Does anyone know
	(1) What Turbo Prolog is doing with its memory management,
	(2) How to free the memory - ideally, a predicate like
db_garbagecollect for internal (rather than its current limitation to
external) databases would be needed - or just a single call that cleans
up all available heap and stack,
	(3) Why do I appear to be getting random numbers?

Could any gurus out there post to the email address below.  I'll
summarize and sent to the net the responses if there appears to be
sufficient interest.  Thanks in advance.

----------------------------------------------------------------------
Peter K. Campbell                      |
2/M6                                   |
Telecom Research Laboratories          | Phone : 03 541 6751
P.O. Box 249                           | Fax   : 03 543 6026
Clayton 3168                           | Email : p.campbell@trl.OZ.AU
Victoria, Australia                    |
---------------------------------------------------------------------- 

pcampb@rhea.trl.oz.au (Peter Campbell) (05/08/90)

This is a repost - a fault in a local machine has caused an unknown
amount of news/mail sent out to be eaten (our machines have a poor taste
of diet :-) - apologies to anyone who has already seen this.



Hi out there.  I'm currently working on a large project written in
Turbor Prolog, Version 2.0 (Borland).  This project makes extensive uses
of databases, both global and local, being split into about 9 modules.

I have found that IMHO the internal memory management does not appear to be
working - I use a local database for some function, retract all of the
predicates within in, and then find out that the memory does not appear
to be being freed (according to the predefined storage predicate).  The
funny thing is that sometimes when I try using a different database,
when I'm finished with this the memory used by the previous database is
then freed.  This also appears to be random - I have used the same
sequence of key presses 5 times in a row once, and except for the
initial free memory at the start of the program, on every occasion the
free memory was different, according to storage.

Does anyone know
	(1) What Turbo Prolog is doing with its memory management,
	(2) How to free the memory - ideally, a predicate like
db_garbagecollect for internal (rather than its current limitation to
external) databases would be needed - or just a single call that cleans
up all available heap and stack,
	(3) Why do I appear to be getting random numbers?

Could any gurus out there post to the email address below.  I'll
summarize and sent to the net the responses if there appears to be
sufficient interest.  Thanks in advance.

----------------------------------------------------------------------
Peter K. Campbell                      |
2/M6                                   |
Telecom Research Laboratories          | Phone : + 613 541 6751
P.O. Box 249                           | Fax   : + 613 543 6026
Clayton 3168                           | Email : p.campbell@trl.OZ.AU
Victoria, Australia                    |
---------------------------------------------------------------------- 

riazm@cs.tamu.edu (Riaz Mohammad) (02/27/91)

Hello,

   I'm planning to develop an application in Prolog.
   For this I intend to use Borland's Turbo  Prolog.
   Could anyone tell me what's the latest version of
   Turbo Prolog available now. Also I would like  to
   know whether Turbo Prolog is still supported   by
   Borland.

   Response via net or e-mail is welcome.


Riaz.

  e-mail:
   
    riazm@cs.tamu.edu

  r0m9418@rigel.tamu.edu