From: Lyle Borg-Graham
Subject: Re: Symbolic computation in NNs and GAs (was Re: Lisp versus C++ for AI. software)
Date:
Message-ID: <LYLE.96Nov14130725@cogni.ai.mit.edu>
George Van Treeck writes:
Larry Hunter wrote:
> Mr. Van Treeck,
>
> Perhaps you missed the note I posted last week in this thread describing a
> biologically accurage neural network simulator that uses symbolic rather
> than numeric calculation (QRN), and is an order of magnitude faster than and
> just as accurate as the currently most widely used system (GENESIS).
Note the discussion of the previous cross-posted notes was C++ vs.
Lisp -- not sybmolic vs. numeric programming. You could ALSO implement
the same biological algorithms using symbolic processing (pattern
matching) in C++. It would take longer to write it and debug it in
C++ than in Lisp. If you are an expert C/C++ programming and
understand code generation, register allocation and memory allocation
methods, the C/C++ version of the same algorithm will run faster.
The distinction is research/prototyping (where Lisp is better)
versus production (where C/C++ is generally better).
In "AI", in contrast to neurophysiology, speed is MUCH more
important than simply verifying a biological hypothesis. Thus,
mathematicians/statisticians would probably take the biologically
accurate model from neurophysiology you developed in Lisp to
analyze it to understand the principles in a more formally specified
manner -- abstract your work into some equations. And a computer
scientist is best at writing those equations to squeeze most NIPS
(neural instructions per second) out of the equations. And if
performance is not good enough with C/C++ and there is sufficient
market demand -- implement it in hardware (e.g., in neural chips from
Synoptics, Intel, NEC, etc.) or custom ASICs, which require the
expertise of electrical engineers.
Just to show that anything is possible, a biologically accurate neuron
simulator, Surf-Hippo, with essentially the same functionality *and*
numerical performance (with maybe a better GUI?) as GENESIS and
NEURON, has been written in CMUCL. As an aside, LISP turned out to be
a *great* development and implementation environment for this sort of
task. See http://www.eleves.ens.fr:8080/home/monier/SH.html.
Lyle
--
............................................................
Lyle Borg-Graham
Institut Alfred Fessard, CNRS
91198 Gif-sur-Yvette
FRANCE
tel: (33 1) 69 82 34 13 fax: (33 1) 69 82 34 27
_ o
/ /
. . . . . . _ _/|
From: Martin Cracauer
Subject: Re: Symbolic computation in NNs and GAs (was Re: Lisp versus C++ for AI. software)
Date:
Message-ID: <1996Nov14.171720.15480@wavehh.hanse.de>
····@ai.mit.edu (Lyle Borg-Graham) writes:
> George Van Treeck writes:
[...]
> Note the discussion of the previous cross-posted notes was C++ vs.
> Lisp -- not sybmolic vs. numeric programming. You could ALSO implement
> the same biological algorithms using symbolic processing (pattern
> matching) in C++. It would take longer to write it and debug it in
> C++ than in Lisp. If you are an expert C/C++ programming and
> understand code generation, register allocation and memory allocation
> methods, the C/C++ version of the same algorithm will run faster.
> The distinction is research/prototyping (where Lisp is better)
> versus production (where C/C++ is generally better).
[...]
>Just to show that anything is possible, a biologically accurate neuron
>simulator, Surf-Hippo, with essentially the same functionality *and*
>numerical performance (with maybe a better GUI?) as GENESIS and
>NEURON, has been written in CMUCL. As an aside, LISP turned out to be
>a *great* development and implementation environment for this sort of
>task. See http://www.eleves.ens.fr:8080/home/monier/SH.html.
To make one thing clear: There is a wide range of situations where
CMUCL generates equal or even faster code compared to C or
Fortran. These situations include many where pure brainless interation
of simple numbers happens, even bitwise operations. While I don't
claim it is easy to do so in Common Lisp, the CMU implementation helps
to achive it, by detailed compiler warnings about inefficiencies.
See http://www.cons.org/cmucl and/or my home page.
For the tasks at hand, don't forget that Common Lisp has always a
compiler at hand. Many applications of the areas discussed here can be
sped up by compiling data queries into functions. To do so in C or C++
requires to write out code, use an external compiler and make use of a
dynamic linker. In Common Lisp, you construct the function in memory
and compile it just by (compile 'funcname). See Peter Norvig's
excellent book "Paradigms of AI programming".
Martin
--
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Martin Cracauer <········@wavehh.hanse.de> http://cracauer.cons.org