Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Insight for a Free Software Project

1 view
Skip to first unread message

Scott Robert Ladd

unread,
Mar 4, 2001, 11:09:51 AM3/4/01
to
I'm creating several FREE software project, expanding greatly on the types
of code present on my web site (http://www.coyotegulch.com). The projects
will focus on algorithms and applications for cellular automata,
evolutionary computation, and astronomy.

My one remaining question: What programming language should I use?

I hope you who read this will have some insights for me. I've been out of
academia for a while, and I'm not very familiar with the types of computers
used overseas, or the current preferences in programming languages outside
commercial software development. Were I only interested in performance and
"market", I'd write a C++ Windows application and be done with it. However,
I want this code to be accessible to any programmer, amateur or
professional, from PDAs to Beowulf clusters. And I want non-programmers to
be able to use the programs with a minimum of fuss.

So my foremost concern is cross-platform portability, which leads me to
consider Java. I have various GNU-Linux and Wintel systems for development,
but I'd like to see these projects run almost anywhere. Java is also
appealing due to its support for a portable graphical user interface.

Java is not without its difficulties, however. To begin with, Java requires
a significant piece of hardware to run sophisticated applications; Java can
also be slow, especially on platforms where the Java Virtual Machine (JVM)
is poorly-implemented. Not every computer comes with a JVM, and installing a
Java run-time can be frustrating for non-programmers.

By profession, I'm a nuts-and-bolts, algorithms-and-API programmer who works
primarily in C++ and C. Beyond C++ and Java, I've developed code in
everything from COBOL and FORTRAN to Prolog and Modula-2. For most work,
however, I choose C++ because it is (when written carefully) portable,
efficient, and extremely flexible.

While C++ would be my first choice for these projects, some of the software
requires a graphical user interface. I don't really want to spend the time
to learn GTK or Qt or some other compiled portable GUI -- and I want to
distribute complete source code for my projects.

So where does that leave me?

With Java, I think. The goal of my project is to demonstrate algorithms to
the widest possible audience -- and only Java gives me that capability.

How wide-spread is Java in the astronomy community, for example? If I
produce a cellular automata application in Java, will it be useful? Do
people have "big-enough" machines to run Java? I just don't know the answers
to those questions, and I haven't found the answers on the net.

I'll appreciate considered opinions; no religious diatribes, please.

Thanks!

--
Scott Robert Ladd
http://www.coyotegulch.com

David Holliday

unread,
Mar 4, 2001, 2:01:30 PM3/4/01
to
I agree that C++ and Java are your only best choices. Just over one year
ago I stopped all of my C++ MFC development and switched to 100% Java.
Though I loved C++, I like Java just as well, but for slightly different
reasons. Swing, the standard libraries, not having cross-platform problems,
not needing tools like GTK or MFC. Swing UIs are incredibly slow compared
to Windows MFC UIs, but the cross-platform, ease of modifying behavior,
object oriented nature of Swing is wonderful. Non UI code performance is
quite good.

Recommend:
IDE - Net Beans and Forte (Sun's version of Net Beans) - 100% Java, open
source
Web Server - Jetty 3.0.3 - 100% Java, open source
Database - HypersonicSQL - 100% Java, open source
XML parser - Crimson (Sun, Apache)
All the stuff from Apache.org

-David

Scott Robert Ladd <sc...@coyotegulch.com> wrote in message
news:jNto6.238826$8V6.39...@typhoon.tampabay.rr.com...
>


Erik Max Francis

unread,
Mar 4, 2001, 2:08:05 PM3/4/01
to
Scott Robert Ladd wrote:

> While C++ would be my first choice for these projects, some of the
> software
> requires a graphical user interface. I don't really want to spend the
> time
> to learn GTK or Qt or some other compiled portable GUI -- and I want
> to
> distribute complete source code for my projects.
>
> So where does that leave me?

Well, with Java you're going to have to learn a GUI API as well.

--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE
/ \ History is a bucket of ashes.
\__/ Carl Sandburg
REALpolitik / http://www.realpolitik.com/
Get your own customized newsfeed online in realtime ... for free!

Scott Robert Ladd

unread,
Mar 4, 2001, 7:39:38 PM3/4/01
to
I've been using Forte for a while now; while it seems a bit slow, it is a
reasonable GUI -- and it's free (which fits in my budget!)

--
Scott Robert Ladd


Scott Robert Ladd

unread,
Mar 4, 2001, 7:44:15 PM3/4/01
to
"Erik Max Francis" <m...@alcyone.com> wrote...

> Well, with Java you're going to have to learn a GUI API as well.

Ah, but I already *know* the Java GUI API and the Windows API, whereas I
would need to *learn* a Unix GUI to port C++ applications. I suppose I could
write code directly for X-Windows, but that isn't terribly effective in my
experience. And picking between Motif, KDE, Gnome, and all the other Unix
GUIs is an annoying prospect...

What *do* scientific types use as a standard Unix GUI, if any?

--
Scott Robert Ladd

Erik Max Francis

unread,
Mar 4, 2001, 8:18:59 PM3/4/01
to
Scott Robert Ladd wrote:

> What *do* scientific types use as a standard Unix GUI, if any?

Usually Motif. Maybe Tk.

--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE

/ \ Measure a thousand times and cut once.
\__/ (a Turkish proverb)
Maths reference / http://www.alcyone.com/max/reference/maths/
A mathematics reference.

George Maydwell

unread,
Mar 4, 2001, 9:13:40 PM3/4/01
to

Your original post never showed on my news server, so if this is
something mentioned already please forgive me.

Have you considered using JNI, the Java Native Interface? This should
let you program UI in Java while at the same time being able to code
(or maintain legacy code) in C/C++.

George

Erik de Castro Lopo

unread,
Mar 4, 2001, 9:52:27 PM3/4/01
to

I never use a GUI for any of my GP, GA or NN simulations. They are
always written in C, run in an xterm and print their progress to
stdout and or a text file.

For my current project I hacked together a GUI visualisation
server in Python/Tk. Multiple separate instances of the simulation
connect to the GUI server using TCP/IP sockets. The separate
instances can be run on a number of machines with their combined
outputs showing up in one window.

Python/Tk has the big advantage of being reasonably portable across
platforms and Python is definitely a leader in the field of scripting
languages.

On my current project, the simulation code required some 50+ hours
of coding while the GUI took about 10 hours over a couple of days.
I consider that a pretty good distribution of programming resources.

Just my $0.02 worth,
Erik
--
-----------------------------------------------------------------
Erik de Castro Lopo nos...@mega-nerd.com (Yes its valid)
-----------------------------------------------------------------
Beware the Lollipop of Mediocrity.
Lick it once, and you suck forever.

Paul Schlyter

unread,
Mar 5, 2001, 2:28:26 AM3/5/01
to
In article <ta53ts...@corp.supernews.com>,

David Holliday <dhol...@altaworks.com> wrote:

> I agree that C++ and Java are your only best choices. Just over one
> year ago I stopped all of my C++ MFC development and switched to 100%
> Java. Though I loved C++, I like Java just as well, but for slightly
> different reasons. Swing, the standard libraries, not having cross-
> platform problems,

Of course you have no "cross-platform problems" since you only have
one single platform to consider: the JVM. Yes, the JVM platform can
be emulated on various other platforms, but so can Windows: there are
emulators for Windows running on several different Unices, which will
make your C++ MFC Windows programs "cross-platform" in a way similar
to Java programs.


> not needing tools like GTK or MFC. Swing UIs are incredibly slow compared
> to Windows MFC UIs,

On emulated Windows the speeds may be somewhat similar though.


--
----------------------------------------------------------------
Paul Schlyter, Swedish Amateur Astronomer's Society (SAAF)
Grev Turegatan 40, S-114 38 Stockholm, SWEDEN
e-mail: pausch at saaf dot se or paul.schlyter at ausys dot se
WWW: http://hotel04.ausys.se/pausch http://welcome.to/pausch

Paul Schlyter

unread,
Mar 5, 2001, 2:30:15 AM3/5/01
to
In article <zjBo6.241129$8V6.40...@typhoon.tampabay.rr.com>,

Scott Robert Ladd <sc...@coyotegulch.com> wrote:

> "Erik Max Francis" <m...@alcyone.com> wrote...
>
>> Well, with Java you're going to have to learn a GUI API as well.
>
> Ah, but I already *know* the Java GUI API and the Windows API,
> whereas I would need to *learn* a Unix GUI to port C++ applications.

Didn't you once have to learn the Java GUI API and the Windows API
too?

> I suppose I could write code directly for X-Windows, but that isn't
> terribly effective in my experience.

If you want to do native code development, Java is out of the
question anyway. But if it's OK to interpret code at runtime, Java
isn't your only choice. You could also run a Windows emulator on
your Unix platform, and then run your Windows API programs on that
emulator. This will make your Windows API programs as much "cross
platform" as your Java programs, and in the same way: by interpreting
that one-and-only platform on other platforms.



> And picking between Motif, KDE, Gnome, and all the other Unix
> GUIs is an annoying prospect...

Unless you have good reasons for some other choice, choose Motif
since that's most often used. And if you do have good reasons for
some other choice, that choice ought to be easy too...



> What *do* scientific types use as a standard Unix GUI, if any?

Scientific type do scientific programming, not GUI programming... :-)
But seriously, if you stay with CLI's, then you'll probably end up
with more time on your science.....

Also, even if scientific types dabble with GUI's, they're probably
more concerned with solving their scientific problems than by making
their personal hacks portable. So they'll probably just grab
whatever GUI happens to be available on their system.

Finally, many scientific types don't program at all, or very little,
instead they use software tools avaialbe for their field.

Scott Robert Ladd

unread,
Mar 5, 2001, 9:19:04 AM3/5/01
to
"Erik de Castro Lopo" wrote...

> I never use a GUI for any of my GP, GA or NN simulations. They are
> always written in C, run in an xterm and print their progress to
> stdout and or a text file.

An evolving cellular automata doesn't really have much meaning without a
visual representation... ;)

