The other day, a friend and I were having lunch and discussing programming languages and technology. I have been reading a few posts above language advocacy and the problems with any type of advocacy (it turns religous instead of being rational, it leads to the person advocating not being taken seriously, etc.). I have no problem with python (i kind of like the clean syntax), ruby (except the sudden vogue-ness of it), c, java, javascript, etc... I don't mind learning them and using them. But my problem is how to determine what the best tool, language, framework, etc... for the job actually is? Where is this information, CW or ? The experts seem to be in their own camps for their own purposes.
There doesn't seem to be any studies looking at solving the same problem with different tools. And if there were any studies, how would you determine the effectiveness of each one? Would it be lines of code, ability to scale, speed of development, simplicity to maintain, or ? It seems that we (coders, developers, engineers, ...) all want to use the most effective tool but we don't have access to information to help us make this choice (beyond folklore, our own experience or that of others, and other social not scientific evaluations).
How does Perl compare itself with java, python, prolog, etc... ? By language attributes (static typing vs. dynamic) but are these meaningful? By performance? By feature X or Y? Maybe 'compare' isn't the best word here... Maybe we should talk about what Perl is strongest at, or most effective at doing and what Java is most effective at. But what happens when you have three languages at all have the same effectiveness, does it turn to style then?
I would love to hear peoples thoughts about this. Or information about research projects going on. Or is it time to write a grant? (like I have any idea how to do that ;)
Peace
I don't think the "best tool for the job" is a useful question to ask, if the tools you have to pick between are all general purpose tools. It doesn't have an answer. What you really want is of all the adequate tools (of which there are many) the best tool for the programmer.
Most of the typical programming jobs can be done as well in Perl as in Java or in C. However, said job needs to be done by a certain programmer. And for that programmer, Perl may be the best tool. Another programmer, facing the same job, will be best of with Java. And for a third programmer, C is the best language.
Re:Break it into two parts
lachoy on 2006-01-31T01:40:23
I'd add a third to this as well: what's your team's expertise? Sure, anyone can learn Java pretty quickly. (It's a simple language.) But it takes time to get to know the environment, the libraries, the differences from what you already know, and then the idioms and patterns that make you a very efficient programmer. We always talk about languages as if you can change from one to the other without cost, but you can't. (And, as much as some managers don't want to hear it, you can't interchange the people who actually use them, either.)