14

As a beginner programmer I've only worked with programming computer based applications, but a question has been coming to my head very often since I started programming and I can't get it answered properly.

Machines don't act on their own, that's the programmer's job, he tells it what to do and when to do it, but my curiosity lies beneath computers. I'll take the examples of an ATM software on this post but keep in mind there are many others such as a washing machine display, or a TV, mobile phone, you name it.

How exactly is the software for these kind of machines built? I imagine it can't be identical to computer-based programming. What language do they use to make such things work and how does one get the job done? Are there programmers specialized on this kind of programming? What is the process of making these machines come to life?

Bugster
  • 4,033

4 Answers4

15

It's known as Embedded Systems or Embedded Software Development. I'd recommend this book if you want to know more about the general process without going too much toward any one architecture. It even gives you a real time operating system to play with.

Embedded Programming is very architecture dependent. You are typically working under serious response, program size, error recovery, and cost constraints. For instance you might have a z80 (8 bit processor, they are everywhere) and perhaps a couple of kilobytes of memory to play with. You might only have a ROM to tell the system what to do and how to set up the program. It might also only be a couple of kilobytes in size. Why so little memory? Well if you manufacture 15 million of the little suckers; every penny becomes $150,000.

I'd suggest fiddling with something like Arduino or Scribbler Robots if you want to learn more by doing. As far as Languages go, C, C++ and Assembly are the typical set though Java can be used (and was in fact originally designed for this domain if you can stomach that thought) Others could definitely be used as well, I've known of Lisp and ML both being deployed.

Learn as much as you can about architecture as well because like I said, memory allocation and bitwise operations start getting really important.

5

There is definitely an embedded angle here. But these days you are seeing more and more advanced platforms on what would traditionally be called embedded devices. For example, LG and Samsung TVs both now have APIs and app stores. Sony TVs will be running Android.

Wyatt Barnett
  • 20,787
4

I've seen two ATMs opened up in Denver, Colorado. Both were (then) Compass Bank ATMs, and both were Windows XP under the hardened case. I did get to ask the tech what, specifically, one of them ran, and he said something like "XP Embedded".

So, I bet ATM programming is less like embedded programming these days, and more like standard Windows development.

Bruce Ediger
  • 3,535
3

These types of devices are programmed using embedded programming. This is a very low-level type of programming that deals heavily with logic and gates.

If you are interested in learning embedded programming hands-on, I would recommend looking into arduino.

CFL_Jeff
  • 3,507
  • 25
  • 33