Otherwise, I usually follow the same pattern as you do: My GA/EC apps are
simple console programs that report via stdout.

I hadn't really considered a Tk or Python solution; quite frankly, I've
never used either under Windows, but I'm willing to bet that both are hosted
in some fashion.

-- Scott


Scott Robert Ladd

unread,
Mar 5, 2001, 9:32:26 AM3/5/01
to

"Paul Schlyter" <pau...@saaf.se> wrote...

> Didn't you once have to learn the Java GUI API and the Windows API
> too?

And I'm tired of learning new GUIs... ;}

In theory, a Java GUI runs on any JVM; thus I learn one GUI, and the app
runs on WIndows, X, and Mac without my having to understand a unique API for
each platform.

In practice, Java is nowhere near as portable as its adherents wish us to
think. My own applets have annoying GUI differences, just under various JVMs
(MS, IBM, Sun) for Windows.

I suspect I'm looking for a Holy Grail here. I just don't want to maintain
six code bases for different platforms, especially, when I'm distributing
free code over the web...

> If you want to do native code development, Java is out of the
> question anyway. But if it's OK to interpret code at runtime, Java
> isn't your only choice. You could also run a Windows emulator on
> your Unix platform, and then run your Windows API programs on that
> emulator

In my experience, the Windows emulators are annoyingly incomplete, and they
are much less likely to be installed than would a Java machine.

