views:

228

answers:

10

Does the choice between language X and language Y (and perhaps also Language Z) have that much of an impact on the success of a project? I understand that there are some languages that just aren't the right fit (I don't think you would write an operating system in Java, for example), but between two or three languages that all work, does the final decision really matter that much?

EDIT: The assumption that the team is equally skilled with all languages should be assumed, otherwise there are a number of other factors that come into play beyond the language itself.

+3  A: 

Given that the team in question has equivalent experience in the languages you're choosing from, then there's no difference.

The biggest indicator of success vs language has always been picking the language the team is best at, assuming the language is reasonably suitable for the task.

Adam Davis
+2  A: 

I think it depends more on individual coding style and the experience of the team. If you have half a dozen developers with extensive Java experience, Lisp probably isn't your best choice. A Lisp hacker would probably be frustrated to the point of lost productivity if you forced them to use C++.

At our project we're doing some Ajax stuff, and productivity actually went up by 50-100% when we started using GWT rather than Javascript, since most of our people were experienced in Java but very new to Javascript. However, I've been learning functional programming, and actually would probably have been more productive, personally, continuing in Javascript.

levand
+2  A: 

The language itself won't decide about success or failure. The people that are involved in the project will. And of course, people have preferences and repugnances. So the choice for a particular programming environment should always be made according to the team and obviously the technical fit for the requirements of your project.

By the way, there IS an operating system in Java...

Martin Klinke
+6  A: 

The choice of a language is, more often than not, a long term commitment. Assuming you've ruled out languages inappropriate for the task, here are some things to consider about each language in question:

  • How well do the current developers know the language?
  • How easy will it be to find future developers who can jump in and contribute in this language?
  • Are there sufficient online resources / communities to help solve problems you might encounter?

If the answer to any of the above questions is "no", then make sure the benefits down the road truly do outweigh the risks.

Matt Dillard
A: 

I think there is a difference since the architecture of the application will differ greatly depending on what architecture is imposed by the language.

For example writing an app in Smalltalk with naturally yield an Object Oriented Architecture (we hope) but writing it in Haskell would yield a functional one.

Now, dismissing the argument that it takes the same amount of time to code the app regardless of the the architecture (which I think is imperically shown to be false), there has to be an effect on the projects success.

Just my 2 Cents.

Allain Lalonde
A: 

It's about as important as who your parents are when you are born. In other words, it matters for all the reasons you want to ignore for the sake of this question.

In other words, it doesn't matter if you have equal ability in all languages.

MSN

Mat Noguchi
+1  A: 

Many times, the answer to this question is no - it does not make that much difference. However, the following considerations have forced our team to go with one language over another in the past:

  • Performance. Jeff Atwood had an article recently on CodingHorror about the performance of compiler versus interpreted languages, and the differences were (as expected) enormous. We do a lot of image manipulation of gigabyte sized imagery - and the libraries we use for that are all implemented in C or some parts even in assembler. For real-time 3D graphics work we normally use C++. Other stuff doesn't seem to matter as much.
  • Legacy code / Interop. If you are developing an app in a modern managed language, but you need to access a lot of legacy native C++ code, then the interop features of C++/CLI could save you a lot of time vs using C# and having to marshall everything. But other factors could out-weigh that (see next point).
  • Tool support. Not all tools are present or equal for all languages. If you want the latest, greatest UI Designer, you might still choose C# over C++/CLI. The Visual Studio team has chosen to focus on C# for many WPF UI desginer tool enhancements - C++ got a newer version of MFC with the Office Ribbon...

As always, it comes down to analyzing your requirements, and evaluating which one is best for you.

Brian Stewart
A: 

This is a very important decision, it does matter a great deal. Once you pick a language you will be immersed in it from start to finish. Your choice of language could effect performance, productivity, and code quality just to name a few.

Aros
+2  A: 

Each language has a strength and weakness. When you choose your language, you should pick the one that will best fit the project. These days most languages can do everything any other language can, but if you have to work twice as hard to get there is it really worth it?

I wouldn't use a screwdriver to pound in a nail. I could make it work, but if the hammer is next to me, why use the screwdriver?

Mike Wills
A: 

You should pick the language that makes you and your peers happy. Sometimes it is the language you are most familiar with.

For my last project I chose Python on a LAMP stack. My other option was C#. I'm happy with Python because it is dynamic, which implies that you make fewer assumptions about your code, and for my project raw performance doesn't matter (otherwise I would have chosen a compiled language).

Also, a programming language affects the way cognitive processes work, and thus every language has a specific culture that can affect the architecture of your application, so one way to solve this dilemma is to take a look at that language's success stories and see if your application would make a good fit ... for example Ruby (with Rails) is known for being excellent for database-driven websites, but Twitter is an indication that it has scaling problems if you would try to build a messaging platform. YMMV.

Alexandru Nedelcu