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?
How is software for machines such as ATMs or TVs built?
machine code
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.