Als Anfänger-Programmierer habe ich nur mit der Programmierung von Computer-basierten Anwendungen gearbeitet, aber seit ich mit der Programmierung angefangen habe, ist mir sehr oft eine Frage in den Sinn gekommen, die ich nicht richtig beantworten kann.
Maschinen handeln nicht von selbst, das ist die Aufgabe des Programmierers, er sagt, was zu tun ist und wann, aber meine Neugier liegt unter Computern. Ich werde die Beispiele einer ATM-Software in diesem Beitrag betrachten, aber denken Sie daran, dass es viele andere gibt, wie zum Beispiel ein Waschmaschinendisplay oder einen Fernseher, ein Mobiltelefon, wie Sie es nennen.
Wie genau ist die Software für diese Art von Maschinen aufgebaut? Ich stelle mir vor, es kann nicht mit computergestützter Programmierung identisch sein. Welche Sprache benutzen sie, um solche Dinge zum Laufen zu bringen und wie kann man die Arbeit erledigen? Gibt es Programmierer, die auf diese Art der Programmierung spezialisiert sind? Wie werden diese Maschinen zum Leben erweckt?
quelle
Antworten:
Es ist bekannt als Embedded Systems oder Embedded Software Development. Ich würde dieses Buch empfehlen, wenn Sie mehr über den allgemeinen Prozess erfahren möchten, ohne sich zu sehr einer Architektur zuzuwenden. Es gibt Ihnen sogar ein Echtzeit-Betriebssystem, mit dem Sie spielen können.
Embedded Programming ist sehr architekturabhängig. Sie arbeiten normalerweise unter schwerwiegenden Einschränkungen hinsichtlich Reaktion, Programmgröße, Fehlerbehebung und Kosten. Zum Beispiel könnten Sie einen z80 (8-Bit-Prozessor, die sind überall) und vielleicht ein paar Kilobyte Speicher zum Spielen haben. Möglicherweise verfügen Sie nur über ein ROM, das dem System mitteilt, was zu tun ist und wie das Programm einzurichten ist. Es könnte auch nur ein paar Kilobyte groß sein. Warum so wenig Gedächtnis? Na wenn du 15 Millionen der kleinen Saugnäpfe herstellst; Jeder Cent wird zu 150.000 Dollar.
Ich würde vorschlagen, mit etwas wie Arduino oder Scribbler Robots zu experimentieren, wenn Sie mehr lernen möchten. Was die Sprachen angeht, sind C, C ++ und Assembly das typische Set, obwohl Java verwendet werden kann (und tatsächlich ursprünglich für diese Domäne entwickelt wurde, wenn Sie diesen Gedanken ertragen können). Andere könnten definitiv auch verwendet werden, von denen ich wusste Lisp und ML werden beide eingesetzt.
Lernen Sie so viel wie möglich über Architektur, denn wie ich bereits sagte, werden Speicherzuweisung und bitweise Operationen immer wichtiger.
quelle
Hier gibt es definitiv einen eingebetteten Winkel. Heutzutage sehen Sie jedoch immer fortgeschrittenere Plattformen für sogenannte eingebettete Geräte. Zum Beispiel haben LG- und Samsung-Fernseher jetzt APIs und App Stores. Auf Sony-Fernsehgeräten wird Android ausgeführt.
quelle
Ich habe gesehen, wie in Denver, Colorado, zwei Geldautomaten eröffnet wurden. Beide waren (damals) Geldautomaten der Compass Bank, und beide waren Windows XP unter dem abgehärteten Fall. Ich durfte den Techniker fragen, was genau einer von ihnen lief, und er sagte etwas wie "XP Embedded".
Ich wette, ATM-Programmierung ist heutzutage weniger wie Embedded-Programmierung, sondern eher wie Standard-Windows-Entwicklung.
quelle
Diese Gerätetypen werden mit eingebetteter Programmierung programmiert . Dies ist eine sehr einfache Art der Programmierung, die sich intensiv mit Logik und Gattern befasst.
Wenn Sie daran interessiert sind, Embedded-Programmierung zum Anfassen zu lernen , würde ich einen Blick auf Arduino werfen .
quelle