> Unless you have good reasons for some other choice, choose Motif
> since that's most often used. And if you do have good reasons for
> some other choice, that choice ought to be easy too...

I'm considering Motif. I've never *done* any Motif work, but hey -- if this
job were easy, everybody would be doing it... ;)

> Scientific type do scientific programming, not GUI programming... :-)

Yes, yes, I know -- *BUT* some applications are best shown using a graphic
display. We could write papers without charts and graphs, too, but text
simply doesn't convey certain information clearly. I can't imagine how I'd
describe a cellular automata, for example, in text.

On the other hand, my first "Life" program was written in FORTRAN and ran on
a Univac 1110 with a DecWriter terminal, printing each generation as a block
of dashes and stars. Now does that date me or what?

> But seriously, if you stay with CLI's, then you'll probably end up
> with more time on your science.....

For some of the applications I probably will stay CLI with console output.

> Finally, many scientific types don't program at all, or very little,
> instead they use software tools avaialbe for their field.

Quite true; what I'm hoping to distribute is a set of useful tools. The
target audience has three components: scientific programmers who want to
learn about evolutionary computation, scientists who need a set of drop-in
tools, and the curious layman. I'll have some more details in a week or so.

Thanks for the comments; they been most interesting.

Erik Max Francis

unread,
Mar 5, 2001, 11:32:53 AM3/5/01
to
Scott Robert Ladd wrote:

> I hadn't really considered a Tk or Python solution; quite frankly,
> I've
> never used either under Windows, but I'm willing to bet that both are
> hosted
> in some fashion.

Tk is quite portable, and has bindings for most languages. Python is
useful because it's also quite portable, and is extremely easy to learn
and use, but on the other hand is also quite powerful.

--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE

/ \ Love is the triumph of imagination over intelligence.
\__/ H.L. Mencken
Polly Wanna Cracka? / http://www.pollywannacracka.com/
The Internet resource for interracial relationships.

Brian Tung

unread,
Mar 5, 2001, 12:18:49 PM3/5/01
to
Paul Schlyter wrote:
> Scientific type do scientific programming, not GUI programming... :-)

You forget that many of us scientific types have to perform "demos"
in order to remain funded scientific types. :) There will be plenty
of GUI work there.

Brian Tung <br...@isi.edu>
Astronomy Corner at http://astro.isi.edu/
C5+ Home Page at http://astro.isi.edu/c5plus/
PalmAtlas Home at http://astro.isi.edu/palmatlas/

Erik de Castro Lopo

unread,
Mar 5, 2001, 3:12:36 PM3/5/01
to
Scott Robert Ladd wrote:

<snip>

> I hadn't really considered a Tk or Python solution; quite frankly, I've
> never used either under Windows, but I'm willing to bet that both are hosted
> in some fashion.

Well Python cose is compiled to byte code which is executed by a virtual
machine. But the Python interpreter and the Tk windowing stuff all
runs native.

http://www.python.org/

Erik
--
-----------------------------------------------------------------
Erik de Castro Lopo nos...@mega-nerd.com (Yes its valid)
-----------------------------------------------------------------

The National Multiple Sclerosis Society of America recently started an
advertising campaign with the slogan "MS: It's not a software company".

Seasoned IT professionals will have no trouble telling the two MS's
apart. One is a debilitating and surprisingly widespread affliction
that renders the sufferer barely able to perform the simplest task.
The other is a disease.

Anders Gidenstam

unread,
Mar 5, 2001, 3:23:14 PM3/5/01
to
In article <zjBo6.241129$8V6.40...@typhoon.tampabay.rr.com>,

"Scott Robert Ladd" <sc...@coyotegulch.com> writes:
> "Erik Max Francis" <m...@alcyone.com> wrote...
>> Well, with Java you're going to have to learn a GUI API as well.
>
> Ah, but I already *know* the Java GUI API and the Windows API, whereas I
> would need to *learn* a Unix GUI to port C++ applications. I suppose I could
> write code directly for X-Windows, but that isn't terribly effective in my
> experience. And picking between Motif, KDE, Gnome, and all the other Unix
> GUIs is an annoying prospect...

Well, Gtk is at least available on both X11 and windows.
If you dare to be unconventional I'd recommend the (IMHO) excellent
programming language Ada.
And there is also a very good binding to Gtk for Ada, GtkAda.

Best Regards

