Aha! So we get down to the real reason that all language choice arguments
are founded on: personal preference.

If you want to run the full interop tests, you'll need everything anyway.
And that includes the .Net, which as a Linux developer I'd be more worried
about than the Java. The .Net client ought to run on Mono though. Or you
could run it through the windows emulator thingy perhaps? Or as a VM?

I reckon it will take you about 30 minutes to install Java + Maven (+ Ant
can't remember if thats still needed for the code generator?) and get a
succesfull build of the Java on a linux box. At least thats how long it took
me the other day, when I put it all on my newly linuxified laptop (sorry
redhat, I installed debian becuase thats the one I tried first, many years
ago). Compared with how long I spent figuring out how to run the C++ build,
thats good going.

I admit the real reason that I did it in Java is personal preference. I know
the quirks of extending JUnit, because I wrote the junit-toolkit that does
the performance tests.

As a contractor, I've done more than my fair share of maintaining other
peoples code. Here's my top list of the qualities that easy to maintain code
should have:

* High level documentation, explains the purpose and intention of the code,
and the interesting parts of the grand scale design (I leave the boring and
irrelevant bits out, because no-one will read them).
* Comments in the code. Explains the purpose and intention of the code, with
the details.
* No cut and paste coding. Where possible re-usable code should be put into
convenient libraries.

Choice of language seems pretty irrelevant on the whole. The best book I've
ever seen on writing good code comments is, "Code Complete".

I call my method of documenting things a "sea-level" principle. Stuff above
the level of javadoc (or equivalent) goes in a Word doc or a Wiki page.
Stuff below that level goes in the code. This means that the higher level
documentation doesn't get bogged down in the details and go stale too
quickly. Also, I put a little table in each class header comment, which
contains a CRC card (class, responsibility, collaboration), which provides a
concise guide to the responsibilities of each class and how it fits together
with other classes in order to achieve those. I do that because I'm
constantly striving to follow Parna's principles of modular
design<http://en.wikipedia.org/wiki/David_Parnas>,
and perfect re-useability. It generally takes a lot of shifting around to
get there though.

I've always been a little suspicious of dynamically typed languages, because
I like type safety and static typing, combined with type inference and
parametric polymorhpism. I did say personal peferences though didn't I? I'm
definitely in the minority here, because I think checked exceptions are a
marvelous thing too...

Looks like python is only more concise because there's no curly braces on
new lines and no comments. Ruby looks like an interesting language and very
concise. I don't know it, but I'm sure I will soon. I've always thought that
writing re-usable abstractions with first class functions (closures) is far
more natural than with class inheritance. Given my preference mix, the ideal
language for me is probably OCaml, but thats French and nobody uses it!

Seriously though, I think the best language for doing this kind of stuff has
to be 
spl<http://shakespearelang.sourceforge.net/report/shakespeare/shakespeare.html>,
the communicating agent model is perfect for asynchronous messaging.

Good day,
Rupert

On 3/14/07, Andrew Stitcher < [EMAIL PROTECTED]> wrote:

On Wed, 2007-03-14 at 09:10 +0000, Robert Greig wrote:
> On 13/03/07, Andrew Stitcher <[EMAIL PROTECTED] > wrote:
>
> > One thing worth noting is that Java is much less common on Linux than
> > either Python or Ruby, as the licensing made it hard to ship the Sun
> > implementation. Whereas there are very good implementations of both
> > Python and Ruby for Windows.
>
> I don't understand this point.
>
> Java is freely available on linux for download although it isn't
> included on distros. Python and Ruby are freely available on Windows
> although they aren't included in the installation by default ( i.e. are
> not shipped by Microsoft). Is this not the same situation?
>
> I don't really have an opinion on which language the controller should
> be written in.
>

Uhm, You're probably correct there - I guess what I'm really saying is
that I'd just prefer it that way for (my) convenience when developing
the C++ broker, as not needing java would be one less thing to worry
about!

Andrew



Reply via email to