When I hear low-level programming, such as for drivers, embedded systems, operating systems, etc., I immediately think about C and perhaps C++. But mainly C.

But what other languages are also used for these kind of tasks? Today, I mean, not what has been used.

closed as too broad by gnat, Dan Pichelman, user40980, GlenH7, Bart van Ingen Schenau Oct 19 '13 at 9:47



Normally low level programming such as driver programming is a mixture of an assembly language and C.

The assembly language is used to talk to the hardware and C is used to talk to the kernel.

  • I meant languages on a higher level than assembly, but your point is still valid, of course. =) – gablin Dec 16 '10 at 22:35
  • 8
    Depends on the operating system, on Windows or Linux there is no need for assembly language when writing drivers. You can access the hardware just fine with C. – Jim A Dec 17 '10 at 1:23
  • 6
    The only time you really work with assembly is when dealing with architecture specific quirks, usually when working on something like a virtual memory manager. The programmer writing a device driver, however, is rarely exposed to this. They use the facilities that exist. – Tim Post Dec 17 '10 at 7:22

Ada is still used in safety/mission-critical systems, as it still offers relatively unparalleled safety features.

It was compulsory to use Ada up until the late nineties within the DoD, and some other areas, but is no longer, so is not as heavily used as it once was. But it can still be found in highly critical uses, avionics, nuclear power, etc.

The modern versions have object orientation and good support for parallel processing, so is entirely useful still.

  • 1
    I think we will use Ada in one of the embedded systems courses I'm taking in spring. – gablin Dec 17 '10 at 11:12
  • 1
    @gablin: Aye, it's commonly used in embedded systems, quite a good choice for that. – Orbling Dec 17 '10 at 12:21

I did some research for 8-bit programming a little while ago (hobby related; I wanted to try building some basic electronics). Other than C and Assembly, the only languages I found mentioned favorably for these tasks were Scheme and Forth.

  • +1 Oh yes, building basic electronics is going to be my hobby soon and I can't wait to start using Make: Electronics book for this hobby – Anthony Aug 25 '12 at 4:19

Cython is one example. Not for embedded systems, but for drivers and other low level programming it's used more and more in the Python world as a replacement of C. You get both a compiled Python, but also low level access and type hints for speedups.

As a Python fanatic that's what I use, although admittedly very rarely and so far not in any serious context.

  • 1
    Never heard of it before, but thanks for the enlightment. =) – gablin Dec 16 '10 at 22:33
  • ("more an more" -> "more and more") – Peter Mortensen Mar 24 '14 at 18:36
  • I don't think Cython is actually that common for low level programming. I feel like its typically used to create wrappers around C and C++ to give lower level access and access to typical C or C++ libs. – tsturzl Jun 10 '17 at 3:46
  • So, low level programming, then. :-) – Lennart Regebro Jun 20 '17 at 10:59

Well, I did some work on embedded systems through last years using C and Lua.

Check out eLua as well.

-- EDIT: Here in Brazil we do have a "new technology" for Digital TV's, called Ginga. It's really a standard, but in this standard the Lua language is used as one source of embedded language. The other one is Java.

I guess we can cite Java as well, for some special systems like JavaCards. If those are not embedded systems, than I don't know what embedded means... :)
