[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon May 26 10:17:45 2001 
Subject:Re: GSL collaboration (Why do it?) 
From:Aaron Sloman See text for reply address 
Volume-ID:1010526.01 

[To reply replace "Aaron.Sloman.XX" with "A.Sloman"]

cglur@onwe.co.za writes:

> Date: 25 May 2001 07:11:08 GMT
> Organization: The South African Internet Exchange
>
> My request for explanation/example of 'gsl extension to pop-11'
> received no reply.

Apologies: I meant to reply earlier, but I am trying to do too many
things and cannot keep up with all of them as well as I'd like.

> My initial guess that it refered to greater mathematical functionality,
> is apparently wrong ?   A superficial look suggests that there's already
> substantial maths capability.

Pop-11 has quite a lot of mathematical capabilities (including
support for integers, biginters, ratios, single floats, double floats)
with some standard mathematical and trigonometric functions defined over
all of those, as described in REF NUMBERS, browsable here without Ved:

    http://www.cs.bham.ac.uk/research/poplog/doc/popref/numbers

But that's still a tiny subset of what users may require. Of course, any
required algorithms can be coded in pop-11, but that requires work, and
in some cases the resulting code might run 5 to 10 times slower than the
same thing implemented in C. (Has anyone done any speed comparisons
recently between Pop-11 and C?). People whose programs already run for
hours, or days or weeks (e.g. programs training neural nets, or doing
evolutionary exploration, etc.) could benefit a lot from the increased
speed.


What I was proposing can be compared with two things that already exist
in Pop-11:

(a) The X window system provides a large collection of utilities for
managing graphical displays along with mouse and keyboard events,
written in C. The poplog developers wrote lots of C code, and Pop-11
code to invoke the C code, along with a lot of documentation on these
facilities in $usepop/pop/x/pop/ref/ browsable without Ved in
    http://www.cs.bham.ac.uk/research/poplog/doc/popxref/

as a result of which pop-11 programmers can conveniently invoke X
utilities.

These are used in the editor XVed and the facilities described in TEACH
RC_GRAPHIC, as well as my RCLIB package (rclib.tar.gz) available from
the poplog site.

(b) David Young at Sussex University produced a library with a
collection of utilities and documentation for using or learning about AI
vision techniques.

His popvision library, browsable here
    http://www.cs.bham.ac.uk/research/poplog/popvision/
or retrievable here:
    http://www.cs.bham.ac.uk/research/poplog/popvision.tar.gz

includes a number of image manipulation programs written in C.

To make them accessible for users he has Pop-11 wrappers. The
popvision/lib/ subdirectory has a bunch of files some defining C
programs and some defining Pop-11 procedures to invoke the C programs.

E.g. if you compare these two files

http://www.cs.bham.ac.uk/research/poplog/popvision/lib/float_arrayprocs.c
http://www.cs.bham.ac.uk/research/poplog/popvision/lib/float_arrayprocs.p

The first one defines a lot of C procedures for doing things on arrays,
and the second one defines corresponding Pop-11 procedures which invoke
the C procedures. e.g.

in C:
void float_arraywtdav_mask(alpha1, alpha2, arr1, arr2, mask, arr3, n)

in Pop-11:
define float_arraywtdav_mask(alpha1, alpha2, arr1, arr2, mask, arr3) -> arr3;
    ;;; Averages arr1 and arr2 into arr3. Alpha1 is the weight attached
    ;;; to arr1 when mask is zero, and alpha2 is the weight when mask is
    ;;; non-zero.
    ;;; Rounds the results, and clips to 0 to 255

This means that people who want to use these image manipulating
procedures (a) have the algorithms already coded and (b) can get the
speed of C combined with the convenience of Pop-11.

There are also some neural net utilities available like that in
    http://www.cs.bham.ac.uk/research/poplog/neural/
    http://www.cs.bham.ac.uk/research/poplog/neural.tar.gz

The point about the GSL library is that there is a HUGE collection of
generally useful utilities coded in C. Making them easily accessible
from Pop-11 would be very useful for many applications in AI and other
fields.

> Since gsl is merely a legal consideration, what technical extensions
> was Aaron suggesting ?

I don't know what you mean by "merely a legal consideration".

Perhaps you thought I was proposing copying the algorithms into Pop-11 ?

> Apparently over time, poplog users consider it to be their main
> general-purpose language/tool ?

Some people. E.g. all my programming, email work, news reading and
posting, use of latex to write papers, creation of html files, etc. is
done in Ved, since any missing facility I can provide by writing pop-11
utilities, which will then integrate with the rest of my environment.

More people do that with Emacs, using Emacs lisp, however.

> This contrasts to what drew me to poplog: by far the best available
> (a must have) tool for AI.   I'm disapointed that the unique AI capabilities
> that poplog offers are submerged by emphasis on 'low level' considerations.

I don't understand. Where are they submerged?

AI is a huge field, using many different kinds of techniques: theorem
proving, sentence analysis, image analysis and interpretation, neural
nets, evolutionary computation, constraint propagation, symbolic problem
solving, robot-control mechanisms, etc. etc. For overviews of AI see

    http://www.cs.bham.ac.uk/~axs/courses/ai.html
    http://www.cs.bham.ac.uk/~axs/misc/aiforschools.html

Not all the GSL facilities would be equally useful for AI, but I would
expect a significant subset to be.

More importantly, if Pop-11 +GSL becomes available as a free, open
source, alternative to some expensive packages for convenient
interactive development using powerful mathematical facilities, then
perhaps a lot more people might use it and there could be a lot more
support for future developments that would benfit all users.

This would not rule out other kinds of developments. For instance work
is still continuing on the sim_agent toolkit which is also available
from the poplog site,

    http://www.cs.bham.ac.uk/~axs/cogaff/simagent.html

and is used for quite a lot of student AI projects as well as AI
research.

Incidentally, there is already quite a lot of language processing stuff
available in the contrib library, as documented in the books on Natural
Language processing by Gazdar and Mellish.

    http://www.cs.bham.ac.uk/research/poplog/contrib/nlp_book/

Making new general purpose facilities available through pop-11 is not
incompatible with parallel development work concerned with specialised
AI domains.

> PS. lets have a formal definition/proposal for the gsl extensions.

The people doing the work would certainly have to do that. In fact I
would hope that a significant amount of the work of generating Pop-11
wrappers for GSL utilities could be automated, and that would be
impossible without formalisation.

Steve Leach and Jeff Best have expressed an interest in doing this and
both are experienced software engineers, with a lot of first hand
experience of real world development.

> I stick by my (disputed) view that poplog has taken the wrong route
> in being informal:

Well feel free to make proposals for new developments to fix that, and
you may find collaborators!

>    "AI pretends to imitate humans; hence welcomes ambiguity and
>    redundancy".

What exactly are you referring to?

Incidentally a redundant and therefore more readable syntax need not be
at all ambiguous.

> Aviation wasn't advance by imitating the birds, with feathers and flapping.

A propeller is just a wing that rotates instead of flapping.

The principles of aerodynamics remain the same for aeroplanes and for
birds! (Not for jet-engines and rockets.)

cheers.

Aaron
====
Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs/ )
School of Computer Science, The University of Birmingham, B15 2TT, UK
EMAIL A.Sloman AT cs.bham.ac.uk   (ReadATas@please !)
PAPERS: http://www.cs.bham.ac.uk/research/cogaff/
FREE TOOLS: http://www.cs.bham.ac.uk/research/poplog/freepoplog.html