EmbeddedRelated.com
Blogs

Parlez vous Fortran?

Colin WallsJune 24, 2024

When I first started programming, the only language available to me was Fortran. I punched cards with my code and later received back a print-out with mostly error messages. I was always intrigued by being able to program a computer in such a straightforward way. I understood what assembly language or even machine code was all about, but felt that high level languages had a mystique. In due course, while still at university, I tried out any other languages that were available: BASIC, BCPL, Simula, SNOBOL 4, Algol W and I am sure there were others.

When I graduated and found myself in the “real world”, moving towards embedded programming, I found that a selection of languages was still on offer …

In my first job, I was doing real time programming on a mini-computer using a variant of Fortran and some assembly. I was then assigned to an embedded project not that we used that term then and I was programming mainly in Forth, which was interesting. My next job saw me become much more specialized in embedded using mainly assembly language on 8-bit devices. Later on I began to use high level languages like Pascal and C. We even offered a Fortran compiler for embedded applications, but I do not recall anyone ever buying one.

This article is available in PDF format for easy printing

Of all the different high level languages that I encountered in the past, not one of them was designed for embedded use. PL/M from Intel is probably the only one that I can identify; Forth may also qualify. C has become the standard because it is a reasonable compromise – not ideal, but good enough. Ironically, I have often felt that one of its ancestors, BCPL, might have made a good embedded programming language.

In latter years, many programmers migrated from C to C++, which always had the potential to be a better language. But the take up was slower than anticipated. 

I am frequently asked to speculate on what language will be used in coming years and I do not have a firm view, as there are a number of possibilities:

  1. It is often observed that the power that C offers as a language is also a problem, as this power is dangerous. One way to mitigate this danger is to use the language in a specific style. For example, MISRA have published a detailed set of guidelines on how to use C safely. It seems to me that, even if you are not programming a safety critical system, using such techniques will lead to more bug-free code, which is always advantageous.
  2. I always believed that C++ usage would increase, as engineers’ confidence in modern tools increased. MISRA have also published guidelines for C++, which may be useful. There is a language dialect called Embedded C++, which was espoused by certain vendors. It is a subset of the language, but, as far as I can tell, some language elements have been eliminated for no obvious reason.
  3. Java might play a greater part in embedded programming, particularly at the application level. However, writing a complete system in Java is not an option. It lacks a number of necessary language features notably pointers, so some coding in C, C++ or assembler will be needed.
  4. Nowadays, I might bet on Rust, which shows great promise, as it is designed to address the needs of modern embedded applications.

In looking at programming languages, I have a strong sense of a continuing history. Maybe I will draw up a “family tree” sometime. It is entertaining to realise that there is nothing new. I first encountered object oriented programming in the Simula language, which was defined in the late 1960s. Fortran, which has been in use for over 50 years, introduced the idea of function overloading.

I often have the urge to program in Forth again, as the language has an amazing economy in style and memory usage. Critics say that it is the only write-only programming language. I settle for insisting on an RPN calculator. Maybe I should look at Lisp …



To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.

Please login (on the right) if you already have an account on this platform.

Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: