1

Now I have work with PHP and ASP.NET quite a bit and also played around few other language for web development. I am now at a point where need to start building a backend platform that will have the ability to support a large set of applications and I am trying to figure out which language I want to choose as my core language. When I say core language I mean the language that the majority of the backend code is going to be in. This is not to say that other languages won't be used because my guess is that they will but I want a large majority of the code (90%-98%) to be in 1 language. While I see to benefit of using the language that is best for the job, having 15% in php, 15% in ASP.NET, 5% in perl, 10% in python, 15% in ruby, etc… seems like a very bad idea to me (not to mention integrating everything seamlessly would probably add a bit of overhead).

If you were going to be building a large scale web platform that need to support multiple applications from scratch, what would you choose as your core language and why?

2
  • 2
    Java, because I like it and I know about it. Pick what you like and know best. ;)
    – Marcelo
    Commented Jun 28, 2011 at 20:05
  • ASP.NET, because I like it and I know about it. Pick what you like and know best. ;) Commented Jun 29, 2011 at 0:29

3 Answers 3

1

I agree that you don't want to create a Whitman's Sampler of languages. Tracking different versions of different languages creates a serious maintenance burden, which is multiplied across all of the systems used to develop and deploy your app. It also means that your team members need to be multilingual in order to deal with day-to-day operations.

For a number of reasons, Python is my preferred language, but there appear to be fewer experienced Python programmers in the job market than there are PHP or Java programmers. Since you describe this as a large scale web platform, you must take your TCO into account (that means your own company's TCO and/or your client's), and the choice of language can have a definite impact on it: in terms of available personnel, initial development time/cost, and long term maintenance and upgrades.

From a performance angle, your choice of database will almost certainly have far more impact on the project than your implementation language.

0

If you go with Java and the JVM you get a bunch of great languages you can use as well. Groovy, Scala are similar to Java so the learning curve isn't great but you get different features with all three.

2
  • The JVM does give you a very stable, mature and highly performant platform to work on. As Matt points out, you can then polyglot program away to your hearts content! Commented Jun 28, 2011 at 20:07
  • I don't know, I always found that java based applications were buggy and memory hogs (of course this could have been the developers fault and not Java itself).
    – ryanzec
    Commented Jun 28, 2011 at 20:21
-2

What language you choose depends mostly on your team and your experience. Using a superior language to something you are intimately familiar with may yield some benefit language wise - but you'll spend a lot more time learning that new environment. (But we all choose the new and shiny stuff don't we all?)

What matters even more is the platform you are going to work on:

Being a .NET Programmer myself I can only advise you to go with a UNIX stack.

Why?:

I've started to enjoy Ruby a lot, and as others already said, if you run on a JVM you get access to a lot of interesting and innovative languages while being able to automate most of your tasks through unix tools. Being on .NET doesn't give me that flexibility. I can't run other languages on the .NET platform (except for the few that Microsoft is developing themselves) while everything else has to be ported over. And those ports usually arent as fast or stable as their Unix equivalents.

Also, on Windows every release to a production server is a pain (unless you spend a great deal of time improving that process) whereas Unix deployments usually involve some bash script with SSH or if you need something more you can go with Maven or Capistrano..

Also, I have to say that once you are on a Windows server it starts looking grim for other languages. If you decide later on in the project you'd rather use Ruby you are able to run on IIS through CGI, no doubt about that - but you'll have a hell of a time trying to make Ruby work on Windows (compiling database drivers or some native gems is usually a nightmare).. And MingW/CygWin are no real solutions to this either.

Also going with a .NET solution also involves going with MSSQL - and good luck finding working drivers for most open-source kits for that.

4
  • 2
    No you are wrong. We can use MySql and Postgresql on Windows servers and there are plenty of stable first class drivers available.
    – user29339
    Commented Jun 28, 2011 at 21:20
  • yea, the biggest reason I am lean towards PHP over ASP.NET is because of dealing with a windows server. I have no experience and from what I know it is not that easy to manage (linux is not much easier but I at least know it a bit). My concern with PHP is performance compared to ASP.NET. I might be over thinking the performance thing (I know the biggest performance bottleneck is usually the database) and there are things I can use to offset PHP performance (memcache, APC, etc...).
    – ryanzec
    Commented Jun 28, 2011 at 22:28
  • @ryanzec if you care about "performance" use haskell/erlang. I doubt ASP.NET has noticable perforamnce increase compared to PHP.
    – Raynos
    Commented Jun 28, 2011 at 22:45
  • @Audora I know there are thousands of drivers for MySQL and Postgres. But if you run Ruby in a somewhat current version with newer versions of Rails/Sinatra you'll run into problems with incompatible gems. I was not saying that there are no drivers or that they are unstable. It's just that the OSS crowd (especially the Ruby guys) simply don't care enough about Windows to really care to keep the gems really up to date as they do with their Unix equivalents.
    – Tigraine
    Commented Jul 1, 2011 at 9:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.