I'm currently working for a company on the engineering team of about 5-6 people and have been given the job of heading up the redesign of an embedded system tester. We've decided the general requirements and attributes that would be desirable in the system, and now I have to decide on a language to use for the system, or at the very least come up with a list of languages with pros and cons to present to the team.

The general idea of the project is that we currently have a tester written in c++, which was never designed to be a tester, but instead has evolved to be such over the course of 3-4 years due to need. Writing tests for a new product requires modifying the 'framework' and writing code that is completely non-human readable or intuitive due to the way the system was originally designed. Now, we've decided that the time to modify this tester for each new product that we want to test has become too high and want to partially re-write the system so that we can program the actual tests in a scripting language that would then use the modified c++ framework on the back end to test the actual systems. The c++ framework would be responsible for doing all the actual work and the scripting language would just integrate with that to tell the framework what to do.

Never having programmed in a scripting language (we program embedded systems), I've run into a wall where I have no experience with any of the languages that we could possibly use, but must somehow give pros and cons of each language so that we can choose the best one for the job.

Currently my short list of possibilities includes:

  • Python
  • TCL
  • Lua
  • Perl

My question is this: How can a person evaluate a language that he/she has never used before? What criteria are good indicators for a languages potential usability on a project?

While helpful suggestions for my particular case are appreciated, I feel that this is a good skill to possess and would like to be able to apply this to many different projects if at all possible

  • It generally will come down to maturity, capability, general available libraries, and talent pool. There are so many ways to evaluate a language on all this. General knowledge is pick what you have developers or a strong local talent pool for unless you have a lot of money for training and dev pay for their learning curve. – Rig Jun 13 '13 at 19:36
  • 1
    What is it that you want to test, the embedded system software in your test environment or a functional test of an embedded system in hardware (as in a bench/QA test?) It makes a difference. – James Snell Jun 13 '13 at 19:36
  • Do you have a shortlist of languages? – James Snell Jun 13 '13 at 19:37
  • Added the short list of languages that I've come across. Our engineering team has little to no scripting experience, but are pretty fast learning and experienced software engineers, so I don't think that learning one of the languages will be too complicated. We just need one that will meet our needs down the line. We are testing the embedded system hardware using another, more powerful embedded system. It is more of an integrated test that tests firmware and hardware. – Ampt Jun 13 '13 at 19:58
  1. Use it. Grab a tutorial, give it a spin. This will both give you an idea of what it's like to use the language, and, what kind community it has.

  2. Stack Overflow Question Counts: This is a rough indication of overall use and how likely you are to find an answer to your question

  3. Open Source library/package counts: This is a rough indication of overall use and how likely you are to find a pre-existing solution

  4. Look for pre-existing solutions to problems you know you have; check them out in a bit more detail. This will give you an idea of the kind of code and documentation the community supplies for your problem domain, and how active that community is in that domain.

Then, I'd say, look up the philosophies that the community endorses; Python's 10 Principles vs Ruby's Enjoyment for the Programmer - but at that point you're getting /really/ subjective.

Oh! Also - Figure out where you, your team, your problem, and your possible languages fall on the "conservative vs liberal" programming "spectrum". It's a really useful axis for comparison.


I am not sure if you have the budget for this, but you can hire people who can evaluate products/technologies for you. Solution architects -normally give you sound advice backed with data.

But if you dont have the budget for this or you are the solution architect, its better you learn about the languages you are evaluating. There are forums which will advocate various languages but best bet would be to try out few tutorials and get a feel of it. Also you might want to consider things pertaining to post production (installation, maintenance, version upgrade etc)


Certainly the popularity of a programming language is one factor to consider. TIOBE offers a useful index of language popularity including graphs that show change over time.

TIOBE points out that the index "ratings are based on the number of skilled engineers world-wide, courses and third party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and Baidu are used to calculate the ratings. It is important to note that the TIOBE index is not about the best programming language or the language in which most lines of code have been written."

  • 1
    TIOBE is often seen as a joke and really not that good of an indication. It has difficulty separating Java served by Starbucks and Oracle... There are instances of different communities significantly manipulating the data by tweaking their SEO. A million pages saying "php is awful" all count for php popularity. – user40980 Jun 18 '14 at 15:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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