Determing the best tool for the job

Lecar_red on 2006-01-30T17:05:43

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


__

Abigail on 2006-01-30T23:34:02

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.

Break it into two parts

Alias on 2006-01-31T00:06:15

Any language is really two things.

First is the language itself, some have strengths in different areas. Perl for strings and Java for threads for example.

But then you have the second layer of the language environment, covering libraries, tools, editors, toolchains, compatibility etc etc. Some nice languages have terrible environments (Perl if you ignore CPAN), and some terrible language have amazing environments (Java).

And it's both of these factors in any given area that need to be judged.

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.)