views:

285

answers:

6

I'm currently in the pre-planning stages of a solo web application development project for university, which has about a year as time constraint. The application will have certain wiki-like features and may end up getting a high volume of traffic in the future, which is why whichever language and framework I choose must have as priority the capacity to deal with a lot of stress in a sufficiently efficient manner (meaning it shouldn't be a server hog, since that would mean higher hardware, maintenance and other associated costs). A close second priority is reducing the development time and complexity.

As of now, I'm facing a case of analysis paralysis since there seems to be a lot of languages to choose from. For example:

  • PHP
  • Ruby
  • Java
  • .NET
  • Others...

And also frameworks such as:

  • CodeIgniter
  • Symfony
  • Zend Framework
  • Ruby on rails
  • ASP .NET
  • Many others...

As far as I've seen there seems to be some kind of tradeoff between development convenience and efficiency, so I'm trying to find a balance between those two things (among plenty of other considerations).

So far, I know PHP, Java, C#, Visual Basic at an intermediate level. Still, I wanted to leave the language option open, since I'm willing to learn another language if necessary, ruby, for example, since it seems quite interesting.

On the other hand, while this decision will probably not be objective enough, there are some numbers to take into consideration. I believe I've read that java, for example, is slower than PHP.

So, in the end, which should I use based on the application's needs?

If you have developed something similar, which of the options have worked for you?


EDIT: I have read the answers and some other resources, and most people say any language can scale and be as efficient as you need it to be, provided you know how to define a scalable architecture and optimization techniques. While this is true, and sounds quite heartening, it is also true that some languages/frameworks are more resource hungry than others, and of course costs is a constraint (which is almost always so, but I forgot to add in my question originally).

Also, using framework is almost a given now.

+2  A: 

Although I honestly haven't used it much, when I read about what's being done with Python, it seems to have the kind of advantages you're looking for - robust extensibility, scalability, and a sense of cohesiveness that I find to be missing from other languages (PHP in particular).

I would consider Python/Django, if you haven't looked into it.

overslacked
Thank you for your answer, I will look into it.
Kenji Kina
Python and Django is cool, but I will refrain saying that Php in particular or any other languages. Because this is not true. Anything can scale if it s designed to scale.
python+django it's not only productive. it's __fun__.
Stefano Borini
+7  A: 

Since its a solo endeavor, and you are clearly working with a time constraint, use the one your best with.

There are plenty of examples of high volume sites that use all of the technologies you mention. Honestly, until you get gobs of traffic it's not going to make that big a difference. And even then there are things you will then (hopefully) have the money to use to mitigate the problem.

Trying to convince you of any particular language/stack will really boil down to the preferences and/or prejudices of the person making the recommendation.

AnonJr
+1  A: 

Since it's a university project I'd give serious thought to learning Ruby and Ruby on Rails. It's a very productive environment with a lot of really good books and resources and community to fall back on. And if you do go commercial, it has enough legs to take you fairly far.

Also check out jQuery, a very powerful and easy-to-use client-side Javascript library that should simplify some of your Wiki user interactions.

Jim Ferrans
+3  A: 

Are you aware there is no a real definitive answer for this?

All of them have pros and cons, and the ability to create something with either of those varies depending on the developer and the design of the application.

Since you're going to develop this thing by yourself, the best thing you can do is pick a language you're comfortable with.

So I propose the following:

From you application choose the simplest thing that you want to build ( the login page for instance, and about page, or pretty much anything. The point is it should be extremely simple )

Once you've pick what to do, code that page with all the available options and measure how long does it take you to do the following and/or how difficult it was to:

  1. Get the SDK, environment, tools etc redy.
  2. Create the page it self to a point where you're satisfied.
  3. Create a mock up work load test ( send several requests )
  4. Measure how much does each takes in terms of memory, cpu, disk usage etc.
  5. Get documentation and support in forums etc for the given technology.
  6. Finally and more important, which one did you like most.

It is vital the page is extremely simple. Dedicate a week or two to this exercise, and do us a favor, post the results back ;)

It is not use that I tell you: "Do it in C# with asp.net because blah blah bla" if you think it sucks! and you'll either drop it in the way and change for something else.

This experiment is also useful for future references.

OscarRyz
Indeed I'm aware there's no single objective answer. However I have found some information noting how Java is slower (albeit not so much as before) than PHP, for example. In the end I might end up trying to do what you suggest.
Kenji Kina
+2  A: 

Facebook runs on PHP

Google uses Python and Java

M?S[FOU] uses .NET

So as other have said - it's what you know, and what you can leverage. If you don't know any, then pick one and run with it.

warren
A: 

You can go with Pyhton + django . It is a cool way to create an application.

Tauquir