Computer

Aus eLearning - Methoden der Psychologie - TU Dresden
Zur Navigation springen Zur Suche springen

Anatomie: Hardware, Software, Firmware

Hardware ist die physische Seite des Computers: seine Bauteile (s. Abb.). Hardware sind auch externe Geräte wie Monitore, Tastaturen und Lautsprecher.

Software ist die virtuelle Seite des Computers. Sie beinhaltet Daten und Programme, die der Hardware Anweisungen geben, wie bestimmte Aufgaben zu lösen sind.

Firmware ist Software, die speziell für ein Hardwareteil bzw. für einen spezifischen Zweck an einem Hardwareteil erstellt wurde (z.B. das BIOS eines Computersystems).

Computerhardware.png

Verbindung von Hardware und Software

Die Hardware von Computern bearbeitet Aufgaben, die durch Nutzer:innen bzw. durch Programme gestellt werden. Dabei sind Programme die Schnittstelle zwischen Nutzer:innen und Computerhardware, indem sie festlegen, welche Konsequenzen aus den Eingaben des:r Nutzer:in folgen, z.B. "Ein Mausklick auf diese Schaltfläche bedeutet, dass ein Feld im Fenster rot wird". Einen Einstieg dazu liefert zum Beispiel Bettina Bair in "Inside your computer" (Zugriff 20.11.23). Diese Eingaben und Konsequenzen sind in menschlicher Sprache einfach auszudrücken, für den Computer aber sehr komplexe Befehle. Im Folgenden wird die Kommunikation zwischen Nutzer:in, Software und Hardware beschrieben.

Für die Hardware von Computern ist jede Information als eine Folge von binären Ziffern repräsentiert, die jeweils 1 oder 0 sein können. Dafür gibt es sogenannte Transistoren, also Halbleiterbauelemente, die (vereinfacht) entweder an- oder ausgeschaltet sein können. Verbindet man eine Reihe dieser Transistoren lassen sich mit ihrer Kombination von An- und Aus-Zuständen logische Operationen durchführen. Diese Verbindungen heißen Logikgatter (logic gates). Für eine Veranschaulichung dieser Kombinationen ist die Videoreihe "Exploring how computers work" von Sebastian Lague (Zugriff 20.11.23) sehr empfehlenswert.

Das Speichern von Information wird über Bauteile realisiert, die binäre Zustände annehmen und beibehalten können (z.B. Flipflops). Diese können auch kombiniert werden, um mehr oder komplexere Infomation zu speichern (z.B. in Caches oder RAM).

Die Aufgaben, die Nutzer:innen oder Programme an den Computer stellen, werden also in so basale Instruktionen zerlegt, dass sie durch eine Folge von Nullen und Einsen repräsentiert werden können. Beispielsweise zeigt Sebastian Lague in seinem Video, wie sich Rechenaufgaben binär darstellen lassen. Durch die Kombination vieler einfacher Instruktionen ergeben sich sehr komplexe Abläufe, die letztendlich dazu führen, dass wir als Nutzer:innen ein Resultat sehen können, z.B. durch die Anzeige auf einem Bildschirm. Die Sprache, in der die Instruktionen für die Hardware geschrieben sind, nennt man Maschinensprache (machine code). Da diese Sprache aber jede einzelne Operation der Hardware codiert, wird selten direkt in Maschinensprache programmiert. Es gibt eine Abstraktionsebene darüber auch Assemblersprachen, die binäre Maschinensprache in menschen-lesbare Befehle übersetzen, aber auch hier werden alle Instruktionen an die Hardware codiert. Am häufigsten wird daher in höheren Programmiersprachen gearbeitet. Diese sind komplexer als Maschinen- oder Assemblersprache und können nicht unmittelbar von der Hardware verstanden werden. Dadurch lassen sich komplexere Befehle formulieren, ohne dass Nutzer:innen jeden Rechenschritt der Hardware händisch festlegen müssen. Der Code höherer Programmiersprachen wird dann einem Compiler in Maschinensprache übersetzt, also in einzelne Instruktionen an die Hardware zerlegt. Diese Instruktionen werden in einem Speicher abgelegt, aus der die CPU des Computers jede Instruktion einzeln ausliest, diese zerlegt und bearbeitet und dann entsprechende Resultate produziert (z.B. Ergebnisse in einen Speicher schreiben oder an ein Outputgerät schicken).

