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
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...
>
> 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
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
> 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.
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
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.
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.
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
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.
> 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.
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/
<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.
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.
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
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/
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.
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
> 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
On Tue, 06 Mar 2001 08:50:06 -0800, Erik Max Francis <m...@alcyone.com>
wrote:
"George Maydwell" <geo...@collidoscope.com> wrote in message
news:3aa52811...@news.bayarea.net...
> 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
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/.
> 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.
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.
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.
> 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
> 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
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"
> 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.
> 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
"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
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 <><
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!
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
> 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.