I C & U

Lang ist’s her, Freunde und Freundinnen und Bernd!
Aber manchmal müssen die Dinge auch einfach ruhen. Damit zum Beispiel der Shitstorm vorüberzieht und ich über Tech-Themen schreiben kann ohne mein mittlerweile >9000 Stimmen großes Gewissen im Hinterkopf. Oder bis ich die Scherben meiner Uni-Prokrastination. So kurz vor Scheinausgabe.

Jedenfalls freue ich mich jetzt auf viel Zeit zum Programmieren, basteln, bausteln und bloggern! Bis ich dann in zweieinhalb Monaten feststelle, dass ich noch die Hausarbeit in Kulturtheorien NAEGAL

Um an den vorherigen Post anzuknüpfen – ich hab ja das Buch gewechselt, von Kernighan&Ritchie zu Erlenkötter. Was sich nach einer ziemlichen Einbuße an Coolness anhört ist ein wichtiger Schritt nach vorn für mich gewesen. In den Kommentaren des letzten Posts ist übrigens gut nachzulesen, weswegen manche K&R für den überlegenen Weg halten, aber es bewährte sich trotzdessen meine These, dass es nicht für komplette Programmier-Neulinge wie mich geschaffen ist. Und mit Neuling meine ich, dass ich noch nicht sehr viel Praxis habe, vor allem auf dieser Abstraktionsebene.

Fangen wir also mit dem guten, alten, konservativen, erzkatholischen Vorne an. Was ist C?

C ist eine Programmiersprache. Und sie heißt C, weil sie auf die Sprache B folgte. Genau genommen auf die Sprache BCPL, oder auch „Before C Programming Language“. Rekursion und so, haha. Sie wurde in den Siebzigern in den Bell Laboratories entwickelt, um auf Unix zu programmieren und um eine Assembler-Situation zu vermeiden. Von den mittlerweile bekannten Antagonisten Kernighan und Ritchie wurde sie veröffentlicht. Ende der Achtziger wurde sie von einem ANSI-Kommitee standardisiert und bis heute mehrmals weiterentwickelt. Unter anderem zu Objective C und C++, woraus sich wiederum Java entwickelte.

Und was bringt mir C nun? Na ich kann damit Programme schreiben! Zum Beispiel so geile Rechenprogramme oder Spiele oder sogar Blogs. Dafür schreibe ich erst einen Quellcode, dann kompiliere ich den und dann linke ich das Ganze. Kompilieren bedeutet, dass ich ihn von einer Sprache in die andere übersetze, z.B. von C nach Assembler. Und das ist ne feine Sache, so ein Compiler. Aber darüber schrieb ich schon vor langer Zeit – trotzdem, ich kriege immer noch ein bisschen feuchte Augen wenn ich dran denke, wie schön und magisch und genial… usw.
Der Linker verbindet den Programmcode mit den Bibliotheken, die gebraucht werden. Er ist sozusagen die studentische Hilfskraft, der vom Code (dem Prof) in einer schlecht formulierten Email gesagt wird „Heyhey, ja, die Stabi, und die Regwibi und die stdio, da brauch ich überall Kopien von Dings für das Paper!“ Und der Linker muss dann schauen, welche Funktionen gebraucht werden und in welcher Bibliothek sie lagern. Eine Funktion kann bspw. „printf“ sein und die findet man in der stdio-Bibliothek. Diese bindet der Linker dann mit dem Programm. Und statt der bloßen Anweisung „print“ steckt dahinter eine Funktion, die sich gewaschen hat!

Und jetzt? H4ck0rn! Zum Anfang ein kleines Rechenprogramm. Ich nenne es „kleines Rechenprogramm“. Es gibt Text und eine Rechenaufgabe in mein Terminal aus und berechnet gleich noch die Lösung, als hätte es nie was Anderes getan!

#include <stdio.h> 
main () {
        printf("\nDies wird dein Leben verändern\n");
        printf("13 * 7 = %i \n", 13 * 7 );
        printf("\nMagie!\n") ;
        }

In der ersten Zeile wird angegeben, welche Bibliothek inkludiert werden soll. In diesem Falle die Standard-Input-Output-Bibliothek.
Main bedeutet soviel wie „Hauptfunktion jetze“, wobei in den Klammern die hier leer sind für gewöhnlich Parameter angegeben werden. Die geschweiften Klammern umrahmen einen Block von Anweisungen, in diesem Falle drei printf-Funktionen.

Jeder printf-Anweisung folgt ein Text in Klammern und Anführungszeichen, der ausgegeben werden soll. Die \n-Dinger sind Escapesequenzen und bedeuten „new line“, es wird also eine neue Zeile angefangen. Escapesequenzen werden immer mit einem Backslash geschrieben.

Ach und ganz wichtig: Nach jeder dieser Klammern ein verficktes Semikolon. Nicht das verdammte Semikolon vergessen, nein, nicht vergessen!

Soweit, so nachvollziehbar. Aber behold! Die Zeile mit den Zahlen sieht schon ein bisschen komplizierter aus, stimmt’s? Ist aber eigentlich sehr schlüssig aufgebaut. In den Anführungszeichen steht die Aufgabe, die geprinted werden soll. Aber statt des hässlichen %i wird das Ergebnis des Terms nach dem Komma dafür eingesetzt. Das rechnet printf ebenfalls aus.

Und das Semikolon nicht vergessen und nicht die zweite geschweifte Klammer vergessen! Fertig ist das Programm.
Jetzt verwandeln wir das Programm kleinesrechenprogramm.c in ein Programm namens kleinesrechenprogramm mithilfe eines Compilers

cc kleinesrechenprogramm.c -o kleinesrechenprogramm

um es dann auszuführen:

./kleinesrechenprogramm

Und dann steht Folgendes in meinem Terminal:

Dies wird dein Leben verändern

13 * 7 = 91 
Magie!

Ist das nicht geil??? Jetzt könnt ihr immer, wenn keiner danach gefragt hat, Rechenaufgaben nicht nur lösen, sondern auch schön ausschreiben. Im Supermarkt, in der Uni, auf Partys, zu Hause, alleine…

Ich habe jetzt erstmal versucht, das Programm ein bisschen umzumodellieren, um es aus dem Kopf schreiben zu können. Weitere Rechenoperationen sind +, -, und / für Division. Das klappt auch schon ganz gut, spätestens nach diesem doch hoffentlich idiotensicheren Post. Viel Spaß beim Nachprogrammieren, aufstrebende Nachwuchshacker. Ich weiß es ist ein kleiner Schritt, aber was dich am Trinken im Park hindert, macht dich nur blasser.

Gute Nacht!

Getaggt mit
%d Bloggern gefällt das: