Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Possible Duplicate:
“Right programming language for the job”

C++ can't create beautifully working web pages and PHP can't create a good desktop application. Sure. But this simple case of desktop and web applications is very broad. There are tons of languages for each platform. Now, which ones to choose?

Does it really come down to what the programmer or his boss prefers more than other factors?
If not, and there is an objective way of assessing, what are the parameters?

share|improve this question
3  
1  
The first problem is that neither of your basic examples are valid - I'm certain one could produce websites with C++ and I believe one can produce desktop apps with php... however both tools are much better suited to other tasks and that is kind of the point. – Murph Jan 5 '12 at 20:23
1  
This is a really generic question and has been answered by billions of people on the internet. – Paul Jan 5 '12 at 20:35
"C++ can't create beautifully working web pages" - really? It worked quite well for this in 1998 (ISAPI extensions to IIS) ;-) – Steven A. Lowe Jan 5 '12 at 21:00
Did any web pages qualify as "beautiful" in 1998? Beautifully working mayhaps... – Cthos Jan 5 '12 at 21:28

marked as duplicate by Yannis Rizos, FrustratedWithFormsDesigner, Mark Trapp Jan 5 '12 at 21:15

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

5 Answers

You have to consider that the choosing of the right tool, for the right job, has to take into account the skills of the developers on the team as well as the other factors.

If you think of it algorithmically, you'll have a number of criteria, but more importantly, those criteria will be weighted:

  • Is it possible to use this tool/language? Weight: Very high
  • Is it efficient to use this tool/language? Weight: Medium
  • Are there existing skills and knowledge using this tool/language on the team? Weight: High
  • Cost of the tool/language (in terms of licenses, etc.): Low/Medium/High depending on the company
  • Does the tool/language have a future? (open source, support, community) Weight: Medium/High
  • Is there a market for experienced developers? Weight: Low/Medium

And any other criteria that matters to you/the company. Once you've determined the criteria, calculated the weights of the competing tools, you should have a clear winner - or some front runners that you can do proof-of-concept work with.

share|improve this answer

Objective assessments of what language to use in any context are difficult, because the context is widely variable. Such a consideration also depends on how well you will make progress given any particular choice of technology, which varies with your experience, your (subjective) preferences, your willingness to learn particular skills or stick with what you know, and so on.

Sometimes this complexity is greatly reduced. For example, there are a couple of environments I've worked in where you're only allowed to deploy JVM code, which limits the choices of technology somewhat. In certain other cases, code written by me is going to be maintained by developers with particular skills and specialities, so it's sensible to make choices that will support them. But these are only factors that themselves are not wholly objective, and combine with subjective preferences to influence the choice of technology used.

share|improve this answer

There are over 67 different types of surgical scalpel blades that a surgeon could use. Some of these are better suited for certain tasks, some of them are wild customizations of other types. Some are just odd that few people use. The point is that every surgeon has completely different preferences on which surgical tools that he/she chooses to use, while technically they are all just a scalpel and all are appropriate for making an incision.

Web application development tools and frameworks are very similar in this regard. There are a number of different types, some tend to excel in certain areas and are deficient in others, but in the end, everything comes down to HTTP requests and responses with a browser. The only real reason why some developers choose some frameworks over others is that they are more productive and content using their favorite tool.

share|improve this answer

The parameters actually depend on several things:

  1. Performance requirements
  2. Portability requirements
  3. Maintainability
  4. Platform for implementation.
  5. Availability of qualified developers.
  6. Who's your boss' drinking/golfing/sailing/fishing/etc buddy.

If you need high performing low latency system you will probably choose one of the compiled languages and more likely C++ or C, For highly portable systems where performance may not be as high on the priority list you might choose something else. In case of web you can try doing it in JavaScript for certain things for others PHP and for even others WebObjects, etc..

And after all of this what you could wind up with is what your boss' drinking/fishin/golfing/sailing/etc buddy tells him that they've implemented a similar project using Blah Blah Blah product and it works for them so you end up using that

share|improve this answer
1  
In the pre-PC days, IBM sales reps made a bundle being the boss', or the boss' boss', drinking/fishin/golfing/sailing/etc buddy. Hence the saying, "Nobody ever got fired for buying IBM". – jfrankcarr Jan 5 '12 at 20:16
You'll be surprised what kinds of bundles they and SUN and BEA had made during PC's heyday. – Karlson Jan 5 '12 at 20:25

It depends on the people around you, even if those people aren't really around you, and even if you don't know them at all. Unless you're building up your app from the ground up, you're associating yourself with some programming community.

In a very large company this community is the people around you, and the VP's who mandate what you tools you should be using to get anything done. In those communities time-tested tools that are known for their scalability and robustness - even if the facts speak against the reputation - are favored.

In communities that have more flexibility there is greater drive to try out technologies that outperform the current giants. Independent developers and startups tend to fall into this category.

share|improve this answer

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