views:

125

answers:

3

Hi,

I have two projects ahead and I'm pretty new at Ruby and Ruby on Rails. It's real fun! =) Besides, I count myself fluent in C++ and Java (and JavaEE), but have very very few experience with C#.NET and Ruby. Also, I'm pretty eager to learn Ruby, but don't really want to waste time to develop skills on C# - which is pretty similar to Java (at least for me).

PROJECT 1: I will be developing an enterprise web application which should scale well with 100.000 hits per day. Which technology should I go with?

Options are:
1) Java, JSP, Servlets - experienced
2) Java, JSF, JPA - kind of new at this but have a grasp of it.
3) C#.NET - new at this
4) Ruby and Ruby on Rails - new at this - though I am very eager to discover what RoR is like!

Among all of these, which one do you think would scale the best? (Am I going to have issues with scalability if I go with RoR?) Easier and faster to develop and maintain? More secure? More programmer-friendly?

PROJECT 2: Another project is a desktop application (with somewhat basic UI elements) that will try to schedule something. The algorithm behind will involve some AI and Machine Learning techniques and very heavy computation. The program, once started, is expected to take 7-20 hours to output a decent schedule.

Options are:

1) C++- fluent with C++ but UI will be very painful. Also, I wanna try something new - been programming with C++ all the time!
2) Java - fluent and UI will be easier.
3) Ruby - very new at this. But very eager too. Will Ruby be able handle heavy computations? Is it going to be very different in terms of performance?

Both projects are due end of Spring term - so no hurries. I just want a decent product, an A and valuable experience at the end! for both.

All comments and answers are appreciated. Thank you very much in advance.

A: 

Java / C# / Ruby for the web project I think are more or less the same. So what would I choose then? It's a question of your expertise in any of this.

Every expert of one of these languages could tell you that their language is the best, but it's only a matter of knowledge. You can have the same performance / speed in any of these, if you are a real expert.

Me, personally, as I develop every day in C#, I would tell you I would choose this one, but it's because of what I am saying to you.

If you were not an expert in any of these languages, I would probably recommend you C#, because it's easy to start, easier I think than the others, there is a lot of learning material, the GUI is astonishing, the .NET libraries include almost anything etc...

For the second, probably C++ for it's optimizations.

netadictos
A: 

Java and C# are the most likely to get you a job after school. If you have the flexibility at this point, I'd learn something new.

Joshua Martell
That is so true.
jpartogi
Yep, for the job market those two are pretty much it. Ruby is a 'cool' area to play in but it's a niche field that still hasn't gained widespread adoption or support. C++ will be around for a while of course but you really need to have a specific requirement that demands it these days. There's just no reason to be doing your own memory management and such anymore.
Crusader
A: 

Since you're already experienced with Java, something you haven't mentioned that you should research is developing an RIA front end using Adobe Flex. (Had you been a C#/.NET guy I'd have said Silverlight.) This would let you cut the JSF out of the project and eliminate a long list of other stuff you typically need to build an old school Java web front end. It's also good for preventing your front-end/presentation layer code from mixing up with code that runs on your server exclusively.

With Flex remoting you can use the very efficient AMF binary protocol (faster than competing AJAX protocols based on testing) and your Java code condenses down to just a bunch of method calls that do nothing but respond to requests from the Flex client (or any other 'client' -- this of course forces you to decouple your front end code from the back end--a good thing--and gives you the flexibility to entirely re-engineer your client code without touching server code.) As a bonus you'll never have to patch your code to fix a problem with a new browser or new version of a browser since you're running in (effectively) a 'virtual machine' that's shielded from the non-standardized and rapidly changing browser environment (DOM/DHTML/JS/etc).

Crusader