Anders
--
--------------------------------------------
"A well-written program is its own heaven;
a poorly-written program is its own hell."
- The Tao of Programming

Tim Tyler

unread,
Mar 5, 2001, 3:46:35 PM3/5/01
to
In several places, Erik de Castro Lopo <nos...@mega-nerd.com> wrote:

: http://www.python.org/

Python can also target the JVM: http://www.jpython.org/

When JPython came out it was reputed to be faster than the "native"
alternative (presumably due to running on a more developed VM).
I don't know if this is still true.

I understand Python has virtues over Java in a number of areas - but
somehow, I doubt writing CAs is one of those areas.
--
__________
|im |yler t...@cryogen.com Home page: http://alife.co.uk/tim/

paulsnx2

unread,
Mar 5, 2001, 8:57:46 PM3/5/01
to

"Paul Schlyter" <pau...@saaf.se> wrote in message
news:97vf6q$jfs$1...@merope.saaf.se...

> In article <ta53ts...@corp.supernews.com>,
> David Holliday <dhol...@altaworks.com> wrote:
>
> > I agree that C++ and Java are your only best choices. Just over one
> > year ago I stopped all of my C++ MFC development and switched to 100%
> > Java. Though I loved C++, I like Java just as well, but for slightly
> > different reasons. Swing, the standard libraries, not having cross-
> > platform problems,
>
> Of course you have no "cross-platform problems" since you only have
> one single platform to consider: the JVM. Yes, the JVM platform can
> be emulated on various other platforms, but so can Windows: there are
> emulators for Windows running on several different Unices, which will
> make your C++ MFC Windows programs "cross-platform" in a way similar
> to Java programs.

We are reaching here, aren't we? It isn't like Microsoft is shipping a
"Windows VM" for various platforms, and providing certification tests
for third party "Windows VM" implementations....

Yes, one can emulate a platform across other platforms, but from a
pragmatic point of view, such observations are useless if the vendor
of the propritary platform doesn't care to support such cross platform
efforts. Of course, even Sun has not been all that impressive in its
cross platform efforts.

> > not needing tools like GTK or MFC. Swing UIs are incredibly slow
compared
> > to Windows MFC UIs,
>
> On emulated Windows the speeds may be somewhat similar though.

Nah, a good Windows imlementation should have much better performance.
The JVM suffers from a hoplessly muddled execution model. Stack frames
for procedure calls, and zero operand instructions. There just
isn't a good way to compile it or make a processor to execute it.
At least Intel assembly has a consistant execution model that quite a
number of processors have successfully emulated, often with better
performance than Intel's native implementation.

mathieu capcarrere

unread,
Mar 6, 2001, 3:35:44 AM3/6/01
to
Tim Tyler wrote:
>
> In several places, Erik de Castro Lopo <nos...@mega-nerd.com> wrote:
>
> : http://www.python.org/
>
> Python can also target the JVM: http://www.jpython.org/
>
> When JPython came out it was reputed to be faster than the "native"
> alternative (presumably due to running on a more developed VM).
> I don't know if this is still true.
>
> I understand Python has virtues over Java in a number of areas - but
> somehow, I doubt writing CAs is one of those areas.
> --

I don't know much about python about python but writing
anything about CAs in Tk is _definitely_ NOT a good idea.
I mean this kind of scripting language are handy and quick
but unappropriate (to say the least) to handle structures
like CA grid efficiently.

mathieu

Erik Max Francis

unread,
Mar 6, 2001, 11:50:06 AM3/6/01
to
mathieu capcarrere wrote:

> I don't know much about python about python but writing
> anything about CAs in Tk is _definitely_ NOT a good idea.
> I mean this kind of scripting language are handy and quick
> but unappropriate (to say the least) to handle structures
> like CA grid efficiently.

You meant Tcl, not Tk. Tcl is the scripting language; Tk is the GUI
binding.

--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE

/ \ It is not enough to succeed; others must fail.
\__/ Gore Vidal
The laws list / http://www.alcyone.com/max/physics/laws/
Laws, rules, principles, effects, paradoxes, etc. in physics.

George Maydwell

unread,
Mar 6, 2001, 1:23:29 PM3/6/01
to

And tcl the language is perfectly appropriate for writing good CA
software when used in the spirit in which it was created. tcl wasn't
intended to be a stand-alone language appropriate for heavy algorithm
development. Instead it provides support for loading DLLs generated
from C/C++ code. Packaging CA extensions to tcl in a DLL created from
C/C++ code is definitely a correct way to go if you like tcl.

George

On Tue, 06 Mar 2001 08:50:06 -0800, Erik Max Francis <m...@alcyone.com>
wrote:

Lin Gu

unread,
Mar 10, 2001, 11:13:26 AM3/10/01
to
Personally I think Perl is also a good candidate in some situations. I have
nice experience with Perl when writing an evolutionary neural network
program which learns to classify texts. It even support Object Oriented
programming.


"George Maydwell" <geo...@collidoscope.com> wrote in message
news:3aa52811...@news.bayarea.net...

Erik Max Francis

unread,
Mar 10, 2001, 1:17:36 PM3/10/01
to
Lin Gu wrote:

> Personally I think Perl is also a good candidate in some situations. I
> have
> nice experience with Perl when writing an evolutionary neural network
> program which learns to classify texts. It even support Object
> Oriented
> programming.

