Der Weg zur Embedded World 2021: Teil 2
Anmerkung der Redaktion: In Episode 1 dieser Serie aus fünf Beiträgen im Vorfeld der Embedded World 2021, wurde ein Überblick darüber gegeben, was die Embedded World ist. In Episode 2 wird Randy nun seine Kenntnisse in der Programmiersprache C auffrischen. Episode 3 konzentriert sich darauf, wie die Verwendung der objektorientierten Programmierung Komplexität reduzieren kann. Episode 4 zeigt, dass das grundlegende Maß für gutes Design seine Fähigkeit ist, bei veränderten Anforderungen rekonfiguriert werden zu können, ohne die Bausteine neu implementieren zu müssen. Im letzten Beitrag, Episode 5, wird der ständig wachsende Speicherbedarf von Betriebssystemen hinterfragt und die Systemdekomposition vor Randalls Keynote-Präsentation auf der Embedded World 2021 angesprochen.
Wenn ich über komplexe Strukturen nachdenke, denke ich an die allgemeine Notwendigkeit, sie zu reduzieren. Ich möchte in meinem Vortrag zeigen, wie komplexe Strukturen im Laufe der Jahrzehnte angegangen wurden. Und ich möchte die Menschen daran erinnern, wie wir dorthin gekommen sind, wo wir sind, und einige vereinfachende Techniken erwähnen, die noch nicht sehr bekannt sind.
Wie ich bereits letzten Monat sagte, habe ich in meinem halbpensionierten Zustand Zeit, technischen Interessen nachzugehen. Kürzlich musste ich, um mich in die eingebetteten Entwicklungstools eines Kunden einzuarbeiten, die von mir vergessene Syntax der Programmiersprache C nachschlagen, also schnappte ich mir mein Exemplar von „The C Programming Language“ von Brian Kernighan und Dennis Ritchie (K&R), um mein Wissen aufzufrischen. Ich habe sowohl die Originalfassung dieses Textes als auch die 2. Auflage.
Quelle: Wikipedia (https://de.wikipedia.org/wiki/The_C_Programming_Language)
Ich las schließlich noch einmal ihre Vorworte, Einleitungen und Kapitel 1, die Erinnerungen aus einer Zeit weckten, als ich diese Sprache zum ersten Mal lernte. Ich begann meine Karriere als Assembler-Programmierer in den späten 1970er Jahren. Ich erinnere mich an die Schwierigkeit, mein Denken auf Konzepte höherer Ebenen umzustellen. Assembler-Programmierung war wie die Programmierung meines programmierbaren Taschenrechners HP-67. Man beschäftigte sich direkt mit den Registern und Schritten der Maschine, um das richtige Ergebnis zu erhalten. Ich war ein Assembler-Programmierer. Das Schreiben der Assemblersprache war mühsam, aber einfach. Ich erinnere mich, dass ich mich fragte, ob sich diese höhere Ebene der Programmierung wirklich lohnte, denn der einzige Vorteil, den sie für mich damals hatte, war die Möglichkeit, die CPUs zu wechseln.
Meine Assembler-Programme wurden in einem von neun Mikroprozessoren verwendet, die in elektronische Musikinstrumente der Firma Baldwin Piano and Organ Company in Cincinnati, Ohio, eingebettet waren. Baldwin erfand die elektronische Orgel und setzte sich für Spitzentechnologie ein. Die Fähigkeit, einen musikalischen Begleitrhythmus zu erzeugen, während der Musiker die Akkorde dekodiert, setzte sehr strenge Echtzeitbeschränkungen voraus. Vorhersehbare Performance war gleichbedeutend mit Erfolg. Die Komplexität zu reduzieren, war es nicht.
Wie auch immer, Kapitel 1 in jedem K&R-Text ist ein Tutorial. Zu meiner großen Genugtuung funktionierte bei der Eingabe der Beispiele in meinen Linux-Rechner alles genau so, wie im Text beschrieben, und bei der Ausführung der Befehle zur Kompilierung und Ausführung dieser Beispiele ebenfalls. Es war ein tolles Gefühl. Dieser Text wurde 1978 erstmals veröffentlicht. Auf meinem Linux-Rechner läuft die neueste Version von Linux (d.h.: 5.8.14), die am 7. Oktober 2020 veröffentlicht wurde, und es wurde nichts geändert, um mein einfaches C-Programm am Funktionieren zu hindern. Hervorragend! Ich erinnere mich an das Sprichwort: „Ein laufendes System sollte man nicht verändern“.
Mit dieser Erfahrung beschloss ich, die einleitenden Abschnitte meines C++-Buchs aufzugreifen und erneut zu lesen. Dies ist „Die Programmiersprache C++, 2. Auflage“ von Bjarne Stroustrup, veröffentlicht 1991. Sowohl meine C- als auch meine C++-Bücher wurden von den Schöpfern dieser Sprachen geschrieben. Ich lese gerne, wie die Erfinder gedacht haben. Bücher, die von späteren Autoren geschrieben wurden, könnten die Dinge klarer beschreiben, da sie den Vorteil hatten, dass sie gelesen haben, wie die Autoren dachten, aber sie können auch mit mehr Informationen aufgeblasen sein, als man wirklich braucht, um ein Konzept zu erlernen.
Quelle: https://stroustrup.com/2nd.html
Stroustrup erklärt auf nur 10 Seiten die Kaskade von Technologien, die sein Ziel (man könnte sagen, das Ziel der Informatiker) mit C++ vorantrieb, und diese Strategie bestand darin, die Komplexität der Modellierung von Problemen aus dem wirklichen Leben, die mit einem Computerprogramm gelöst werden konnten, möglichst grundlegend zu reduzieren.
Er erklärte, dass wir mit prozeduraler Programmierung und dann modularer Programmierung begannen, gefolgt von Datenabstraktion und schließlich objektorientierter Programmierung. Zur Wiederholung: Die prozedurale Programmierung, wie sie von Stroustrup ausgedrückt wird, ist:
Modulare Programmierung gemäß Stroustrup ist:
Hier sehen wir einen kleinen Schritt zur Reduzierung der Komplexität, d.h. zum Verbergen von Daten in Modulen. Dies ist ein Schlüsselmerkmal der Vereinfachung von Systemen. Es ist der Beginn des Konzepts der Kapselung.
Stroustrup fährt mit seinem Datenabstraktionsparadigma fort:
Die Datenabstraktion ist laut Stroustrup nicht unproblematisch. Er erklärt, dass die Anpassung der Abstraktion an neue Verwendungszwecke eine Änderung ihrer Definition erfordert. Wenn man also einmal eine Definition ändern muss, kann man nicht mehr genau das wiederverwenden, was definiert wurde. Dies bringt ihn zum Konzept der objektorientierten Programmierung:
Jetzt haben wir also das Konzept der Hierarchie, und dies ist ein Kernkonzept zur Verringerung der Komplexität.
Was ich in diesen Blogs schreibe, ist nicht der Stand meiner aktuellen Forschungsarbeiten zur Vorbereitung meiner Grundsatzrede auf der Embedded World. Ich befinde mich auf einer eigenen Kaskade von Technologien, aber die Konzepte, über die ich in diesen Blogs schreibe, haben mein Denken geprägt. In meiner nächsten Episode habe ich mehr zu erzählen.

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.
Visit TechForum