Muss ein guter Programmierer wissen, wie Hardware funktioniert?
Die Antwort lässt sich so nicht beantworten.
Dafür gibt es 2 Gründe.
Grund 1: Programmierer ist nicht gleich Programmierer.
Grund 2: "wissen wie Hardware funktioniert" ist kein definitiver Zustand!
Wissen wie Hardware funktioniert
Was bedeutet, wissen wie Hardware funktioniert? Es gibt keinen Zustand, in dem man entweder weiß wie Hardware funktioniert, oder man weiß es nicht.
Man weiß gewisse Dinge und andere nicht. Manche Nutzer haben keine Ahnung was RAM ist und macht. Andere wissen, wofür RAM theoretisch gut ist und wozu diese Art Speicher verwendet wird. Wieder andere wissen, wie RAM mit dem Prozessor zusammenarbeitet und was nötig ist, dass die beiden überhaupt Informationen austauschen können. Wieder andere wissen, aus welchen Komponenten RAM besteht und wie man die Platinen baut. Andere wissen, wie man den verfügbaren Speicher verwaltet…
Programmierer ist nicht gleich Programmierer
Heute gibt es viele Arten von Programmierer und die Zwecke und Anwendungen für die Programierung können massiv unterschiedlich sein.
Selbst jemand der Spiele programmiert, kann kleine Arcade-Spiele programmieren oder an umfangreichen Projekten mitarbeiten, wo die Person möglicherweise NUR an der Grafik arbeitet oder NUR an der Spielelogik.
Ein Javascript-Programmierer der mit React Native mobile Apps erstellt, muss wohl nicht wirklich wissen, wie die Hardware genau funktioniert. Dieser Programmierer muss nur wissen, wie man die entsprechenden Bibliotheken nützt, um die Hardware für den entsprechenden Einsatzzweck zu verwenden, ohne entsprechenden Fehler zu verursachen. Zum Bespiel durch Speicherüberlastung. Dazu sind aber keine intensiven Detailkenntnisse der Hardware nötig. Man nennt das Abstraktion. Man arbeitet nicht mit der Hardware direkt, sondern mit einer Zwischenschicht, die dem Programmierer die Kommunikation und Verwendung erleichtert.
Ein C Programmierer der Betriebssysteme, Teile davon oder Gerätetreiber programmiert, sollte hingegen einen ganz anderen Wissensstand aufweisen und von Hardware deutlich mehr Ahnung haben. Da diese Art Programmierer direkt an der Hardware arbietet.
In Fachkreisen spricht man beispielsweise von User Space und Kernel Space. Wer also auf Kernel-Ebene (Betriebssystemkern) programmiert, sollte deutlich mehr Hardware-Kenntnisse haben, als ein Programmierer auf Nutzer-Ebene. Dennoch ist ein Kernel Space Programmierer noch lange kein Elektroniker.
Andererseits lässt sich aber zusammengefasst sagen: gewisse Grundkenntnisse sind für jeden Nutzer, nicht nur für Programmierer von Vorteil.
Was ein Prozessor, RAM, eine Festplatte machen. Warum? Wie kann ich alleine schon ein Gerät für meinen Zweck auswählen, wenn ich nicht einmal die Grundlagen kenne? Selbst wenn ich nur ein Heimanwender bin.
Und wir sprechen keineswegs nur von Computern. Dasselbe gilt für Notebooks, Netbooks, Bay Trail Geräte, Tablets, Smartphones,… all diese Geräte sind heute Computer bzw. beruhen auf ähnlichen Prinzipien!