What development environment is suitable for professional applications, bonescript or C++


Hardware: BeagleBone Black

I am new to the BBB, and also to cloud based development, so please be patient.

Most of the programs I intend to develop with the BBB generate pulses on digital outputs, read state of digital inputs, read analogue voltages on ADC pins of the BBB. The program will also get data from ethernet port, serial port. Interface to external hardware via SPI and I2C is also required.

I know most of the above jobs are being done by BBB developers, but I am a bit confused about which development environment would be suitable for me.

I find the Cloud9 IDE easy, bonescript looks very simple enough, as it is based on javascript (so well documented).

On the other hand C++ looks comprehensive, the coding for flashing a LED is longer than the code generated in Cloud9. Do professional developers prefer C++ for developing applications on BBB ?

is there any advantage in using C++, apart from familiarity ?? Are C++ applications more stable ??
On the other hand the bonescript has a less steep learning curve than C++.

I am interested in knowing what most people are using, as I think this will dictate the future trend.


There isn't really a 'professional' language. There is however, the task at hand, and suitable programming languages. Depending on what you are trying to achieve either language would be suitable.

Myself, I prefer C; purely down to familiarity, power, widespread usage and availability of numerous libraries.

I would say that C/C++ would be better, if you’re willing to spend some time learning both languages. Simply put, a scripting language may be as fast, or nearly as fast as the same application written with a language so that it runs nativly. The native application will almost always, if not always use less processor time to do the same task.

C/C++ at least in my own mind is no more complicated than using javascript ( node.js / bonescript ). It all boils down to which libraries you can find / use for the given language of choice. Then of course, your ability to read, and understand how the code ( library ) are meant to be used. Bonescript for instance, is very similar ( in usage ) to some Arduino libraries I have seen. Which are written mostly ( all ? ) in C/C++. To be sure, there is always a lot of reading / understanding to do when using new software libraries. As such I still feel that it would be good to start off with a low level language such as C/C++. After that, something like javascript will be very easy to use / understand. At the end of the day however, context means a lot too. Do you need to slap together a demonstration of hardware abilities for a presentation, or are you a hobbyist who just wants to do “stuff”. Also, it can be argued that there is a “right language” for every job.

As for which IDE, or compiler / toolchain . . . there are several options. Personally I have only used Linaro’s gcc with code::blocks on Windows( so far ), but this option is also available on at least Linux too( the code::blocks IDE is crossplatform ). It may also run on OSX, but I am not sure. If you’re not too keen on JVM this may be a decent options. Code::Blocks is relatively customize-able, so it can work with many different gcc toolchains ( and possibly more ).

Eclipse also seem to be very popular, and it is also very feature full. Probably even more customize-able than code::blocks, but is based on java ( requiring a JVM to run ). If not for this last fact, I would probably be using it myself, but I am adverse to using anything that requires a JVM to run. If not a problem for you, then Eclipse could possibly be the IDE to use.

There are other possibilities as well, but probably too much for a new player to worry about. Meaning, technically with a bit of “magic” You can technically use different toolchains with Visual studio. But setting something like this up is not for the timid, and quite possibly can take a good bit of your free time initially to get working. In this given case it all boils down to what you want / need. Usually something like this is too much hassle to even bother with, despite Visual studio being a top notch IDE. And there are many other possible similar scenarios . . .

err, wrong → “The native application will almost always, if not always use less processor time to do the same task.”

I meant to say that despite a program written with a scripting language being nearly if not as fast as a native( compiled ) application. The Native ( compiled ) application will almost always if not always use less processor. As in %.

Thanks for the replies.

I could start developing on python or bonescript, then move on to C/C++. The tasks required for the program are

  1. Receive/Send commands from a serial port, ethernet or even a wireless module.
  2. Generate a pulse on a digital output to run a stepper motor.
  3. Check the state of a few input lines.’
  4. Interface to a 4x4 keyboard matrix, and a LCD.
  5. Connect to the internet via wireless or USB GPRS modem.

Of course the above listing is a wishlist, this could take time as I have yet to learn the basics of using BBB and linux.


You're still missing the point a bit. Nearly any language could do all
of those things, however if you need to poll the input lines with as
little latency as possible, then you're going to need to use an
efficient language.

For example: Any language can do X, Y and Z. But only language A could
do it in 100 processor cycles. Language B might do it in 2 lines, and
language C might be capable of real time hacking in web IDE, you see
what we're getting at?

If you're new to programming and Linux in general, then start with the
language and environment you find easiest, then as you hit roadblocks
(i.e. speed, memory constraints, "power features"), then move to a more
suitable language. You can't pick the right language right away if you
don't fully understand the technicalities of your requirements.