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#?"
Stick with Java (Score:3, Insightful)
Carry on using Java if you can, and switch if you have to. No point in changing language if you can avoid it (especially given how similar Java and C# are).
Re:Stick with Java (Score:1)
Re:Stick with Java (Score:1)
Re:Stick with Java (Score:2, Interesting)
C# vs. Java? (Score:2, Informative)
If you're not concerned with performance, and you're in an academic environment, why not use a language like Ruby or Lisp?
or Visual Basic (Score:3, Insightful)
Considered Python? (Score:5, Insightful)
I realize that this probably isn't the kind of thing you were expecting (I'm guessing you expected to get answers like "C++"), but I think it's a good idea.
But of the two languages that you have now, I would stick with Java simply because it is completely cross platform (plus just about everyone getting out of school now knows Java because it was so popular/"language of the future", where as many don't know (or have only had an introduction to instead of a large amount of work with) C#.
But the great thing about Python is you could use it as an itermediary between toolkits and such. Without changing your API, you could replace the Python code so that it used Win32 instead of Swing or QT without making your users learn something new. You want to change the back end from C++ to C or to something else, the interface and the way they call things stays EXACTLY the same.
Just a though, from a guy who has recently discovered and fell in love with Python. And things will only get better with Python 3.0!
Re:Considered Python? (Score:5, Informative)
First I'd like to say, VERY cool concept. Like sometihng out of a movie. That is awesome and looks like it would be so much fun to work on/play with.
OK, back to the topic. I still think that Python would be a good language. It has the usual features (object oriented, etc), it can be modified at runtime easily (loading/replacing code, a cool side effect of an interpreted language), and there are TONS of standard libraries (not unlike Java, only more) that would give you interfaces to the toolkit you use to draw (OpenGL perhaps?), and other things. Give it a look.
But awesome application. Now if you could just combine that with a 3D display it would be amazing. And think of the games you could play on something like that (something akin to Qix using your finger perhaps?) Or the "coffee break" game from Mario Paint, or xbill, the list goes on!
Re:Considered Python? (Score:1)
Re:Considered Python? (Score:1)
Re:Considered Python? (Score:1)
Python is the language of choice mhen talking about accessibility for newcomers in an API.
You can introspect the code easily, you can modify the code behavior at runtime if needed, and it's very easy to build APIs with.
Python is a perfect "glue", it seems to me that's what you need.
Re:Considered Python? (Score:3, Insightful)
Not personally convinced that Java is where it's at where UI research is concerned, but I'll confess freely to not having RTFA.
Re:Considered Python? (Score:2)
My post wasn't designed to give an answer, but a direction they might want to look in.
Re:Considered Python? (Score:2)
If you're using Java already, I strongly recommend checking out jython [jython.org], an implementation of Python in Java. I love it for small GUIs because it gives me access to Swing with much simpler syntax than Java.
Re:ROFL Python Zealot Alert! (Score:2)
Java (Score:4, Informative)
If and when Mono implements Windows Forms fully, so that they are sufficiently similar, you may want to re-evaluate at that time (depending on whatever other factors would influence your chioce).
Re:Java (Score:1)
Yeah, if he wants his apps to be fugly. Swing still doesn't have decent fonts in Java-5
Re:Java (Score:2)
Re:Java (Score:2)
See, I miss Slashdot for a week and I miss that Swing got a multi-finger glowy-board input model. Those JavaSoft guys are always adding features!
You're asking *Slashdot*? (Score:5, Insightful)
Actually, if C# was supported under other platforms as well as it is under Windows, then I'd say, go forit.
However, since C# (and
When in doubt, go where there's more flexibility.
Re:You're asking *Slashdot*? (Score:1, Interesting)
Re:You're asking *Slashdot*? (Score:2)
It's the one thing they've really done right.
Re:You're asking *Slashdot*? (Score:1)
nasm (Score:5, Funny)
C# is powerful in the right hands, but you loose platform independence. (Mono isn't there yet IMHO)
Re:nasm (Score:2)
Re:nasm (Score:2)
UI != GUI
UI = User Interaction
GUI = Graphical User Interface
Tell me how long you will need with VB6 to distinguish wether my hand is lying flat on the table or is only touching the table with my little finger and is perpendicular to the table?
Last time I checked VB6 had no standard controls or events like "OnPalmFlatOnTable" or "OnHandPerpendicular" or "On3FingerTouch".
The researches are not working with GridBagLayout
Comparing pluspoints (Score:5, Insightful)
--------------------
+ more OS Platforms that you can run on
+ Eclipse as a terrific free IDE
+ huge number of free open source libraries
+ further away from MS (O.K. there is Mono too, but you only have one single second vendor that you can rely on)
Pluspoints for C#
-------------------
+ one single choice for UI development
+ more language features (this may be a minuspoint for corporate development, when you only want one way to write things)
+ one language standard, less dialects
+ believe it or not, it's an open standard and (on paper) less proprietary than Java, which is owned by Sun
+ easy GUI development for WinCE or windows mobile, including many mobile phones
+ possible easy interaction with other
+ easy direct interaction with Windows OS features
Now what do you prefer?
Re:Comparing pluspoints (Score:3, Interesting)
Yes, I trust the Mono guys to catch up very nicely.
How many "dialects" are there of Java?
Re:Comparing pluspoints (Score:5, Insightful)
If you take that away then a number of you C# pluspoints become irrelevant.
While I agree with you about C# being more open than Java (and I prefer it as a language) most people are thick and don't differentiate languages from associated APIs nowadays. With that thought in mind, how many people really mean "C# and
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:1)
Java is proprietary. In theory:
If an Arabian oil company would buy Sun tomorrow and decide to charge USD 100 per Java runtime, they could. I posted something similar to the above as an April-fools-day-joke to the de.comp.lang.java newsgroup on April 1. 2001 and was surprised at the traffic it produced.
C#'s standardization is simply a marketing trick by Microsoft
Mono is reality and it's doing quite well.
Kudos to Miguel, Erik and all contribu
Re:Comparing pluspoints (Score:2)
No, IBM clones made the low-cost PC possible. They just threw Microsoft on there, because not many options existed and UNIX was still expensive. Microsoft rode the wave, finding ways to lock-in their customers, and, now, there is a genuine backlash against Microsoft.
The developing generation of GNOME/KDE-based desktops are going to drive the sub-$200 PC. Not Microsoft, not
Re:Comparing pluspoints (Score:3, Insightful)
Well put!
Its a shame that these discussions get domminated by narrow viewed people with hobby-horses to promote
Personally I prefer the
In practice, however, I'll usually use the Java platform, despite my misgivings about it, since it allows me to use it on other operati
Re:Comparing pluspoints (Score:1, Interesting)
I love these people who claim that Java is more proprietary than C# because Microsoft took a small section of C# and submitted it to EMCA as a publicity stunt. Not to mention that the rest is a Microsoft trade secret and the part they submitted to EMCA is still covered a large bank of Microsoft patents, nearly all of which Mono violates. If Mono was any threat to Microsoft at all, they'd be able to shut it down in a day.
Re:Comparing pluspoints (Score:2)
C# is a good language. In fact I think both it and
Re:Comparing pluspoints (Score:2)
For all practical purposes, they are one and the same. It's just like trying to get a lot of milage out of Lisp without POSIX or GUI layers. It just doesn't happen often. Microsoft understands this 100%.
If C# standardisation is purely a marketing ploy, how come so many 'big-guns' of the Open Source movement have adopted it and have been involved in porting to unix/linux?
If by
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
Re:Comparing pluspoints (Score:2)
Cross-platform development is something nearly everyone thinks is a good idea but very few attempt. Even using Java, you'd be crazy if you didn't test your software on every platform you target.
In many cases, you just can't justify the additional effort.
Re:Comparing pluspoints (Score:2)
Certainly, from the primary posting, I would agree that cross platform was very important in this case. Maybe additional information would help us be more specific.
Re:Comparing pluspoints (Score:2)
Re:Comparing pluspoints (Score:2)
Especially those who can't read
Go with Java (Score:4, Insightful)
The advantage of Java is that it has a standard API that is tailored to multiple platforms.
Or Ada (Score:2)
Re:Or Ada (Score:2)
Can't See Why you would change. (Score:3)
Re:Can't See Why you would change. (Score:2)
I can't imagine why you would think that. He's just researching concepts, not delivering a final solution. Concepts are quite portable.
He should use whatever language and framework expedites his research. Then when the research is complete, he can decide on the appropriate approach to take for a real-world implementation (assuming he wants to).
Re:Can't See Why you would change. (Score:2)
So other people would be more likely to look at and build on the project.
It's like darcs - nice concept, but since its written in Haskell it imposes a barrier to anyone who wants to contribute to the project.
Re:Can't See Why you would change. (Score:2)
Implementation? (Score:2, Insightful)
Re:C# is Proprietary (Score:4, Insightful)
IANAL, and I have myself had reservations about this point...
However, it seems quite unlikely that MS would succeed in choking off core (C# + CLR) Mono development - for a lot of little reasons:
1. Novell appears to be Mono's primary backer and they appear to have real patent leverage w.r.t. MS.
2. Probably not many of the patents covering the core can hold water due to prior art. I think it's been suggested that MS + Sun together could launch a more effective patent attack. How likely is that? (things like WinForms, ASP, ADO would seem to be in greater danger)
3. Mono could still ship with the odd feature stripped or workaround mechanism in place.
4. MS can not simply beat up on who it feels like nowadays; not with the EU and others breathing down it's neck.
As an aside, can anyone think of a *language* implementation that was killed by patent litigation?
--
Mike Greaves
I would choose 9P (Score:2)
If I was making hardware, I'd implement a 9P [bell-labs.com] file server on the device.
This leaves developers free to choose whatever language they feel comfortable with, be it Java, C#, COBOL or Brainfuck.
MFTL Time, again. (Score:1)
OTOH, if it's for your own research, then Python + GUI toolkit is good for rapid prototyping, or there's always Sqeak. (Smalltalk with good multimedia behaviour and performance) Both of these also have the advantage of being Open, which may matter to you later. I like the elegance and
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.
No question; use Java. Avoid OS lock-in. (Score:3)
If you stick with Java, you can move pretty freely between Windows, Linux, Mac OS/X, and *BSD.
With C#, I believe you're more limited.
Additionally, I believe that many more companies offer Java development environments than offer C# environments; with C#, aren't you pretty much limited to Microsoft and Mono? With Java, you can go with Borland, IBM, Sun, even Oracle, and I'm sure there are others as well as "Free Software" implementations.
Just my two cents; this isn't a Microsoft bashing, by the way, it's just a matter of flexibility. Java gives you more flexibility than C#, so I'd stick with it.
That is so funny.... (Score:2)
Python is also free; there is no controlling corporate body; no single source.
I often wonder why we aren't just distributing
Re:That is so funny.... (Score:2)
Oh, and by the way, you're not limited to Sun-provided compilers and JRE's either. IBM has a website full of alternative systems you can use. The Free Software Foundatio
.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#:
Re:.NET has primitive layouting (Score:1)
Additionally, you'll find that large project maintenance has also been significantly improved in 2005. I'm definitely not a non-bias
Re:.NET has primitive layouting (Score:1)
That said, I really don't like Java. So many little things that make C# a better language....delegates/events, unsigned, easy interop with native code, structs, enums (which java finally g
Re:.NET has primitive layouting (Score:2)
That said, I really don't like Java. So many little things that make C# a better language....delegates/events, unsigned, easy interop with native code, structs, enums (which java finally got), ref and out parameters, no stupid physical directory hierarchies to match packages, etc...
You're right, I forgot about these language features. And yes, C# is a nicer language, but the question is whether those syntactic sugars justify switching the established framework and tools. After all, that's going to cost a
Re:.NET has primitive layouting (Score:1)
- Java has "foreach" in JDK5 and it works very nicely for arrays and lists: - Although there are many layoutmanagers for Java, you usually end up writing your own from scratch if you really care for a nice user interface.
- For beginners that want to write user interface I see an advantage to use VS.NET.
Re:.NET has primitive layouting (Score:2)
If you're just doing UI prototypes you don't even need "Anchor" or "Dock" properties, a fixed layout will give you everything you need. Layout managers are useful for handling multiple resolutions or multiple platforms, but they don't give you any additional graphics or interactive capability.
This is research, not a product.
Standard? (Score:2)
Re:Standard? (Score:2)
If you go down so far, you bettere stick with a dynamic typed scripting language.
Suppose you have an OO language on one side and C on the other: when you start to express in C what you can do on the OO side (writing functions for the methods) you have to stick to "handles" for the objects and functions accepting those handles as arguments.
But you are in C now with limited type checking
Re:Standard? (Score:2)
Very few languages fade from viability - check the significant number of current COBOL jobs.
Ten years from now when Java and C# are as nearly forgotten as BASIC and Pascal are now,
Forgotten? Have you any idea how popular Visual Basic is? Delphi (Object Pascal) is still widely used.
C will remain an important language, at least for interoperability purposes,
C is a terrible language for interoperabil
Re:Standard? (Score:2)
C remains the canonical language for interoperability, purely because every existing commercially viable language (like every new language, for at least two decades to come) provides a way to call out t
Re:Standard? (Score:2)
Visual Basic certainly IS Basic - anyone who has used a typical dialect
Delphi IS Pascal. You can type pretty standard pascal
Basic has never had portability, no matter what the dialect. On the other hand, Delphi conforms pretty closely to Object Pascal, and there are many implementations to which most of the code can be ported.
C remains th
Re:Standard? (Score:2)
None of the above (Score:2)
Do what skype did (Score:3, Insightful)
That being said, wxWidgets works on most platforms and you can program it well from many languages like ruby, python, all the c's, c# and so on.
Don't change (Score:5, Insightful)
Honestly, the two languages are close enough in terms of capability that it really boils down to the cost and effort involved in switching.
Cost to remain with Java: $0
Cost to switch to C#: (by the time you've recoded all your "trivial" common routines you've created to work within your particular environment, built
Speak to people who've worked a lot with both languages. Get them to rank both languages out of 10 in terms that are relevant to you. Average the scores across a bunch of people. If C# averages >1.5 more than Java, then consider switching
Game On. (Score:2)
Java is the language that the majority of comp sci programs use to teach programming these days, and it is very, very good as a general purpose programming language. Its abilities and limitations are well u
Why do UI researchers need a programming language? (Score:2)
It also seems to me that if you are using Java or C#, which are commercial systems unlikely to be influenced by academic research, you are a bit behind the curve. WIMP interfaces have been around for 20 years now.
If you have research that is best shared through an SDK, then you should use the language and tools of your most likely or rec
Re:Why do UI researchers need a programming langua (Score:3, Informative)
Re:Why do UI researchers need a programming langua (Score:2)
Java isn't so strong natively on I/O but that's what JNI is for. Wrap your primitives in JNI and do your work in a higher-level language.
Speaking of which, the video just screams LISP, though I have no experience interfacing hardware with LISP. Ruby might be a good second choice - you can wrap c functions with Ruby like you can with JNI and it's a more powerful language than Python which might help in the more lambda-oriented parts o
Re:Why do UI researchers need a programming langua (Score:1)
Have a look at userinterface-description languages (Score:1)
UIML is a subset of the XML-language for implementing platform- and programming-language-independent user-interfaces.
Maybe you should have a look around, whether there is a good UIML-renderer for Java.
If your research is into this topic, you may even want to develop a UIML-renderer for Java yourself! I'm sure many people would be interested in an open-source project with
Stick with Java (Score:3, Insightful)
If you stick with Java, you can use Java language compilers from many different vendors, including gcc, and your code will be portable between many different Operating Systems.
Java is more stable and mature, has a huge developer community and is supported by enormous, comprehensive class libraries.
some of my best friends are java programmers (Score:2)
Just use your bathroom scale. Sybex Mastering Java 2 weighs in a 1236 pages. Harbison & steele, who covered their topic with equal thoroughness and greater clarity, managed C a reference manual in 392 pages. Java decided it had to be the OS and had to move a few layers out into the application space in order to be viable...it may have accomplished that but simplicity?
The author is a liar or a fool (Score:2, Insightful)
I perform UI experiments largely with pygame, or perl-SDL. It gives me a chance to rapidly try out USER interface changes as I don't have to worry about whether or not delegation is "easy enough" to facilitate the change.
With Java and C# (or C++ for that matter) you've got an awful lot of work building classes and inheritance and if experimentation demonstrates a particular (unexpected!)
Road Not Taken (Score:2)
Given that, what would the community advise by way of a choice between Java and C#?
Neither. Having watched the video, I am most reminded of AudioPad [jamespatten.com]. For that, "Most of the code is written in Python, except for the low-level tracking code, which is in C and C++." I've also used a demo inspired by that called Mix done in Io [iolanguage.com]. UI experts want to be able to very quickly scale up from the low level of the device to the high level of the research. I would thus suggest you target C in an OO fashion, whi
The choice is trivial. (Score:2)
My personal preference is C#, simply because I enjoy the property syntax and delegates, both of which Java does not offer. Plus I'd rather code in Windows.Forms than Swing any day of the week. But you're not doing desktop GUIs, are you? Anyway, yo
The more I think about it... (Score:2)
You could even consider a multi-tiered approach: create a
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
My experience with UI prototyping in Java vs. C# (Score:2)
- Java has much better IDEs available. The refactoring support in Eclipse is a critical tool for research / prototyping projects, letting you cl
Which has better tools for your needs? (Score:2)
You are doing UI Research... Chances are, you are going to want to do things 'outside the norm' for existing UI development. Which language has better support for this? Frankly, I don't know, because I don't know C#.
I do know Java. Java has AWT, Swing, SWT, JSP, Java Server Faces, etc. With Swing, you can easily switch between different 'look and feels', and has the 'pluggable look and
Powerpoint (Score:2)