Barely, if you don't mind squinting.

--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE

/ \ Moral indignation is jealousy with a halo.
\__/ H.G. Wells

Mark Wilden

unread,
Mar 10, 2001, 1:59:22 PM3/10/01
to
"Erik Max Francis" <m...@alcyone.com> wrote in message
news:3AAA6FC0...@alcyone.com...

> Lin Gu wrote:
>
> > Personally I think Perl is also a good candidate in some situations. I
> > have
> > nice experience with Perl when writing an evolutionary neural network
> > program which learns to classify texts. It even support Object
> > Oriented
> > programming.
>
> Barely, if you don't mind squinting.

No, OO Perl is not all that different from OO C++. Perl doesn't have to be
cryptic. I wrote a database-driven website for my family entirely in OO
Perl: http://www.mwilden.com/familydex/.


Erik Max Francis

unread,
Mar 10, 2001, 2:16:46 PM3/10/01
to
Mark Wilden wrote:

> No, OO Perl is not all that different from OO C++. Perl doesn't have
> to be
> cryptic.

Anyone familiar with object orientation can clearly see a mile away that
Perl's object oriented facilities were tacked on on the end as an
afterthought. Perl's object orientation is an embarassment.

--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE

/ \ They have rights who dare defend them.
\__/ Roger Baldwin
Official Omega page / http://www.alcyone.com/max/projects/omega/
The official distribution page for the popular Roguelike, Omega.

Mark Wilden

unread,
Mar 10, 2001, 5:51:49 PM3/10/01
to
"Erik Max Francis" <m...@alcyone.com> wrote in message
news:3AAA7D9E...@alcyone.com...

>
> Anyone familiar with object orientation can clearly see a mile away that
> Perl's object oriented facilities were tacked on on the end as an
> afterthought. Perl's object orientation is an embarassment.

Well, it's true that I've only been programming (exclusively) in OOP since
1989, so my embarassment threshold may be higher than yours. I do certainly
agree that Perl's OOP was tacked on at the end. Hmmm...kinda like the ++ was
tacked onto C. :)

At any rate, I'm a professional programmer, and I look for capabilities
rather than purity. Perl may in fact be the worst OOP language I've ever
used, but it is indeed OOP.


Michael Lones

unread,
Mar 11, 2001, 7:27:27 AM3/11/01
to
This may be getting a bit off-topic, but...

I have a GP framework written in C++ and would like to build a front-end in
Java. As far as I understand it, JNI requires you to butcher all the method
signatures in your C++ code; not something that I'd like to do to it. Does
anybody know of a (free) method of interfacing between C++ and Java without
modifying the C++ code? For instance, a tool that generates JNI-fied proxy
functions that call unmodified C++ functions? I know of two commercial tools
that do this sort of thing; Junc++ion and xFunction, but nothing to match my
budget.

Furthermore, has anybody tried mixing Jython with C++ (via JNI, for
example)? - giving you C++ speed, Java foundation classes and python
high-levelness.

Thanks for any help,

Mic.

Julian Assange

unread,
Mar 19, 2001, 11:50:56 AM3/19/01
to
"Scott Robert Ladd" <sc...@coyotegulch.com> writes:

> My one remaining question: What programming language should I use?

Ocaml! http://www.ocaml.org/

You might also like to have a look at http://www.bagley.org/~doug/shootout

--
Julian Assange |If you want to build a ship, don't drum up people
|together to collect wood or assign them tasks and
pr...@iq.org |work, but rather teach them to long for the endless
pr...@gnu.ai.mit.edu |immensity of the sea. -- Antoine de Saint Exupery

Julian Assange

unread,
Mar 19, 2001, 11:54:54 AM3/19/01
to
Erik de Castro Lopo <nos...@mega-nerd.com> writes:

> For my current project I hacked together a GUI visualisation
> server in Python/Tk. Multiple separate instances of the simulation
> connect to the GUI server using TCP/IP sockets. The separate
> instances can be run on a number of machines with their combined
> outputs showing up in one window.

OCaml (www.ocaml.org) also supports Tk (and Gtk etc), on multiple platforms.
And has the benefit of being some hundred times faster than python.

Erik de Castro Lopo

unread,
Mar 19, 2001, 3:06:22 PM3/19/01
to
Julian Assange wrote:
>
> Erik de Castro Lopo <nos...@mega-nerd.com> writes:
>
> > For my current project I hacked together a GUI visualisation
> > server in Python/Tk. Multiple separate instances of the simulation
> > connect to the GUI server using TCP/IP sockets. The separate
> > instances can be run on a number of machines with their combined
> > outputs showing up in one window.
>
> OCaml (www.ocaml.org) also supports Tk (and Gtk etc), on multiple platforms.
> And has the benefit of being some hundred times faster than python.

On whose say-so?

Erik
--
-----------------------------------------------------------------
Erik de Castro Lopo nos...@mega-nerd.com (Yes its valid)
-----------------------------------------------------------------
"Python addresses true pseudocode's two major failings: that it
isn't standardized, and it isn't executable."
- Grant R. Griffin in comp.dsp

Erik de Castro Lopo

