11 IoT Programming Languages Worth Knowing - InformationWeek

InformationWeek is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them.Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

IoT
IoT
Mobile // Mobile Applications
News
3/8/2015
12:06 PM
100%
0%

11 IoT Programming Languages Worth Knowing

Choosing which language to use for an Internet of Things project can be as big a decision as choosing a hardware platform. Here are 11 options to consider for your next coding project.
Previous
1 of 13
Next

Internet of Things (IoT) development projects are springing up at businesses all over the world. New hardware platforms make embedded systems in IoT applications easier to engineer than ever before. Once you've chosen the hardware platform, though, you still must develop the application software, and that's where more (and often, more difficult) decisions must be made.

Not so very long ago, your choice of programming language was pretty much dictated by your choice of hardware platform. More modern platforms that are based on open source standards and able to support multiple languages make for much more flexibility and, therefore, more choices. That's where we come in.

How do you decide which programming language to use in a particular IoT project? In some cases, your options still will be limited by your hardware platform. In others, though, you'll be able to choose from a language based on factors such as whether your enterprise dev team is already familiar with it, whether it works within the environment used by other components of the total IoT system, or whether it produces code that is smaller, more efficient, or more rapidly written than that of other options.

[Read about what you can and can't do with Raspberry Pi 2.]

There are 11 languages that float to the top of the consideration pool when it comes to programming embedded systems. They range from general-purpose languages like C++ and Java to embedded-specific choices like Go and Parasail. Each offers advantages and disadvantages. After you've reviewed the following pages to see what we've come up with, meet us in the comments section below to let us know what your preferred language options are when you're considering embedded and IoT development projects.

Attend Interop Las Vegas, the leading independent technology conference and expo series designed to inspire, inform, and connect the world's IT community. In 2015, look for all new programs, networking opportunities, and classes that will help you set your organization’s IT action plan. It happens April 27 to May 1. Register with Discount Code MPOIWK for $200 off Total Access & Conference Passes.

Curtis Franklin Jr. is Senior Editor at Dark Reading. In this role he focuses on product and technology coverage for the publication. In addition he works on audio and video programming for Dark Reading and contributes to activities at Interop ITX, Black Hat, INsecurity, and ... View Full Bio

We welcome your comments on this topic on our social media channels, or [contact us directly] with questions about the site.
Previous
1 of 13
Next
Comment  | 
Print  | 
More Insights
Comments
Threaded  |  Newest First  |  Oldest First
danielcawrey
100%
0%
danielcawrey,
User Rank: Ninja
3/8/2015 | 1:01:58 PM
Foundational
C, C++ and Java always seem to be foundational languages that are used by all platforms. 

It's no surprise to me, then, that it is being used as the basis for programming in IoT applications. I think this is a good thing as well – it's going to capture the interests of developers with a solid computer science-based mindset. 
Curt Franklin
100%
0%
Curt Franklin,
User Rank: Strategist
3/8/2015 | 5:18:45 PM
Re: Foundational
@danielcawrey, many roads do lead back to C -- just as so many roads lead back to Algol. I agree that being able to use familiar languages will do nohing but help IoT development efforts. Not so very long ago an embedded development project meant spending time learning the very special language specific to the embedded platform. It's nice to be able to remove that particular step from the process.
Brian.Dean
50%
50%
Brian.Dean,
User Rank: Ninja
3/11/2015 | 7:58:52 AM
Re: Foundational
C, C++, Java and JavaScript, provides the developer with the familiarity and scale that is required to get a project completed. At the other end, B# type languages are also good because they create newer functionality and frameworks to enable a productive IoT device. And one day, a newer platform will need to be created to bridge the gap between the C++, etc., world and B# world.
maddoghall
100%
0%
maddoghall,
User Rank: Strategist
3/9/2015 | 9:40:09 AM
Assembler language for embedded systems: please do not
I coded in assembler language for eleven years, and used to teach it.  I still advocate that students learn assembler to help them with the study of operating systems, computer architecture, compiler design and so forth.

There are at least four problems with assembler: lack of maintainability, tediousness in coding, lack of portability and lack of being able to use new processor features over time.

In some of the smallest systems for IoT you may be tempted to use assembler, but when the next chip comes along or the architecture you have becomes multicore, or develops a level of cache, or uses other techniques that make it hard for assembly language coders to get the same efficiency as a higher-level language, you may be sorry.  Fight the urge...help the compiler do what you need it to do.
Curt Franklin
100%
0%
Curt Franklin,
User Rank: Strategist
3/9/2015 | 9:45:54 AM
Re: Assembler language for embedded systems: please do not
@maddoghall, I've spent time toiling in the assembler mines, starting with PDP-11 and IBM BAL. And I absolutely agree with you: assembler will teach you more about how the processor (and its related systems) works than will any other language.

And I also agree that it's terrible from a productivity standpoint. And I can't even imagine trying to do optimal multi-core assembler code -- it makes my head hurt just to think about it.
Brian.Dean
50%
50%
Brian.Dean,
User Rank: Ninja
3/11/2015 | 8:20:47 AM
Re: Assembler language for embedded systems: please do not
@maddoghall, I completely agree, from an IoT standpoint, it is difficult to determine the processor architecture that will dominate the IoT segment. Great devices and ecosystems are being created everywhere that uses the x86, ARM or Power architecture but, it is too early to pick a favorite and lock a product into a vertical. 
Li Tan
50%
50%
Li Tan,
User Rank: Ninja
3/14/2015 | 7:06:13 AM
Re: Assembler language for embedded systems: please do not
I cannot agree with you more - IoT is fast growing and there is no clear outwitter at this moment. The industry should attempt different ways/tools of doing things instead of getting locked down in one cage.
Some Guy
50%
50%
Some Guy,
User Rank: Strategist
3/16/2015 | 1:11:53 PM
Re: Assembler language for embedded systems: please do not
Agreed. I always think of C as the world's first portable assembler. C++, C# have just extended it into the object-oriented approach. There are times, especially in embedded and IoT, where for timing or memory (or parts cost) constraints you actually need assembler, but those cases are rare. Especially if you learn how to code C efficiently (Efficient C by Plum & Brodie is likely out of print, but available for $0.01 on Amazon; there appear to be similar titles for C++). I recall coding a motor inverter on a microcontroller with only 512 bytes of code in C. It needed a couple of lines of assembly to initialize the data structures to save the 50 generated by the compiler, and that was well commented with the replaced lines of C code as the comments and the #asm compiler directive for the initialization assembler code. Could have done it with a separate subroutine and the linker, but didn't want to incur the extra call and return code space overhead. It's certainly a choice for more complicated timing-/space-critical optimizations because it limits what you have to recode on the next machine (although it assumes the next machine needs the same optimizations and can't forsee what else needs to be optimized).
SabineN855
50%
50%
SabineN855,
User Rank: Apprentice
11/18/2015 | 3:53:30 PM
Re: Assembler language for embedded systems: please do not
per my later comment...you might want to check out Julia. julialang dot org is the site. 
AnotherDarkReader
100%
0%
AnotherDarkReader,
User Rank: Strategist
3/9/2015 | 10:36:47 AM
Why no love for ADA?
It's a while since I was actively programming in C or ADA so I am curious as to your anti-ADA stance? I'd much prefer embedded control systems to be able to identify, trap and thus gracefully handle common errors that would otherwise crash languages such as C. Assuming, of course, that the runtime can fit :)
TerryB
100%
0%
TerryB,
User Rank: Ninja
3/9/2015 | 1:49:20 PM
Re: Why no love for ADA?
I'm a little curious also, Curtis. I went to Wright State Univ in late 70's/early 80's. They had a strong affiliation with Wright Patterson AFB (home to Air Force Logistics for those of you wondering significance of that base) so ADA was taught. I remember writing a subset of ADA compiler in Pascal for my Comparitive Languages class.

