2010-09-21 22 views
6

Was sollte jeder Programmierer über Hardware-Interna wissen? Ich meine nicht Hardware-Montage oder Wartung, sondern wie die Hardware tatsächlich funktioniert.Was sollte jeder Programmierer über Hardware-Interna wissen?

+3

Das wäre besser bei programmers.stackexchange oder einem Community-Wiki. – wheaties

+3

Dies sollte auf jeden Fall eine Gemeinschaftswiki Frage sein – configurator

+0

@configurator: nein, es sollte eine geschlossene Frage sein. Umfragen gehören nicht hierher. –

Antwort

7

sollten Sie wissen über:

  • Interner Speicher (ROM/RAM), die Differenzen mit Speicher (HDD/DVD/CD). (Unterschiede in Geschwindigkeit und Zugriffsmethode).
  • CPU/CORE, was sie tun und was die Auswirkungen von mehreren Kernen sind.
  • I/O, wahrscheinlich nicht so viel, hängt vom Programmierfeld ab.
  • Wahrscheinlich Adress- und Datenbus. Was der Effekt der Größen beider ist.
  • Hardware Interrupts, diese Hardware kann das aktuelle Programm unterbrechen.
0

Es auf dem System abhängig ist, entwickeln Sie mit, wenn smalltalk oder Lispeln mit würde ich sagen, keine ^^ In Python Gleitkomma Sachen gut sein würde. In C würde ich sagen, alles, was Sie finden können ^^

4

Die Computer sprechen binär. Genauer gesagt, das Verständnis der Gleitkommadarstellung. "Warum ist meine Mathematik falsch?" Ist wahrscheinlich die doppelte Frage zu SO.

5

Ich würde einfach empfehlen das Programming from the Ground Up Buch zu lesen:

Dies ist ein Einführungsbuch in der Programmierung und Informatik Assemblersprache verwendet wird. Es geht davon aus, dass der Leser noch nie zuvor programmiert hat und führt die Konzepte von Variablen, Funktionen und Flusskontrolle ein. Der Grund für die Verwendung der Assembler-Sprache ist, dass der Leser denkt, wie der Computer tatsächlich darunter funktioniert. Zu wissen, wie der Computer von einem "Bare-Metal" Standpunkt aus funktioniert, ist oft der Unterschied zwischen Top-Level-Programmierern und Programmierern, die ihre Kunst nie ganz beherrschen können.

Alt, aber IMO bleibt relevant.

0

Da Computer schneller, einige grundlegende Aspekte der Hardware, die konsequent im Allgemeinen seit Jahrzehnten haben, sind zu ändern. Während es früher so war, dass man die Leistung eines Stücks Code durch Untersuchen des erzeugten Maschinencodes und Aufsummieren der Anzahl von Zyklen, die für die verschiedenen Anweisungen erforderlich sind, abschätzen konnte, werfen neue Hyperthreading-Prozessoren solche Berechnungen aus dem Fenster. In vielen Fällen wird es immer wichtiger, Compiler und Prozessoren als bösartige Blackboxes zu betrachten, die das Verhalten Ihres Codes auf jede Weise beeinflussen, die sie sich vorstellen können und die immer noch den Sprachspezifikationen entspricht. Als Programmierer, der sich sehr gut mit Hardware-Interna auskennt, ist das frustrierend. Ich kann die Notwendigkeit verstehen, aber es ist ärgerlich, dass ein großer Teil meines Wissens weniger nützlich wird.

0

Nehmen wir zum Beispiel an, Sie hätten eine Aufgabe bekommen, einen Treiber für einen Roboter zu machen. Sie müssten das Innere des Roboters verstehen. Zum Beispiel ist der Roboter über USB mit dem Computer verbunden. Der Treiber sendet dann einen Befehl als Paket. Der Roboter interpretiert diesen Befehl und beginnt zu tanzen. Jetzt sagst du, du hättest diese Aufgabe bekommen und du hättest jetzt eine Vorstellung von den Interna des Roboters.Sie haben keinen Fahrer, weil Sie nicht wissen, wie man es programmiert. Was jetzt passiert, ist, dass Sie ratlos sind und Sie die Interna des Roboters studieren, weil Sie dachten, dass Sie nichts über die Hardware lernen müssten. Alles in allem ist dies nicht für jeden notwendig, aber es ist etwas, das Ihnen auf lange Sicht helfen könnte.

Verwandte Themen