Which Programming language a tester should know?

I have encountered at many blogs and discussion that its beneficial for a tester to have code understanding or can develop tools/simple application using it .If you want to suggest just one language for tester which one will it be?

As Varun say, it all depends.
My ethernet test equpment can be controlled by TCL scripts.
Perl (and others) might be better suited to parse log files
I'm about to look into Python and Ruby as I hear many good things about them for various tasks.
My (somewhat limited) background with C programming allows me to better understand and discuss issues/solutions/debugging with the developers.

In essence; having some knowledge about the language used to build the product you test might help you understand the potential weaknesses of that product, and knowing some scripting language(s) might help you out with some repetitous/boring routine tasks.

I find it dangerous when folks ask for my opinion on what *one* language testers should learn in order to find employment/increase their hireability/improve their skills. This is one of those situations where, based on what area of specialty you want to focus on, your mileage is definitely going to vary.

My list of languages to consider would be as follows:

UNIX - for command line scripting if you anticipate you'll be working with scheduling jobs/validating log data/command line testing in general

SQL - for data validation, and frankly, again your flavor is dependent on the organization.

A second scripting language of some kind such as Ruby or Perl would be helpful.

After that, it really depends on where you expect to focus your energy as a tester. Some folks learn Java, some learn C# - but it wouldn't be of much use to be a Java pro if you're working in a C#/.Net shop.

This is such a broad question, to be honest. The real question which only you can answer for yourself is - what flavor of tester do you want to be, and what tools do you need to get there?

UNIX is not a language - it's an operating system. UNIX supports a variety of command language (interpretors, or shells), such as bash, c-shell, etc.

SQL is a database quesry language,not a programming language per se.

When it comes to writing test scripts, the differences between interpretive languages are largely superficial, so if you learn one and gain some experience, you should be able to pick up any other with little trouble. But I have to admit that I had some difficulty initially with Perl. Still, I was able to pick it up and do some good stuff with it.

If only one language is "permitted to mention" then I mention Perl. It is useful for small tasks (like log parsing, converting data from format to another), but it is also powerful enough for larger applications.

Usually I use Perl, Python, UNIX Shell scripts and Java. I can work also with C and C++ (acctually C is mentioned to be my fluent language at not-so-serious CV. But as the tester I rarely need it. But I have done code inspection to C-code which is fun.)

Hi Markus,
After observing the reply from others i decided to learn Java(as it has been used to build the application i need to test) and Perl ( One scripting Language ). Any specific reason to stay away from Perl and Python.

I really like perl, it was the first language I learned. The community is really very good. Sometimes the language can be hard to read as it allows a lot of freedom to the writer. So learn to code it in a good style.

I have a few strategies for speeding up my understanding of a programming language, in the case of Perl I tend to:

implement basic algorithms that I understand in other programming languages (programming contests, puzzles are pretty good if you are in that frame of mind and have the time)

dig around test suites and seek out well written unit tests that test functionality I understand

don't skimp on taking the time to optimize your dev environment, code completion in emacs, running things automatically, etc ... becoming more efficient means you spend more time learning
browse the source code on CPAN

When learning a language it can help to associate yourself with better programmers, PerlMonks is a good place to start but you may want to find an Open Source Perl project and help out ... you will learn from the core developers on the project

It's mostly that I don't like Perl. I get a brain twister each time I have to deal with it. Python is a good language, but the indention style is something I don't like. Ruby, Groovy, Python and Perl are good scripting languagues, but the idioms in Perl and Python are not that natural to team member unfamiliar with these languages. Since collaboration should be a goal, it's vital to easily share knowledge about test script as necessary. At least, these are my concerns.