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