Im just wondering if the Poplog community is still active. I see
there is recent activity in the free Poplog implementation. I would
like to know if Poplog can be used as a general purpose programming
language for writing commercial applications. What about a #poplog
channel on IRC :) Does Poplog have a good FFI and performance? How
efficiently is Poplog implemented and what data structures does it
provide? Can Poplog still compete against all the younger more used
programming environments?
Thanks everyone
I'm sure you will get a better answer about free poplog from someone
else, so I'll leave that for them.
There is also a smaller "open poplog" project (which is also free). The
main openpoplog web site has not been updated for a long time, but we
are still active (we're just very slow, with other interests as well).
We aim to remain compatible with Free Poplog, but want to explore
different directions in which Poplog could develop.
I'm currently using the FFI to build a modern GUI for the Windows
version of Poplog - which has lagged a bit behind the Linux versions.
I'm quite pleased with what I've got so far, but I haven't worked on it
since 31st March, so I don't know when it will be ready for release.
The Windows FFI interface is basically to C (rather than C++) or
Fortran, but that's no worse than many other packages, because of the
name-mangling which C++ compilers have to perform. It's simply a matter
of writing C stubs if you want to interface to C++. There are Poplog
data structures specifically intended to make this easier to use (e.g.
strings in Poplog are null-terminated, so they can be passed directly
to C without needing to copy them, even though there is no need in
Poplog for them to be null-terminated).
A friend has started on an ODBC interface - although he is a bit busy at
the moment so I'm not sure how much progress he has made.
Poplog itself provides the full set of usual data structures, including
a powerful set of OO extensions. It's fast enough, and very stable. It
has been used for many commercial applications (I expect someone will
post a list).
My own feeling - and that of some friends - is that Poplog would benefit
from modernising the environment. Some things we take for granted in a
modern IDE have not (yet) been implemented, although there is no reason
why they couldn't be: it's merely a matter of an existing user wanting
them enough to implement them. Poplog is very extensible. (Some of us
have private libraries which are not ready to be made publicly available
for some of these features - if there is a feature you miss, let us know
in this newsgroup what it is. Someone might already have implemented
it.)
Jonathan
> Date: Sat, 12 Apr 2008 07:06:50 -0700 (PDT)
>
> Hi everyone.
>
> Im just wondering if the Poplog community is still active. I see
> there is recent activity in the free Poplog implementation. I would
> like to know if Poplog can be used as a general purpose programming
> language for writing commercial applications. What about a #poplog
> channel on IRC :) Does Poplog have a good FFI and performance? How
> efficiently is Poplog implemented and what data structures does it
> provide?
Poplog is not a programming language, but an extendable software
development environment containing incremental compilers for several
languages:
Pop-11 (the core language, least well known)
For more information on Pop-11 see the primer
http://www.cs.bham.ac.uk/research/projects/poplog/primer/
(HTML. A PDF version is also available.)
That also gives a partial answer to the question about
datastructures provided. Pop-11 has a library called
objectclass, which provides similar functionality to the
Lisp CLOS object-oriented package, including multiple
inheritance and generic functions.
Common Lisp
Prolog
Standard ML
There is more information about poplog here:
http://www.cs.bham.ac.uk/research/projects/poplog/poplog.info.html
All those languages have been used for writing commercial
applications, the last three in stand alone environments, though
some commercial work has used two of the poplog languages (usually
Pop-11 and one other).
The best known commercial application developed in Poplog was based
mainly on Pop-11: the data-mining toolkit Clementine, developed by
ISL and then Sold to SPSS, who decided to convert it to C++/Java for
closer compatibility with all their other software. I believe some
of the flexibility/functionality was lost in the conversion.
Sometimes developing in an AI language then converting to another
language, such as C, C++ or Java, is faster and cheaper than doing
all the development in the target language.
For more on Clementine, see
http://www.spss.com/clementine/
That page claims:
One customer received a 600:1 first-year return, generating an
additional $1.8 billion in revenue, by using Clementine to reduce
non-compliance and erroneous payments, and minimize fraud and abuse.
Pop-11 has also been used (and in a few places is still being used)
to teach AI programming and computational cognitive science, but
there is considerable pressure to use more widely known languages,
such as Java, unfortunately.
Regarding FFI
Within Poplog, each of the languages Pop-11, Common Lisp, Prolog and
ML can be combined with any of the others because they share a
common virtual machine, the Poplog virtual machine, which is
compiled to machine code for the host platform.
Poplog's foreign function interface supports communication with C,
and Fortran, as illustrated in David Young's popvision toolkit:
http://www.cs.bham.ac.uk/research/projects/poplog/popvision
Several of the help files illustrate uses of the external interface,
e.g.:
http://www.cs.bham.ac.uk/research/projects/poplog/popvision/help/arrpack
http://www.cs.bham.ac.uk/research/projects/poplog/popvision/help/lapack
The graphical tools in poplog build on the X window libraries
written in C. Some examples are here:
http://www.cs.bham.ac.uk/research/projects/poplog/figs/rclib/
Regarding efficiency, Pop-11 will typically run a lot faster than an
interpreted AI language, because everything is compiled to machine
code (using the incremental compiler that is part of the run time
system).
However some of the flexibility of the language, including use of
universal types, run-time type checking, and ease of run-time
debugging has a cost: it is not possible to optimise the machine
code as fully as in some other languages.
That is one of the reasons why the popvision library uses pop-11 in
combination with C and Fortran. Pop-11 gives the flexibility of
development and testing, along with full access to AI language
capabilities such as pattern matching, rule-based programming, etc.
while the externally linked programs provide fast number crunching
in images.
> Can Poplog still compete against all the younger more used
> programming environments?
There are many reasons for popularity of languages including
portability, efficiency, institutional politics, availability of
text books, etc.
Poplog/Pop-11 has suffered from the fact that the Windows
implementation does not include support for graphics. When
Poplog Clementine was sold on windows it required an expensive
additional library that provided access to the X window facilities.
Nowadays systems like vmware allow poplog to be run on windows
machines, but not with full integration into windows.
Jonathan Cunningham is developing a 'native' graphical interface to
the pop11/Poplog on windows.
I assume that will eventually be contributed to the open-poplog
project:
http://www.cs.bham.ac.uk/research/projects/poplog/openpoplog.html
> A friend has started on an ODBC interface - although he is a bit busy at
> the moment so I'm not sure how much progress he has made.
I should mention, that the ODBC interface has existed since John Gibson
wrote it in 1996.
I am just re-learning how to use ODBC directly. I am wrapping it in an
objectclass hierarchy to make it easier to use for people who are more
familiar with the recordsets of Microsoft's family of DAO (data access
objects), RDO (remote data objects) and ADO (Active-X Data Objects), or
Oracle's competitor, OOO (Oracle Objects for OLE).
OpenPoplog welcomes new members, especially if they are willing to
become contributors to modernising the platform.
Regards,
Jeff.
> rouan.v...@gmail.com writes:
>
> > Date: Sat, 12 Apr 2008 07:06:50 -0700 (PDT)
> >
> > Hi everyone.
> >
> > Im just wondering if the Poplog community is still active. I see
> > there is recent activity in the free Poplog implementation. I would
> > like to know if Poplog can be used as a general purpose programming
> > language for writing commercial applications. What about a #poplog
> > channel on IRC :) Does Poplog have a good FFI and performance? How
> > efficiently is Poplog implemented and what data structures does it
> > provide?
>
> Poplog is not a programming language, but an extendable software
> development environment containing incremental compilers for several
> languages:
>
> Pop-11 (the core language, least well known)
> For more information on Pop-11 see the primer
> http://www.cs.bham.ac.uk/research/projects/poplog/primer/
> (HTML. A PDF version is also available.)
> That also gives a partial answer to the question about
> datastructures provided. Pop-11 has a library called
> objectclass, which provides similar functionality to the
> Lisp CLOS object-oriented package, including multiple
> inheritance and generic functions.
More than just multiple inheritance, also multi-methods, i.e. method
despatch based on the classes of multiple arguments. This is something
lacking in Smalltalk (often considered the original OO language,
although many of the ideas were already present in Simula), and also in
languages like C++, Java etc.
[ Digression: in C++, methods are called "member functions". This
terminology doesn't make sense when methods do not belong to a
single class, as is the case with despatch on a single argument,
since the method is not a function which is a "member" of any
single class. ]
The reason multi-methods are omitted from C++ is, almost undoubtedly[*],
one of efficiency: despatch on a single argument can be done using
"v-tables".
I see no justification for this limitation in Java. Steve Leach has
explained eloquently, in the objectclass documentation, how the method
despatch mechanisms [in objectclass] have only a very small overhead,
even compared to C++ (which had maximal efficiency as a design goal).
When multi-methods are appropriate, programming around their lack is as
ungainly as trying to program in an OO style in a non-OO language.
However, I do concede that you don't /often/ need them! :-)
[*] Somewhere at home I have a copy of "The Design and Evolution of
C++" by Bjarne Stroustrup, who invented the language, but my copy
is hiding, and I can't remember whether he discusses this.
> Jonathan Cunningham is developing a 'native' graphical interface to
> the pop11/Poplog on windows.
>
> I assume that will eventually be contributed to the open-poplog
> project:
>
> http://www.cs.bham.ac.uk/research/projects/poplog/openpoplog.html
Yes.
I foresee no reason why it could not be made available on the Free
Poplog website as well, if anyone wants to do that, when it becomes
available.
Jonathan
Im looking for a Linux version of Poplog. I have downloaded "bham-
linux-poplog-v15.61.tar.gz". Is that what I need to get started?
I had a look at Open Poplog, but there seems to be a windows-only
version for now.
> Date: Sat, 12 Apr 2008 15:17:53 -0700 (PDT)
The link to the latest version of linux poplog should usually be
available from
http://www.cs.bham.ac.uk/research/projects/poplog/freepoplog.html
At present that takes you to
http://www.cs.bham.ac.uk/research/projects/poplog/v15.61/
This is a symbolic link to the same directory:
http://www.cs.bham.ac.uk/research/projects/poplog/v15.6102
If you use one of the fetch-and-install scripts from there it should
get you the latest version of 32 bit linux poplog.
Currently this is
http://www.cs.bham.ac.uk/research/projects/poplog/bham-linux-poplog-v15.61.tar.gz
which is a symbolic link to
http://www.cs.bham.ac.uk/research/projects/poplog/bham-linux-poplog-v15.61-080331.tar.gz
(ie created 31 march 2008).
If you fetch and install that, pop11 should announce itself as
Version 15.6102
(That may change if there are minor updates.)
The unpacked tar file shows dates of latest creation.
This rather messy system should be replaced with one that uses a
changing name for the tar file.
However, for that I would have to write some Make files (or pop11
scripts) to alter the fetch-and-install scripts and various other
things. At present I only change the visible version number when
there is a major development. Most recent changes have been minor
modifications to libraries in
$usepop/pop/packages
And they will not affect most users.
Most browsers should show you a listing with creation dates of tar
files, etc. in this directory:
http://www.cs.bham.ac.uk/research/projects/poplog/
I expect most people will never need to look at that.
(I really should move the tar files to a sub-directory....)
If you have directly fetched the tar.gz file and not used
a fetch-and-install script you should get this and make it
executable:
http://www.cs.bham.ac.uk/research/projects/poplog/v15.61/CHECK_LINUX_FACILITIES
Run that to find out whether you have everything installed
that you need. If it says something is missing, read the
instructions here for your version of linux.
http://www.cs.bham.ac.uk/research/projects/poplog/v15.61/
Also get this and make it executable:
http://www.cs.bham.ac.uk/research/projects/poplog/v15.61/INSTALL_BHAM_LINUX_POPLOG
If you run it without arguments it gives you instructions.
You can install poplog in the default location /usr/local/poplog
(probably requires root privileges) or anywhere else. You can link
it to use or not use motif (or Lesstif if that is what you have).
You can ask it to insert links to binary and man files in
/usr/local/bin/poplog
and
/usr/local/man/man1
That is also likely to require root privileges.
The recommended command for most users is:
./INSTALL_BHAM_LINUX_POPLOG motif bham default links > install.log
Then the install.log file can be posted if things go wrong.
On a modern PC that should take seconds rather than minutes. It
unpacks the tar file (e.g. to /usr/local/poplog ) relinks the most
basic system image, builds various saved images that can be used for
relinking and compiling, relinks the basepop11 image (if that fails,
it will try using a previously linked version). Then builds saved
images for pop11, prolog, lisp, pml and xved, updates indexes and
creates startup scripts based on the installation directory.
All that takes seconds rather than minutes on a modern PC.
You should get some test scripts in
/usr/local/poplog/current-poplog/bin/demos/
or in the corresponding location if you don't use the default
poplog directory.
Common problems starting poplog with saved images nowadays come from
new default security settings especially on Redhat, CentOS and
Fedora systems. I have tried to make the installation scripts detect
the situation and redefine commands with aliases using 'setarch'.
E.g. pop11 is aliased to
setarch i386 -R pop11
(I may have missed some commands that need to be redefined.)
There is probably a better solution, but that will need someone with
more knowledge than I have.
However, you may not need that, e.g. if you are using ubuntu, suse,
etc.
There is huge amount of documentation in teach, help, and ref files,
and a lot of tutorial files and libraries. What you will need
depends on how experinced a programmer you are and what you want to
do.
Examples of what you can do with the SimAgent toolkit can be found
here:
http://www.cs.bham.ac.uk/research/projects/poplog/figs/simagent
Examples of what you can do with the RCLIB graphical extension (used
by SimAgent) can be found here:
http://www.cs.bham.ac.uk/research/projects/poplog/figs/rclib
Have fun.