But never actually wrote anything in ADA in school or ever saw it in my biz career. I always thought outside goverment it wasn't used much? A friend of mine who graduated with same degree ended up working for TRW writing the embedded weapons system for the B2 bomber. That's why I perked up at your mention of ADA, it's in some pretty heavy duty stuff.
LakshminarayanT008
50%
50%
LakshminarayanT008,
User Rank: Apprentice
4/11/2015 | 3:31:45 AM
Re: Why no love for ADA?
Why not Visual c#.I am using it for my learning of IOT using Netduino plus 2
cwaser10
100%
0%
cwaser10,
User Rank: Apprentice
3/9/2015 | 5:45:44 PM
Programming Languages
I write (wrote) in FORTRAN, COBOL, PL/I, and (godforbid) APL.  Knuth claimed you could solve any problem in FORTRAN.  OK, the older languages could use some updates to deal with graphics, but APL  did just fine with the maps I drew.

Why do we need more languages?  This is looking like the tower of Babel.  Why no open source standard (not vendor or government sponsored)? 
Susan_Nunziata
50%
50%
Susan_Nunziata,
User Rank: Strategist
3/9/2015 | 10:59:40 PM
Re: Programming Languages
@cwasser10: Tower of Babel is an apt analogy. My sense is that, with IoT specificaly, it's still such early days that there hasn't been enough time or experimentation for a de facto standard to shake out.
AnotherDarkReader
50%
50%
AnotherDarkReader,
User Rank: Strategist
3/10/2015 | 8:31:47 AM
Re: Programming Languages
Why does IoT require a de facto language any more than any other system? Wouldn't that stifle future language evolution?

