views:

439

answers:

14

Duplicate:

Best Language for Rapid Prototyping?

Which language should students start with?

What coding languages should a web developer know?

What are some criteria to keep in mind when selecting a language to use for a project? For example, why should I use Python over Ruby, PHP over ASP, C# over Java, etc. Is it scalability, documentation, maintainability, or how easy the language is to learn?

Thanks

Edit:

I know this is a subjective question, but I'm looking for good business cases to convince a manager to switch from one language to another. I'm NOT doing this to incite a language war or prove how one language is better than another. I simply need some criteria to look at when comparing languages. I'm sorry if my question came off offensive or naive to some.

+1  A: 

The factor which should influence you most when selecting a language to use for a project would be what language you feel most comfortable with.

Update: Scalability is not an aspect of a language, but of your architecture & application code.

cherouvim
+2  A: 

Originally this Q got voted down -2, and I'm not sure why. It's a reasonable question.

How DOES a project team select a programming environment?

First order factor is the type of output. If it is a web app, then Java, C# PHP, and maybe Python, but not Perl, COBOL F# or LISP. If it is a systems app or driver, then C++ yes, but not C#.

Beyond that, it seems to me that in most cases it is environmentally determined. It is whatever you already know, or it is the language that the majority of the team is already comfortable with.

Cheeso
I strongly disagree with the notion that Lisp were not a fitting choice for web applications. There are several very nice packages for that for Common Lisp (e.g. the hunchentoot webserver, cl-who, the cl-weblocks framework), plus all that Clojure (Compojure) can do on the JVM.
Svante
Why not Perl for a web app?
Chris Lutz
See?!!?!? See what I mean?
Cheeso
No, I don't see what you mean. You made some odd general statements, like Perl and Lisp not being good for web development, and people asked why you did them. What did you mean?
Chris Lutz
Especially since the web was basically founded on C and Perl. Oh, we're so young now...
Adriano Varoli Piazza
It's certainly possible to write a web app in C or Perl; And also in Fortran or Lisp or x86 assembler. And it's possible to pount in a nail with a fronzen banana. But none of those tools is optimal. Which is why we have PHP, JSP, ASP.NET, and hammers.
Cheeso
And the "SEE?" referred to my original text, which Rich edited out for some reason, which stated that people become very fond of their own languages, and language/platform arguments start, and it's silly. SEE? means - see how the hackles rise up and people start to dig in.
Cheeso
+4  A: 

There are lots of questions on Stack Overflow along these lines:

The list goes on. Responses usually include the reasoning behind a particular choice, which would answer your question.

Colin
+1  A: 

It obviously depends on the project, and the developers working on it.

  • What are your developers more familiar with?
  • Licensing/pricing/support for software stack.
  • Existing systems (if you're a .NET shop, ASP.NET is probably going to be chosen over PHP, for example).
  • Suitability of language for particular project (you aren't going to be using Ruby on a PIC).
  • etc., etc., etc.
Adam Jaskiewicz
+3  A: 

Is it scalability, documentation, maintainability, or how easy the language is to learn?

Well Yes, but the most important questions you should be asking is "What do I need to accomplish? What are the requirements?" Am I building a web-app or windows-app, does it need to be cross-platform or just run on Windows? Does it need to be "real time" app, like streaming Stock Quotes, chat rooms/IMs, etc. Once you answered these questions the language selection becomes just a matter of selecting the right tool for the job.

WebMatrix
+2  A: 

I also don't know why this got voted down as a question. I have voted it up, because I do feel this is a reasonable question to ask and one which we all need to answer.

Some say, "The language in which you are most comfortable..." is the right answer. I would disagree. If I am most comfortable in C and I am building a web site, should we be using C? No, of course not!

Here are some things I would consider:

  1. Productivity of the average developer (not just you) in this language for the problem domain you are addressing
  2. Language support solving the types of problems you will be addressing
  3. Maintainability of code in this language for your problem domain
  4. Scalability of systems written in this language for your problem domain
  5. Availability of both formal and community based learning and support resources

Just a few things to consider.

Jordan
+1  A: 

If you are trying to make a case to management to switch languages here are some things to consider:

1) Talent pool - internal and external. How hard is it to find good coders in the language

2) Other projects - what similar projects have been done in each language under consideration

3) Educational support - reliance on local university versus Microsoft for continuing education (very important on large scale long term projects where technology may change before the project completes)

4) Conferences, standards and bodies of work - along the same lines as #3.

5) Appeal to management style - stogy old school management will appreciate 'tried and true' over 'edgy and fresh' every time.

Good luck with your research and pitch!

John Fricker
A: 

I would make my choice on a combination of a language being suited to the problem space, and the fact that I and or staff have some level of experience in the languages. For a non-web, non-driver app, I would typically choose Java - unless performance were critical, then I would choose C++. But, imo C++ is far more complex than Java and far more subject to bugs and memory leaks, so make that choice with care. For a web app, I would choose PHP, because I know it and there is a ton of documentation, although I hear Ruby is pretty good. For non-web, scripting based app, I would choose Perl.

Jack BeNimble
+4  A: 

I tend to try and use Excel VBA Macros for all my projects.

Kibbee
Excellent use of satire. :)
Arafangion
Sure way to make your indisposable :)
leppie
You are Joel Spolsky and I claim my 5GBP
Unsliced
Yes, it was funny, but I don't think it should be the top answer.
Kibbee
+1  A: 

I'd like someone to start working on making things things more interoperable. I'd like to be able to use Perl for some things, Python for others, SQL for something else, C#, Prolog, Haskell and Pascal. Then bind everything together with make and be happy that my integrated debugger can hop between them all.

Fundamentally you want to be choosing the right language for the job in hand and, therefore, that's going to be personal to you and your institution.

We're a MS shop, so while I'm not in any way shape or form a Microsoft advocate, I have to say that C# is a very good general solution to many problems.

It's not for all horses, over all courses, but it does it for us at the moment (~15 developers working for internal use only applications, some of which are web delivered, all of which must be able to be picked up by someone random at some unspecified point in the future).

Unsliced
A: 

Whatever you do, don't just pick the language because it is "cool" or something you want to "try".

It needs to be mainstream.

Now that that has been said, don't answer the question. You should be picking the platform, not the language.

pearcewg
A: 

Simply consider what the language was designed for (the kind of problems its designed for and how it solves them) against what YOU need to do.

Lonzo
A: 

There's some truth to the cliche "choose the platform, not the language." When you get down to it, most tasks can be performed in just about any language (even in LOLCODE). However, you will notice that different languages have vastly different sets of available libraries. In a lot of people's opinions, this is the only thing keeping languages like Java and PHP alive (not necessarily saying I agree with that though... well, at least not for Java :-) ).

My advice is to figure out what (if any) outside libraries you'll need and then decide based on what's available from any languages you're considering. I think you'll find the decision to be much easier then.

And one last thing, if you're still unable to decide between some languages, remember that there's nothing wrong with sticking with what you know or what you simply like better. It's much better to make a decision based on something arbitrary like that than getting stuck in "analysis paralysis."

Jason Baker
A: 

the tools that are available

jayrdub