Programming Language for Corporate UI Research? 115
Daniel Wigdor asks: "I'm a PhD candidate doing an internship at a major American UI research lab. They distribute an input/output hardware device to research labs, along with a Java API for the development of 'concept pieces' (here's an example from a university). Java was chosen because it was simple, and seemed, at the time, to be the language of choice for UI researchers in both the corporate and academic worlds. There is now pressure to switch from Java to C#, since they don't have the resources to maintain an SDK for both. We're not at all concerned with system performance, since this is only for concept-development: it's really just about accessibility for newcomers to the hardware. Given that, what would the community advise by way of a choice between Java and C#?"
Re:You're asking *Slashdot*? (Score:1, Interesting)
Re:Comparing pluspoints (Score:3, Interesting)
Score: +5 wishful thinking. How can a single-platform platform be more open than Java?
C#'s standardization is simply a marketing trick by Microsoft to lead people into
Re:Comparing pluspoints (Score:3, Interesting)
They are random, I just listed what came to mind.
My personal opinion is very strong towards Java.
Cross-platform outweighs everything else by far.
I wouldn't exchange Eclipse against VS.NET 2003 for one day, it feels like your left hand is cut off.
VS.NET 2005 will catch up on refactorings but the Eclipse platform is gaining a competitive advantage which can't be beaten by MS: It is becoming a crystallisation point for all kinds of open source plugin tools like database browsers (our own brandnew Eclipse plugin will go online on Monday), JSP editors, language converters, you name it, it's there.
One very important pluspoint for Java which I forgot to mention:
You get all the sources.
You can debug into them and see how Sun's professionals (try to) solve things. Yeah, sometimes (Swing) you can also see that Java does let you write awkward code also.
Re:Comparing pluspoints (Score:3, Interesting)
Yes, I trust the Mono guys to catch up very nicely.
How many "dialects" are there of Java?
Talking of GUI dialects. There is:
C# only has two major dialects:
You can take a decision to start today, there is a clear one-and-only choice, with little risk of discontinuation.
You can't have it both ways; it's either standardised, or it includes GUI stuff.
I think Java and SWT is a good choice.
Squeak (Score:3, Interesting)
If you'd like to develop new ideas in UI's and really experiment with different ways to handle them, probably neither Java nor C# will really help much.
But squeak [squeak.org] (a smalltalk implementation) might. You should at least give it a serious look. Of course there are other possibilities (self, raw X windows...) but squeak looks like a good one to me.
.NET has primitive layouting (Score:4, Interesting)
I've you're used to Java's SWING layouting, you'll find C#/.NET ridiculous and primitive.
In .NET, you only have one, fixed layouting mechanism which uses either "Dock" or "Anchor" (read specifics in MSDN's Control class documentation [microsoft.com], specifically the "Anchor" and "Dock" properties).
If you're doing UI prototypes I really think that this is a severe limitation.
Other arguments against C#:
Most answers seem off topic ... I suggest Java (Score:3, Interesting)
Probably the authors of such posts should at least have watched the video?
Back to topic:
I suggeest to stick with Java for several reason:
a) why dropping a succesfull existing system because of language?
b) why forcing all people allready working with it to learn a new language/environment (libraries and such)
c) you likely get FAR MORE developers (researchers) for Java based software than for e.g. Python
There are people like me who simple never would touch Python.
Why the crowd may ask? I simply can't cope with the syntax. I hate it, I have an awersion against it. I can't stand it that as soon as you try to some meta level stuff everything is done with full capitalized variables starting with __. I cant understand why you have to declare the "this" pointer in each method, called self -- by convention, instead of simply "having one" like in C++/Java. Its a dynamic typed language, I simply can't work with something like that. Thats just me, but there ARE programmers LIKE me, who simply hate languags liky Python and e.g. TCL.
d) Java has enough bindings to scripting languages like Groovy, TCL, Python(Jython), Ruby(JRuby) and a lot of others. It is far better to keep your "kernel" in Java and let the users descide if and how they put additional services or "experimental software" on top of it. So all the guys yelling Python is so much better can use it without blocking me from using Java
Switching to C# gives no new options, but just different ones and IMHO far less mature ones.
Lets look at platforms, in case you want to use a scripting language with such a binding to access your software written in C#: Installing software on a machine allready having Java is merly a download/copy process. C# based software (or GTK/Qt) OTOH needs on Windows likely to be "installed" and the user needs admin rights. For a geek it is easy to install Qt or GTK on HIS OWN windows machine as well as on any other machine/OS he has the rights to. But a PC pool in a university likely has more rigid management.
However for a cross university developemnt process, its better to stick with something simple, where not every PC, Linux or BSD or Windows, needs to have additionaly software: Mono,
e) Releasing your software (even internal) under different languages will undoubtable lead to an enourmous increase in support questions.
Why does my Python call give that silly error message? Because the user gave a wrong argument (type)
The more complex your system becomes, like a lot here on
angel'o'sphere
Re:Comparing pluspoints (Score:1, Interesting)
Ironically, Sun's license exists for one and only one reason: to keep Microsoft from taking it over. What we're seeing with C#'s lock-in nature is exactly what Sun didn't want to happen to the community. Yet you somehow see C# as a good thing.
Mono supports a tiny subset of C#'s libraries. As far as I'm concerned, mono has no shot at catching up with Microsoft here.Re:Stick with Java (Score:2, Interesting)