views:

211

answers:

1

Hi everyone.

For as long as I can remember, I've always had a "favorite" language, which I use for most projects, until, for some particular reason, there is no way/point on using it for project XYZ. At that point, I find myself rusty (and sometimes outdated) on other languages+libraries+toolchains. So I decided, I would just use some languages/libs/tools for some things, and some for other, effectively keeping them fresh (there would obviously be exceptions, I'm not looking for an arbitrary rule set, but some guidelines).

I wanted an opinion on what would be your standard use cases (new projects) for Python, Ruby, and C# (Mono).

At the moment, I have time like this:Languages:

C#:

  • Mid-Large Sized Projects (mainly server-side daemons)
  • High Performance (I hardly ever need C's performance, but Python just doesn't cut it)
  • Relatively Low Footprint (vs the JVM, for example)

Ruby:

  • Web Applications

Python:

  • General Use Scripts (automation, system config, etc)
  • Small-Mid Sized Projects
  • Prototyping
  • Web Applications

About Ruby, I have no idea what to use it for that I can't use Python for (specially considering Python is more easily found installed by default). And I like both languages (though I'm really new to Ruby), which makes things even worse.

As for C#, I have not used a Windows powered computer in a few years, I don't make things for Windows computers, and I don't mind waiting for Mono to implement some new features. That being said, I haven't found many people on the internet using it for server-sided *nix programming (not web related). I would appreciate some insight on this too.

Thanks for your time.

+1  A: 

Mono support for never .NET technologies like WCF or ASP.NET MVC is getting better-and-better, but you will always constantly hit the "mono is the most evil thing in the world besides Microsoft" wall. If you're not using SLES/SLE/OpenSUSE then you're probably won't get too far (except for maybe Ubuntu, where the 10.04 LTS version has a quite decent mono version). Too bad, because I think ASP.NET MVC might be a great replacement to frameworks like rails or django, mainly because development is almost as easy in either of them.

That said, we are currently building a project in which the half of the project is made in rails, while the other one in ASP.NET MVC. The project is divided in the following way:

  • Rails is used for most of the frontend part, and handles a large part of the application
  • S#aml (An ASP.NET MVC based framework for mono maintained by me) is used in two cases:
    • XSLT2 transformations (because Saxon is the only free XSLT2 solution we found, and it's CLR variant was simply more performant on our config as its JVM variant. The other reason was that noone could persuade me to program in Java/JVM :) ). The fronted part usually calls this service when it needs an XML converted using XSLT2 using a simple REST API
    • In a sub-project having a very complex and partially proprietary (and governmental) database schema. Fluent-NHibernate is much better than either AR or datamapper when the schema is very complex, and you can't change it, because it contains legacy government code. The frontend talks to this service using REST and JSON.

I don't really know much about python but it's mainly similar to ruby in a lot of ways (except that the community might not be that "aggressive"). I don't think that there is any use case where python is a better solution than ruby, except for the fact that python is usually more available on linux servers than ruby (bit it's still not as widely supported as PHP/PERL unfortunately).

We are using ubuntu 10.04 LTS and mono 2.4.4

SztupY
Oh, well, I did not expect to get flagged that aggressively.@SztupY: First of all, thanks for the detailed answer. As for ASP.NET, I don't really want to use .Net for the web at this time, I can make websites much faster in something like Python (though I haven't done enough research on the matter to be 100% sure). I will definitely take a look at your framework though (specially considering it is BSD licensed, not GPLed). As for Ruby, what makes you reach that conclusion, specifically? I'm afraid I'm too much of a Ruby noob at the moment.Thanks.
I'm a python noob, so I don't know. I was just saying that they both have similar use cases, for some ruby is better (imho for web development ruby is better), for other pythons is better (it has more modules that integrate with legacy/C based applications, mathematical functions, etc.). They are both dynamic languages and the frameworks written on them use quite the same features, so no distinction here. Both are useful for replacing bash too, and for prototyping. It's just a matter of taste which one you prefer.
SztupY