How embedded software development has evolved over 20 years
As my colleague Max pointed out, embedded hardware development has changed quite a bit over the past 20 years. Over that same period, engineers have seen some dramatic shifts in the nature of embedded software development – and the speed of those changes continues to accelerate. Today’s embedded software programmer would likely view development just 20 years ago as something of a horror show – or at best a jumble of arcana.
According to the 1997 Embedded Survey, over 7% of developers used a DEC VAX! In fact, that survey carefully documented use of inherently evil things like cross-compilers and ROMable DOS(!!), while the embedded systems work environment had little to do with software. Among their many details, Embedded surveys have over two decades documented some interesting trends in programming languages and OS platform.
In 1997, embedded developers used any number of programming languages (Figure 1A) -- although one suspects the use of Cobol by the developers who included it in their answer said more about the diversity of their day job than their approach to embedded systems.
C and assembler rightly represented the predominant programming languages in 1997. Yet, that balance shifted quickly over the next few years. The ratio of assembler to C use was over 87% in 1997, dropping precipitously over the next 10 years to 11% according to the 2007 Embedded Survey (Figure 1B) and to 7% 10 years after that according to the 2017 Embedded Survey (Figure 1C).
Figure 1. Programming language use in embedded systems -- 1997 (A), 2007 (B), and 2017 (C). (Source: Embedded.com)
While other programming languages maintained a relatively modest following, Python has emerged as an interesting alternative for embedded systems programming. Despite relatively low numbers of existing projects programming in Python (Figure 1C), it has certainly gained interest. In 2015, 2% of respondents said their next project would likely be programmed in Python. In 2017, that number jumped to 5%.
It’s risky to make too much of these limited results but some related trends add to the argument that Python (or some other higher level language) may shift the balance of software content away from C. In the case of Python, the Embedded survey’s numbers reflect the industry-wide growth in interest in the language (Figure 2). (For those not familiar with Stack Overflow’s language surveys, these are based on the amount of community activity around various languages – not conventional statistical surveys but nevertheless reflective of real interest.)
Figure 2. The rapid growth in interest in the Python programming is likely to continue, driven largely by growing availability of Python modules for data science and AI. (Image credit: Stack Overflow).
Likely the largest influence in Python’s growing popularity arises from its emergence as a popular language for data science and AI. Along with Python analytics libraries such as scikit-learn and Pandas, developers can explore machine learning in Python with Google’s groundbreaking TensorFlow library. Although these capabilities might have minimal impact on embedded developers today, the trend toward migration of intelligence from the cloud to the edge of the IoT adds reason to consider Python’s emergence as a viable part of embedded development.
Even so, embedded developers already find growing support for Python in more conventional embedded systems designs. Versions of Python such as MicroPython and CircuitPython are optimized for the resource constraints of embedded systems. Most developers working in hard real-time designs will laugh at the concept of using Python, however optimized, for their designs. Yet, history suggests the ratio of C to Python use may at some point change in a fashion not dissimilar to that of assembler to C use.