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