unread,
Mar 19, 2001, 3:13:33 PM3/19/01
to
Julian Assange wrote:
>
> Erik de Castro Lopo <nos...@mega-nerd.com> writes:
>
> > For my current project I hacked together a GUI visualisation
> > server in Python/Tk. Multiple separate instances of the simulation
> > connect to the GUI server using TCP/IP sockets. The separate
> > instances can be run on a number of machines with their combined
> > outputs showing up in one window.
>
> OCaml (www.ocaml.org) also supports Tk (and Gtk etc), on multiple platforms.
> And has the benefit of being some hundred times faster than python.

Some hundred times faster? On whose say-so and why is that important?

Erik
--
-----------------------------------------------------------------
Erik de Castro Lopo nos...@mega-nerd.com (Yes its valid)
-----------------------------------------------------------------
"A subversive is anyone who can out-argue their government"

Erik Max Francis

unread,
Mar 19, 2001, 10:13:23 PM3/19/01
to
Julian Assange wrote:

> And has the benefit of being some hundred times faster than python.

The more you exaggerate, the more it makes it sound like your claim is
false.

--
Erik Max Francis / m...@alcyone.com / http://www.alcyone.com/max/
__ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE

/ \ I never loved another person the way I loved myself.
\__/ Mae West
Physics reference / http://www.alcyone.com/max/reference/physics/
A physics reference.

Kent Paul Dolan

unread,
Mar 30, 2001, 7:49:02 AM3/30/01
to
Scott Robert Ladd joked:

> And I'm tired of learning new GUIs...

Of course, you could have decided to let yourself be buried about when
you got to the word "learning", and not even bothered to finish the
sentence, the rest not mattering especially to the essential corpse
qualities of what you had become.

Cheers!

xanthian.
--
Kent Paul Dolan <xant...@well.com>

Those who would tell me to stop striving for understanding because I am
too old, can try to pry my love of learning from my cold, dead hands.


--
Posted from smtp.well.com [208.178.101.27]
via Mailgate.ORG Server - http://www.Mailgate.ORG

Aaron Sloman See text for reply address

