Take the 2-minute tour ×

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

share|improve this question
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
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
show 1 more comment

3 Answers

up vote 4 down vote accepted
  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.

share|improve this answer
Could you expound on conservative vs liberal programming? I'm having trouble finding any real information about this. If it helps we are an agile team and love it that way. Failing fast and keeping overhead to a minimum is a big plus for us –  Ampt Jun 13 '13 at 20:08
add comment

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)

share|improve this answer
add comment

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.


share|improve this answer
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. –  MichaelT Jun 18 at 15:39
add comment

Your Answer