Als stark vereinfachtes Beispiel stelle man sich vor, dass ein:e Nutzer:in ein Taschenrechner-Programm auf dem Computer verwendet. Auf der Nutzer:innenseite bedeutet das, die Buttons der virtuellen Oberfläche des Taschenrechners zu drücken, um Eingaben zu tätigen, und sich nachfolgend das Ergebnis anzusehen. Für die Hardware muss dieser Prozess aber noch feiner gestückelt sein, z.B. muss bei einem Click auf einen Button die Mausposition abgefragt und in eine Eingabe übersetzt werden (Zahlen, Rechenzeichen, Bestätigung). Daraus wird eine Rechenaufgabe formuliert und von der CPU bearbeitet. Nachfolgend muss ein Bild erstellt werden, das dem:r Nutzer:in auf dem Bildschirm angezeigt wird und das Ergebnis repräsentiert. Und selbst dieser Ablauf ist noch eine grobe Vereinfachung dessen, was letztendlich binär in Maschinensprache an die Hardware übergeben wird, um ein Rechenergebnis zu erzeugen.

Um aus höheren Programmiersprachen Instruktionen an die Hardware zu generieren, können nicht nur Compiler genutzt werden, sondern auch sogenannte Interpreter. Ein Compiler übersetzt den gesamten Code in der höheren Sprache auf einmal. Dabei wird häufig eine Datei erstellt, die unabhängig vom Compiler ausgeführt werden kann. Ein Interpreter übersetzt jede Zeile oder jede Aussage in einer höheren Sprache einzeln und übergibt sie der Hardware. Das heißt, Code in einer höheren Programmiersprache, die Interpreter nutzt, kann auch nur durch einen solchen ausgeführt werden. Man spricht in diesem Zusammenhang auch von kompilierten und interpretierten Sprachen. Beispiele sind C, C++ und Rust für kompilierte und PHP, Python und R für interpretierte Sprachen.

Dateien, Ordner, Speicherorte

Datei

Um Information auf dem Computer zu speichern, werden Dateien angelegt. Eine Datei ist zunächst eine Zusammenfassung von gleichartigen Daten, die einen Namen und ein Format hat. Dabei ist das Format abhängig vom Inhalt der Datei, z.B. Text, Bilder oder Ton. Bei vielen Dateien kann man ihr Format an ihrer Endung (engl. file extension) erkennen (z.B. .txt für Textdateien oder .exe für ein ausführbares Programm).

Ordner

Ordner (auch Verzeichnisse, engl. folder/directory) sind Strukturen, die es erlauben, Dateien zu gruppieren und zu strukturieren, analog zu einem echten Ordner, in dem Papier eingeheftet ist. In einem Ordner können Dateien oder weitere Ordner liegen.

Speicherorte

Jede Datei und jeder Ordner haben einen Speicherort, das ist die Stelle im System, an der sie abgelegt sind. Dieser Ort hat immer einen Dateipfad, der den Weg durch die Ordner und Unterordner beschreibt, in denen eine Datei abgelegt ist. In Windows kanne in Dateipfad zum Beispiel so aussehen:

C:\Users\Benutzername\Documents\sample.txt

In diesem Fall liegt die Datei im Dokumente-Ordner des Benutzers "Benutzername". Das Laufwerk C: am Anfang des Dateipfads ist die aktive primäre Festplatte, auf der auch das Betriebssystem gespeichert ist. Ein Speicherort muss aber nicht zwingend auf dieser Festplatte liegen, er kann auch auf einer anderen internen oder externen Festplatte oder in einem Netzwerk (z.B. auf einem Server) sein.

Server

Der Begriff Server hat zwei Bedeutungen. Einerseits gibt es die Hardware "Server" (auch Host oder Hostrechner), die ein Gerät ist, das anderen Geräten (sog. clients) in einem Netzwerk u.a. Programme und Daten bereitstellt. Andererseits gibt es die Software "Server", die einer Client-Software Funktionalitäten, Programme oder Daten bereitstellt. Ein Host kann einen oder mehrere Server (Software) beherbergen.

Ein Server kann von Clients über ein lokales Netzwerk oder auch das Internet erreicht werden. Dabei kommunizieren sie über ein gemeinsames Protokoll (analog zu einer Sprache). Der Client stellt dabei Anfragen, die dann vom Server bearbeitet werden, wie z.B. ein Abruf von Daten.

Um Programme auf einem Server auszuführen kann man u.a. Remote-Desktop-Protokolle (RDP) nutzen. Dabei loggt sich ein Client (z.B. der lokale Rechner einer Person) auf dem Server ein und kann dann auf dem Server arbeiten. Dabei werden die Eingaben der Person vom Client über das RDP an den Server kommuniziert und die Antworten auf den Client projiziert. Das sieht dann z.B. so aus, dass auf dem lokalen Rechner ein Fenster offen ist, auf dem man das Bild des Betriebssystems auf dem Server sieht (beispielsweise dessen Windows-Umgebung). Beispielsweise bietet das ZIH der TU Dresden einen Terminalserver zur Nutzung in der Lehre an, auf dem unter anderem auch die Statistiksoftware SPSS genutzt werden kann. Der Zugriff auf diesen Server wird zum Beispiel hier erklärt.