What are needed are open standards for the inter-connection of IoT and non-IoT devices. Those already exist to a large extent, drawing on existing intercommunication protocols.

What language are / should these APIs be written in? Who cares, provided the API exists for your personal language of choice :-)
Charlie Babcock
50%
50%
Charlie Babcock,
User Rank: Author
3/9/2015 | 9:36:14 PM
Go appears to be going strong
Enjoyed your descriptions of Go, Rust and Parasail, Curt. Among the languages I heard mentioned at the Linux Collaborative Summit, an event that attracts Linux kernel developers, Go was the one most frequently mentioned in favorable terms.
Rob Purser
50%
50%
Rob Purser,
User Rank: Apprentice
9/22/2015 | 5:53:33 AM
What about data analysis?
Your article appears to focus on the edge node and data collection side of IoT systems -- what about analytics and visualization?  Didn't see anything about the programming languages there -- some of which are a lot more important for IoT systems than the more esoteric ones listed...
SabineN855
50%
50%
SabineN855,
User Rank: Apprentice
11/18/2015 | 3:51:46 PM
The Julia programming languages is one to note
It is important to note the Julia programming lanugage....stemming from the labs of MIT, I believe that this to be the language for the IoT.  Programming is easy for both engineers and programmers and the language is: 
  • Julia performs as well as C and Fortran

  • 10X faster than Python, R and MATLAB

  • Distributed parallel execution

I have found this to be an exceptional tool!!!!  I suggest an article on this, as it appears to be a real disruptive offering. 

 

 
JoshF813
50%
50%
JoshF813,
User Rank: Apprentice
5/17/2016 | 12:27:30 PM
node.js & C
For IoT I think node.js/javascript is the best option. The websockets offer real-time communication which if perfect for zigbee/zwave applications and keeping the user always informed of the latest events. 

C is also a requirement to write firmware for Arduino and other microcontrollers. 

With those two languages you can pretty much make anything you can dream up. 
Goyapa
50%
50%
Goyapa,
User Rank: Apprentice
5/23/2016 | 9:39:17 AM
Re: node.js & C
Yes we made as well good experiences with node.js an where needed C/C++ and also Python, but i would like to see C/C++ switched with Rust in near future, and a Embedded-OS written in Rust in the immediate step, like redox-os.
Sylvanus NuhC774
50%
50%
Sylvanus NuhC774,
User Rank: Apprentice
7/29/2016 | 4:21:40 AM
top programming languages
amongst all the programming languages, I prefere C/C++ though it's difficult. i also think VB should be included in the list.
joheben
50%
50%
joheben,
User Rank: Apprentice
8/31/2016 | 7:30:08 PM
Passing knowledge
Using C with only (as said in the article) "passing knowledge" of the language is a terrible idea. Null pointers and memory leaks would kill your software for sure. For good programmers with solid experience in using C, sure thing.
Slideshows
Data Science: How the Pandemic Has Affected 10 Popular Jobs
Cynthia Harvey, Freelance Journalist, InformationWeek,  9/9/2020
Commentary
The Growing Security Priority for DevOps and Cloud Migration
Joao-Pierre S. Ruth, Senior Writer,  9/3/2020
Commentary
Dark Side of AI: How to Make Artificial Intelligence Trustworthy
Guest Commentary, Guest Commentary,  9/15/2020
White Papers
Register for InformationWeek Newsletters
Video
Current Issue
IT Automation Transforms Network Management
In this special report we will examine the layers of automation and orchestration in IT operations, and how they can provide high availability and greater scale for modern applications and business demands.
Slideshows
Flash Poll