Was ist Software?

Klassisch wird zwischen Software und Hardware als Komplemente unterschieden. Der Laptop oder der Desktop PC an dem Sie gerade sitzen, bildet die Hardware ihres Computers. In Abgrenzung zur Hardware sind Bildschirm, Maus und Tastatur Peripherie eines Computers. Die typischerweise von einem Computer zum Betrieb notwendige Hardware sind Prozessor, Arbeitsspeicher, Mainboard und Festplatte.

Ohne Software, wie ein Betriebssystem wäre die Hardware eines Computers nicht zu gebrauchen. Erst die Kombination aus Hardware und Software bietet die gewohnte Funktionalität. Dass ein Computer auch ohne eingebaute Festplatte startfähig ist, liegt daran, dass bereits das Mainboard mit dem Bios einen Speicher für Software enthält, welche den Start des Computers kontrolliert. Für die Ausführung eines Betriebssystems, welches selbst Software ist, ist das BIOS zwingend notwendig, da ein Betriebssystem nicht direkt auf die Hardware zugreifen kann wie das BIOS.

Es ist ersichtlich, dass der Begriff Software sehr weit gefasst ist. Im alltäglichen Sprachgebrauch werden mit Software ausführbare Programme auf einem Betriebssystem verstanden. MATLAB würde unter dieser Definition als Software bezeichnet.

 

Abstraktionsstufen eines Computers

Es ist möglich verschiedene Stufen von Software in einem Computer zu definieren. Man spricht von hardwarenaher Programmierung, falls Software direkt auf einem Prozessor lauffähig ist und direkt Anweisungen an ihn schickt. Diese hardwarenahe Programmierung lässt sich meist bei Mikrocontrollern vorfinden. Mikrocontroller werden in Programmiersprachen wie Assembler(sog. Maschinensprache) oder C programmiert. Hierbei können direkt Register im Prozessor beschrieben werden und sehr genau das Verhalten der Hardware kontrolliert werden.

Mit der Komplexität heutiger Computer ist eine solche Art der Programmierung nicht mehr vertretbar, da jeder Programmierer genaue Kenntnis über die Hardware des Computers haben müsste und jedes Programm spezifisch für einen Prozessor angepasst werden müsste. Es wird also zwischen Software als Programm und Hardware eine Abstraktionsschicht gelegt. Diese Abstraktionsschicht bildet das Betriebssystem. Durch das Betriebssystem ist ein Programm auf allen Hardwarearchitekturen lauffähig, auf denen auch das Betriebssystem lauffähig ist. Durch diese Abstraktionsstufe ist die direkte Manipulation der Hardware allerdings nicht mehr möglich und auch die Geschwindigkeit eines Programmes ist geringfügig langsamer. Dem gegenüber stehen jedoch die deutlich leichtere Programmierung und Entwicklung durch eine definierte Basis. Ein Betriebssystem bietet definierte Schnittstellen an, über die Programme gewisse Aufrufe auf der Hardware ausführen können.

 

 

Die Auswertung eines einfachen Ausdrucks wie 1+5= ? in Matlab benötigt im Hintergrund viele Schnittstellen um am Ende vom Prozessor berechnet zu werden.  Zunächst wertet Matlab den Ausdruck 1+5 aus und erkennt 1 und 5 als Zahlenwerte und + als Addition. Es soll also eine Addition mit den Zahlen 1 und 5 ausgeführt werden. Diese Berechnung wird dann von einem in C geschriebenen Programm ausgeführt, welches durch die Addition aufgerufen wird. Die Ausführung von C-Code ist bereits näher an der Hardware, als noch der Matlab-Code. Dieser C-Code wird vom Betriebsystem ausgewertet und auf dem Prozessor ausgeführt. Das Ergebnis wird an das in C geschriebene Programm zurückgegeben und schließlich von Matlab als Ergebnis des Ausdrucks angezeigt. Es wird deutlich, dass zwischen der einfachen Eingabe in Matlab und der effektiven Berechnung viele Ebenen liegen die benutzt werden um die Programmierung zu vereinfachen.