unread,
Mar 31, 2001, 11:05:13 AM3/31/01
to
[To reply replace "Aaron.Sloman.XX" with "A.Sloman"
(Not "Aaron.Sloman"]

"Scott Robert Ladd" <sc...@coyotegulch.com> writes:

> Date: Sun, 04 Mar 2001 16:09:51 GMT
>
> I'm creating several FREE software project, expanding greatly on the types
> of code present on my web site (http://www.coyotegulch.com). The projects
> will focus on algorithms and applications for cellular automata,
> evolutionary computation, and astronomy.


>
> My one remaining question: What programming language should I use?

If your *primary* objective is portability, I don't have anything to
offer that improves on C++ and Java.

IF you want to be able to explore AI ideas where the complexity of
the tasks rules out complete detailed analysis of the problems prior
to writing the programs, and where interactive exploratory
development (e.g. easily editing and recompiling parts of the
program without having to restart the whole thing) and the full
flexibility of pattern matching and list processing with automatic
garbage collection would be useful

THEN you may find an AI language useful.

Common Lisp is one that is widely used. Another AI language is Pop-11,
which is used here in Birmingham (UK), and some other places, for
teaching and research in AI and to some extent also GP. Many people find
the syntax of Common Lisp uncomfortable and such people often prefer
Pop-11, which is roughly similar in power. (Each is more powerful than
the other in some respects).

You can get a taste of Pop-11 from the online primer
http://www.cs.bham.ac.uk/research/poplog/primer/

You can get a taste of the use of Pop-11 for teaching students about
evolutionary computation in this teach file and associated library file
by Riccardo Poli:
http://www.cs.bham.ac.uk/research/poplog/teach/ga
http://www.cs.bham.ac.uk/research/poplog/lib/ga.p

Typically a student would read the teach file in an editor that
communicates with pop-11 e.g. the Poplog editor Ved, or Emacs.
Alternatively use a dumb editor with select and paste to a pop-11
window.

You can get a taste of the SimAgent toolkit extensions to pop-11 by
looking at these tutorial files (written for students: if you have
pop-11 and the toolkit on your machine you can run and edit and run
the examples):
http://www.cs.bham.ac.uk/research/poplog/sim/teach/sim_agent
http://www.cs.bham.ac.uk/research/poplog/sim/teach/sim_demo
http://www.cs.bham.ac.uk/research/poplog/sim/teach/sim_feelings
http://www.cs.bham.ac.uk/research/poplog/sim/teach/sim_sheepdog.p

The condition/action rule engine used in these toy agents is defined
more fully here:
http://www.cs.bham.ac.uk/research/poplog/prb/help/poprulebase

The 2-D graphical tools are not essential, but considerably enhance
both functionality of the applications produced and also the
development process.

They use the X window system. They do not use motif or any other
"standard" X-based package, but are implemented in Pop-11 using an
object-oriented paradigm (multiple inheritance simplifies extensions by
users). The pop-11 procedures and methods invoke C libraries that invoke
X facilities. RCLIB capabilities are summarised here:
http://www.cs.bham.ac.uk/research/poplog/rclib/help/rclib

Example tutorial file:
http://www.cs.bham.ac.uk/research/poplog/rclib/teach/rclib_demo.p

All of this runs in Pop-11 which is part of the Poplog system which
used to be an expensive commercial package (e.g. a few thousand
dollars per workstation) but is now available free of charge with
full system sources. Poplog also optionally includes incremental
compilers for Prolog, Common Lisp, Standard ML, all implemented
using tools for adding incremental compilers. The whole system
with various optional packages for teaching, etc., can be
fetched/browsed from here:
http://www.cs.bham.ac.uk/research/poplog/freepoplog.html

It runs on various linux/unix platforms, with graphics implemented
using X.

There is a intel+windows/NT version which does not include graphics,
also included in the free poplog site. The sim_agent libraries and many
other Pop-11 utilities and teaching libraries will run on that without
graphics.

A version of Poplog for NT with an X emulator for the graphics is sold
by SPSS (formerly ISL) but ONLY as part of the Clementine data-mining
system (See www.isl.co.uk) SPSS bought ISL and started porting
Clementine to C++, since that is their preferred language. I don't
know how far that translation process has got, nor how long it will
take.)

My hope is that someone who is knowledgeable about Windows/NT will
take a copy of poplog and implement a graphical layer that supports
the same facilities as the X window system, as used by RCLIB. Then
RCLIB can also run on windows/nt poplog. But I have no idea how big
a task or how difficult that would be since I have never programmed
on win/nt, and I don't know if the graphical facilities map onto
the X facilities used by RCLIB.

Poplog is built to be mostly platform independent, but since
it uses an incremental compiler (generating machine code at run
time) porting it to a new host involves re-writing a small part of
the system which is the back end code-generator. A good compiler
writer can often do this in a couple of months, but it is
non-trivial.

> I hope you who read this will have some insights for me. I've been out of
> academia for a while, and I'm not very familiar with the types of computers
> used overseas, or the current preferences in programming languages outside
> commercial software development. Were I only interested in performance and
> "market", I'd write a C++ Windows application and be done with it. However,
> I want this code to be accessible to any programmer, amateur or
> professional, from PDAs to Beowulf clusters. And I want non-programmers to
> be able to use the programs with a minimum of fuss.

Non programmers cannot easily use Pop-11, though it is possible to
build tools for non-programmers, and the RCLIB graphical package
helps that process. It does not make it easy. Nothing makes it easy
to build good tools for non-programmers.

> So my foremost concern is cross-platform portability, which leads me to
> consider Java. I have various GNU-Linux and Wintel systems for development,
> but I'd like to see these projects run almost anywhere. Java is also
> appealing due to its support for a portable graphical user interface.

One idea that has been brought up, though I have no idea how
practical it would be, is to port the pop-11 graphics to Java.

IF the flexibility of an AI development environment is not important,
e.g. because you always have a very clear idea of the nature of your
programming tasks and the form of solution required, and you don't need
the features of an AI language, then you might as well use Java anyway,
rather than Pop-11.

> and I want to
> distribute complete source code for my projects.

The free poplog licence is modelled on XFree86 and is very liberal.
See:

http://www.cs.bham.ac.uk/research/poplog/new/install.txt

> How wide-spread is Java in the astronomy community, for example? If I
> produce a cellular automata application in Java, will it be useful? Do
> people have "big-enough" machines to run Java? I just don't know the answers
> to those questions, and I haven't found the answers on the net.

This is a bit like "how long is a piece of string". The size of
machine you need will depend on how big your cellular automata and
other things are.

I've just watched a simulation run by a colleague with many tens
(not many hundreds) of interacting agents run in a process requiring
under 10 mbytes on a linux PC. That includes the pop-11 compiler,
the integrated editor, the 800x800 window displaying the
moving agents, a control panel with various buttons and a slider for
modifying the simulation, etc.

My impression is that most people nowadays buy machines with 64 Mbytes
memory or more.

I can remember when Pop-11 was used about 20 years ago for teaching AI
simultaneously to up to about 20 students on a Vax running Unix with
about 2.5 Mbytes RAM. (No graphics then.)

> I'll appreciate considered opinions; no religious diatribes, please.

A wise warning.

Any questions about poplog or pop-11 should be posted to
comp.lang.pop (which goes to an email list also, so please
don't use that for irrelevant stuff).

I hope that's of use or interest.

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

Michael A. Covington

unread,
Mar 31, 2001, 2:58:17 PM3/31/01
to
> > I'm creating several FREE software project, expanding greatly on the
types
> > of code present on my web site (http://www.coyotegulch.com). The
projects
> > will focus on algorithms and applications for cellular automata,
> > evolutionary computation, and astronomy.
> >
> > My one remaining question: What programming language should I use?
>
> If your *primary* objective is portability, I don't have anything to
> offer that improves on C++ and Java.
>
> IF you want to be able to explore AI ideas where the complexity of
> the tasks rules out complete detailed analysis of the problems prior
> to writing the programs, and where interactive exploratory
> development (e.g. easily editing and recompiling parts of the
> program without having to restart the whole thing) and the full
> flexibility of pattern matching and list processing with automatic
> garbage collection would be useful

Could I put in a word for Prolog? I'm the principal author of 2 Prolog
textbooks. That's what I do other than amateur astronomy...


--
Clear skies,

Michael Covington
Author, Astrophotography for the Amateur
http://www.CovingtonInnovations.com/books.html <><


Ludwig

unread,
Apr 18, 2001, 9:10:21 PM4/18/01
to
To add some variety to the discussion -
It seems like most of the replies assume you have to program the low
level details of the GA _and_ the GUI/high-level GA manipulation in
the same language. Which may or may not be a good thing.
A different approach would be to use the Macromedia Director's Lingo
language/IDE for GUI; and Xtras (Lingo's name for DLLs) written in C++
for the underlying functionality.
The benefits that I can see are:
-Your environment is truly accessible to both professionals and
amateurs. Functions of your library can be easily perused, and
creating a GUI / changing it is a snap - more than in any other
programming environment I can think of.
-Your code can run as a shockwave w/ full connection to databases /
I/O hardware / whatever else you need. Pretty convenient if you want
to create net-based applications.
- Security restrictions are not nearly as strict as Java - the trusted
applets creation process is much easier.
- Completely PC and Mac cross-platform (unlike Java that only claims
to be 100%)
-It can run both interpreted and compiled. So you can modify things as
you go.
- It's fast. Not as fast as everything hard-coded in C++, but faster
than Java for most things (based on my experience). In your case it
would be especially fast, since all the hard work is performed in the
compiled C++ Xtras.

Cons:
No UNIX support for shockwave or Director executables.

-Ludwig
PS. I'm a professional programmer (working on a PhD) with experience
in C++ / Java / Tcl/Tk / some Python / a bunch of others. So I do know
(hopefully) what I'm talking about ;-)
PPS. More information upon request. Please send replies here and not
to the e-mail.

On Sun, 04 Mar 2001 16:09:51 GMT, "Scott Robert Ladd"
<sc...@coyotegulch.com> wrotf:

>I'm creating several FREE software project, expanding greatly on the types
>of code present on my web site (http://www.coyotegulch.com). The projects
>will focus on algorithms and applications for cellular automata,
>evolutionary computation, and astronomy.
>
>My one remaining question: What programming language should I use?
>

>I hope you who read this will have some insights for me. I've been out of
>academia for a while, and I'm not very familiar with the types of computers
>used overseas, or the current preferences in programming languages outside
>commercial software development. Were I only interested in performance and
>"market", I'd write a C++ Windows application and be done with it. However,
>I want this code to be accessible to any programmer, amateur or
>professional, from PDAs to Beowulf clusters. And I want non-programmers to
>be able to use the programs with a minimum of fuss.
>

>So my foremost concern is cross-platform portability, which leads me to
>consider Java. I have various GNU-Linux and Wintel systems for development,
>but I'd like to see these projects run almost anywhere. Java is also
>appealing due to its support for a portable graphical user interface.
>

>Java is not without its difficulties, however. To begin with, Java requires
>a significant piece of hardware to run sophisticated applications; Java can
>also be slow, especially on platforms where the Java Virtual Machine (JVM)
>is poorly-implemented. Not every computer comes with a JVM, and installing a
>Java run-time can be frustrating for non-programmers.
>
>By profession, I'm a nuts-and-bolts, algorithms-and-API programmer who works
>primarily in C++ and C. Beyond C++ and Java, I've developed code in
>everything from COBOL and FORTRAN to Prolog and Modula-2. For most work,
>however, I choose C++ because it is (when written carefully) portable,
>efficient, and extremely flexible.
>
>While C++ would be my first choice for these projects, some of the software
>requires a graphical user interface. I don't really want to spend the time
>to learn GTK or Qt or some other compiled portable GUI -- and I want to


>distribute complete source code for my projects.
>

>So where does that leave me?
>
>With Java, I think. The goal of my project is to demonstrate algorithms to
>the widest possible audience -- and only Java gives me that capability.


>
>How wide-spread is Java in the astronomy community, for example? If I
>produce a cellular automata application in Java, will it be useful? Do
>people have "big-enough" machines to run Java? I just don't know the answers
>to those questions, and I haven't found the answers on the net.
>

>I'll appreciate considered opinions; no religious diatribes, please.
>

>Thanks!

Thomas Petersen

unread,
Apr 20, 2001, 7:09:13 AM4/20/01
to
Well I can only speak for on fragment of the collective group of people
interested in theese matters. But I can tell you that more and more
graphical designers with tendencies to do some programming to, would benefit
from Director too. It is a diverse enough environment to actually do
anything that java and c++ can plus it gives the benefit of a very easy and
extremely proffesional visual library able to practically deal with any kind
of asset. Plus it has a really great gui for accessing vectors, wich i can
se beeing of great help for buliding up those enviroments.

I am not a c++ or java programmer,just a simple designer with a love for
visualising complex systems. But do hope that I will be backed up by other
programmers

Thanx

Mattias Waldau

unread,
Apr 22, 2001, 2:17:30 AM4/22/01
to
Julian Assange <pr...@iq.org> writes:

> OCaml (www.ocaml.org) also supports Tk (and Gtk etc), on multiple platforms.
> And has the benefit of being some hundred times faster than python.
>

100 times might be too much, but I implemented the same GA in several
languages like Java, Ocaml, optimized Visual Basic, and Ocaml was by
far the fastest.

The only way I would have got it any faster is by coding it in C.

/mattias

P.s. "optimized Visual Basic" = no objects, no variants,only arrays,
native compiler, only ints and floats, no GUI. In other test, this has shown
to be near C in speed.

0 new messages