This blog is dedicated to open, interoperable manufacturing software and the coolest, latest and greatest things I see every day while conducting business under the banner of Inductive Automation.

Hello, my name is Steve Hechtman and I am president of Inductive Automation. During the span of one day there is more excitement, more discovery than I can possibly keep to myself. This blog is, therefore, my outlet. WARNING: This site is highly biased in favor of the most powerful, affordable manufacturing software in the world - Ignition by Inductive Automation!

Java Tops the Charts of Programming Language Popularity

There are two indexes I'm aware of which measure the popularity of programming languages.  The most referenced one is the TIOBE index.  I've watched it for a number of years with Java being in the #1 position usually.  The latest rating for March 2016 shows Java has advanced far out into the #1 position by a long shot. Python comes in at position #5.

The TIOBE index is apparently calculated by an algorithm applied to data found on the web by a web crawler.

Another index is the PYPL index (PopularitY of  Programming Language) which is calculated based on Google Trends and how often language tutorials are searched by language.  According to this index Java is #1 by a massive margin and Python is #2.

There are other corroborating sources.  Inc. Magazine ranks Java as #1 with Python coming in #2.  C comes in at #3.  Another interesting approach is based on job listings for programming jobs such as is reported by CodingDojo and which lists SQL as #1 (though not really a development language as you would normally think of one), Java as #2, and Python as #5.

CodeEval claims to be more of a language predictor based on the languages that over 2000 tech industry employers are testing for.  According to this index, Python has held the #1 position for four years in a row with Java coming in at  #2 and with a huge margin over C++ which is in position #3.

It's interesting to note that Java is the clear leader no matter which approach is used.  Python's rating is more varied, but it is always at or near the top of the list.

For me, it's reassuring to know the language choices we made ten years ago are still top of the list in popularity.

Open Source Publish-Clients for IIoT

Cirrus Link will release open-source MQTT publish-client libraries through the Eclipse Foundation in the second quarter of 2016. Libraries will be available in C, C#, Java, Python and JavaScript. Java will be available as a standalone library, as well as a module for Kura. Kura is a Java/OSGi-based framework for IoT gateways.

These libraries leverage the open and popular Google Protobuffers standard, as well as the Kura definition for data which just happens to align nicely with common PLC datatypes. They will be released concurrently with the open Sparkplug standard which tracks "state" though the use of birth and death certificates.

What is little understood by the larger IoT audience is that in the IIoT setting, "state" is required. SCADA is useless without state. The Sparkplug standard wraps up the MQTT definition, Protobuffers for data representation, Kura specifications for datatype definition, birth and death certificates to provide "state" and other simple mechanisms to make MQTT useful in SCADA applications.

Any publish-client compatible with the Sparkplug specification will also be a proper Ignition citizen through the use of the MQTT Distributor module. This makes me want to build some sort of edge of network device using Raspberry Pi or BeagleBone. I've got a few ideas. Now I just need some time.