guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: extending FEM enginering package with Guile


From: Ken Anderson
Subject: Re: extending FEM enginering package with Guile
Date: Mon, 05 Jan 2004 16:32:41 -0500

One big advantage you get with Scheme that you don't get with Python, ...
is that you can easily tailor a language to better fit your library.  For a 
description of this, see the experience we've had with using Java libraries in 
JScheme:
http://ll2.ai.mit.edu/talks/bbnll2/bamby/title.html

I'm an old seismologist who did fortran and C until i found Common Lisp.
Using Guile, you might have a profound impact on your field.

k

At 04:20 PM 1/5/2004 -0300, Mario Storti wrote:

>Hi all,
>
>I'm discovering Guile, and I found it very exciting. I'm writing a GPL
>C++ Finite Element code (see http://venus.ceride.gov.ar/petscfem
>http://venus.ceride.gov.ar/twiki/bin/view/Cimec/PETScFEMResults
>http://venus.ceride.gov.ar/~mstorti/AHMED/tex/ahmed/node27.html ) and
>at a certain point I found need of a scripting language.  Basically it
>is an engineering code used for numerical simulations. The code runs
>in parallel on Beowulf clusters using MPI/PETSc (
>http://www.mcs.anl.gov/mpich , http://www.mcs.anl.gov/petsc/ ).  I
>considered several choices: Perl, Python, Octave, Guile and other
>Lisp-like languages. After evaluating the pros and cons, I'm now 90%
>decided to choose Guile. 
>
>The main pros of Guile are 
>
>* It is the extension language of the GNU Project
>* In my tests so far I had little difficulty (w.r.t. Perl, for
>      instance) in writing wrappers for the PETSc library, even if I
>      am more proficient with Perl. 
>
>The cons are
>
>* I think it will be harder for users to learn Scheme (than
>  Perl/Python for instance) (this is the main con) [1]
>* I didn't found any parallel implementations for Scheme. For GNU
>  Common Lisp I found http://www.ccs.neu.edu/home/gene/pargcl.html
>  I'm not able at this moment to assess the difficulty of doing this
>  task. (Perhaps it's trivial). 
>
>Right now, I have some very simple code wrapper for some PETSc
>functions, and so far I found relatively easy to add
>functions. Congratulations to the Guile developers!!
>
>Coming back to [1], I have to say that the intended audience are
>mainly engineers/physicists (I'm a physicist) whose programming skills
>are in Fortran, Matlab and perhaps C/C++. Some of them (very few
>indeed) know some Lisp from using AutoCAD. I know myself some Lisp
>from using Emacs, and I have learned some Scheme in recent times (with
>the scope of this extension project). 
>
>The intended usage for the users is rather basic, setting
>configuration variables, or some basic control of program execution. I
>think that for these simple tasks most users will not have problems in
>learning a new syntax ("I-have-to-learn-yet=another-syntax" :-( ). And
>they win because they learn a new language that can be used for many
>other things. I agree there. But there is one point which I find too
>hard, and is the looping constructs. I think that explaining to the
>users concepts like tail-call recursion, or call/cc's is an
>overkill. I'm not speculating here, I have talked with many of them
>(those with better programming skills).  Perhaps such things may be
>used by the developers, but definitely not by the average user. There
>is the `while' special form, but even with this some simple looping
>constructs, like the following in C/C++
>
>while (cond0) {
>      // body1 0;
>      // ...
>      if (cond1) break;
>      // body 1
>      // ...
>      if (cond2) continue;
>      // body 2
>      // ...      
>}
>
>are hard to write, due to the lack of `break' and `continue' in
>Scheme. I think that one can do that with catch/throw bu it also seems
>an overkill. I found some flame wars between some other Lisp dialects
>and Scheme and I anticipate that I'm not interested in starting such a
>discussion. So:
>
>Question 1: I ask simply if there is some simple way of writing code
>like this previous one in Scheme. 
>
>Question 2: I have learned that in Scheme it is considered bad
>practice to `set!' variables, or in general to use side-effects. In
>our applications we manipulate huge structures (mainly vectors, sparse
>matrices, graphs, with sizes in the order of several hundredths MBs,
>and running for weeks), and it seems much more efficient to code this way
>(using side-effects). Am I right?
>
>Question 3: Does anyone knows of some previous development regarding
>Guile/Scheme in a parallel environment? (I mean using message
>passing). 
>
>Best regards,
>
>Mario
>
>-------------------------
>Mario Alberto Storti
>Centro Internacional de Metodos Computacionales
>  en Ingenieria - CIMEC (INTEC/CONICET-UNL)
>INTEC, Guemes 3450 - 3000 Santa Fe, Argentina
>Tel/Fax: +54-342-4511594
>e-mail: address@hidden
>http://www.cimec.org.ar/mstorti, http://www.cimec.org.ar
>-------------------------
>
>
>
>_______________________________________________
>Guile-user mailing list
>address@hidden
>http://mail.gnu.org/mailman/listinfo/guile-user





reply via email to

[Prev in Thread] Current Thread [Next in Thread]