Warum Software?

Im ersten Kapitel gibt es den Satz „Jedes Mal wenn Du den <Run> Schalter anklickst, erklingen die 3 Töne.“ Und dieser Satz beantwortet die Frage der Kapitelüberschrift ganz gut.

Wir haben einmal etwas gemacht und können es beliebig oft wiederholen. Wir haben etwas programmiert.

Software ist in den letzten 50 Jahren immer wichtiger geworden. Software gibt es solange wie es Computer gibt. Per Definition ist ein Computer eine elektrische Maschine, die Programme ausführen kann.

Tatsächlich ist es so, dass der Computer den Sonic Pi Code nicht direkt ausführen kann. Vielmehr wird der eingegebene Code von Sonic Pi in einen Maschinencode übersetzt, der dann von dem Betriebssystem des Computers ausgeführt wird.

Programmierer müssen sich normalerweise nicht um diesen Maschinencode kümmern. Zwar kann man auch direkt in Maschinencode ein Programm schreiben, allerdings ist das normalerweise sehr unübersichtlich und mühsam.

Der Code in Sonic Pi sieht sicher anders als andere Programmiersprachen. Softwareprogramme laufen in Computern. Das können ganz normale Computer sein oder Handys, in denen heutzutage ein leistungsfähiger Computer steckt. Oder Spezialcomputer, wie sie z.B. in Autos verbaut werden.

Es gibt tatsächlich noch einen zweiten Grund für die Verwendung von Software neben der unendlichen Reproduzierbarkeit: die Lösung von extrem komplexen Problemen. Beispielsweise das Lösen von Rechnungen, die eine extrem große Anzahl von Rechenschritten notwendig machen und deswegen einen Menschen sehr lange beschäftigen würden. In anderen Gebieten werden sogenannte Algorithmen eingesetzt. Diese Algorithmen sind Verfahrensanweisung um bestimmte Probleme (oft mathematische) zu lösen. Im Code von Sonic Pi selbst gibt es quasi keine Algorithmen. Die Probleme dort sind einfach. Man will einen Ton spielen und benutzt die Methodeplay“ gefolgt von der Tonhöhe und dann wird dieser Ton gespielt. Will man aber beispielsweise einen Schachcomputer programmieren, dann es ist notwendig, komplexe Algorithmen zu implementieren.

Übrigens wird Software von der Hardware abgegrenzt. Hardware kann man anfassen, Software nicht. Software sind Programme oder auch Apps. Hardware sind zum Beispiel Computer oder Handys.

Worin besteht nun die Aufgabe eines Programmierer? Nun, bei einem Softwareprojekt gibt es unterschiedliche Aufgabe. Am Anfang stehen Überlegungen, was programmiert werden soll und was die Software genau macht. Diese Betrachtungen sind noch recht stark losgelöst vom Code. Anschließend wird überlegt, wie programmiert wird. Und hier kommt man dem Code schon näher. Das eigentliche Codieren findet nun tatsächlich Zeile für Zeile statt.

Damit kann verallgemeinert werden, dass die Aufgabe eines Softwareentwicklers darin besteht, ein allgemeines und komplexes Problem in immer kleinere Teilprobleme zu zerlegen, bis er quasi auf Anweisungsebene, also den Programmzeilen angekommen ist. Das schnelle Erledigen dieser Aufgabe setzt zum einen analytisches Denken und zum anderen Erfahrung mit Programmiersprachen hinaus. Denn es ist schon einigermaßen wichtig, in welche Richtung man bei der Problemzerlegung vorgehen muss. Aber das übt sich ja mit jedem geschriebenen Programm.