views:

52

answers:

3

I need to learn a language for writing web applications (not websites!).

After some research in google and stackoverflow I ended up that the choice should fall in:

1) Ruby + Rails

2) Python + Django

3) c# + ASP.NET

For sure even pickng one randomly would not be a bad choice, but my question here is specific to UI controls. I come from the win32 developmenet world, so in my past experience I was in sites like DevExpress and Telerik that sell ASP.NET (or silverlight) controls like advanced grids, scheduling components, treelists...

So ASP.NET is covered, since Ruby/Python for me currently are totally unknown can you please shed some light on the UI side? I mean how in those worlds UI controls are managed? Where to find them?

All is done using libraries like ExtJS or JQuery? How does it work? (it is a newbie question, so forgive the over-simplicistic approach).

+1  A: 

HTML only provides some "default controls". Such as dropdowns, buttons, hiperlinks and checkboxes.

More elaborated controls such as grids or treelists have to be built on top of the page using a combination of javascript and images. There are several libraries out there for doing so, my favourite one being jquery UI.

Ruby + Rails doesn't include any complex UI elements "out of the box" (just plain controls), but including jquery UI (or any other javascript library) isn't really very difficult.

I don't have much experience with Python and Django, but it is more or less the same history: they don't come with "advanced controls" by default; they just provide the regular html controls.

I have even less experience with ASP.NET. It could very well come with a UI library - you would have to look at it.

I've got a couple other remarks: you might be giving too much importance to UI elements. What differences a web application from a web site is not the fact that it uses this or that control; It's the stuff that happens on the server side. Which is, probably, where you will spend most of your time developing stuff.

With this in mind, I recommend you to re-think your question. Instead of asking yourself "what gives me more UI elements more easily" ask yourself "what gives me an easier time developing the server side".

My answer to that second question is, "probably Ruby on Rails". The amount of things it comes with may not be evident at first, but it enforces lots of good practices - from naming conventions, to testing, to unobstrusive javascript (that one on rails 3.0 mostly). The list just keeps going on. And on top of that, its community is fantastic.

In any case, please note that this is just my opinion and that I'm not very experienced on the other 2 systems - I just gave them some exploratory looks. You should check it with other sources.

egarcia
thanks for the reply, but I am not going to modify my question because the "modified question" has already been asked many times. So somehow you answered my question because you told me that jquery or extjs are the "advanced UI" for the not ASP.NET world (of course also in ASP.NET they can be used, but there are alternatives as I mentioned).
I didn't want to imply that you should modify your question; just that maybe you should reconsider your priorities. Your question was just fine.
egarcia
I am not a full time developer, I also spend lot of time with customers and with many people for which UI = application, this is why I have an UI-biased vision of the technologies.
+2  A: 

Ruby on Rails is a server-side framework that processes HTTP requests and responds with HTML†. It doesn't have any concept of the kind of UI controls that you're referring to.

However, it can integrate with JavaScript frameworks such as ExtJS or jQuery and there are some Rails plugins or RubyGems that make this integration work easier. For example, this Railscast shows an example of using a calendar within a Rails application.

†Usually HTML. It can also respond with XML, JSON, text or whatever you like really.

John Topley
A: 

If you're already familiar with C# and ASP.NET, why not use that?

Of course if you know Python, the Django docs are a good great place to start. Even if you don't know Python they'll at least give you an idea about what it will take to learn/use Python+Django.

HTH!

Wayne Werner