C im 21. Jahrhundert (eBook)
320 Seiten
O'Reilly Verlag
978-3-95561-693-9 (ISBN)
Vorwort
Is it really punk rock
Like the party line?
—Wilco, »Too Far Apart«
C ist Punkrock
C besitzt nur eine Handvoll Schlüsselwörter, es hat seine Ecken und Kanten – und es rockt. Sie können alles mit ihm machen. Wie die C-, G- und D-Akkorde auf einer Gitarre können Sie die grundlegende Funktionsweise ziemlich schnell erlernen und dann den Rest Ihres Lebens damit verbringen, besser zu werden. Diejenigen, die das nicht schaffen, fürchten seine Macht und glauben, es sei zu unhandlich, um sicher damit umgehen zu können. Aber C ist immer noch bei Weitem die beliebteste unter den Sprachen, hinter denen keine Firma oder Stiftung mit viel Geld steht.[1]
Zudem ist die Sprache etwa 40 Jahre alt – also im besten Alter. Sie wurde von ein paar Leuten geschrieben, die im Grunde gegen das Management arbeiteten – eine perfekte Ausgangsbasis für Punkrock –, aber das war in den 1970ern, und seitdem hatte die Sprache ausreichend Zeit, den Mainstream zu erreichen.
Was taten die Leute, als der Punkrock im Mainstream ankam? In den Jahrzehnten seit seinem Auftauchen in den 1970ern ist der Punk sicherlich »normal« geworden: The Clash, The Offspring, Green Day und The Strokes haben weltweit Millionen von Alben verkauft (um nur ein paar zu nennen), und ich habe im Supermarkt harmlose Instrumentalversionen von Liedern gehört, die eigentlich mal Grunge waren. Der frühere Leadsänger von Sleater-Kinney hat nun eine beliebte Sketch-Comedy-Show, die regelmäßig Punkrocker veralbert.[2] Eine Reaktion auf die fortschreitende Evolution könnte die unnachgiebige Einstellung sein, nur das ursprüngliche Zeugs sei Punk und alles andere Easy-Punk-Pop für die Massen. Die Traditionalisten können immer noch ihre Alben aus den 70ern hören, und wenn die Platten abgenudelt sind, laden sie eine digital gemasterte Edition herunter. Für ihre Kinder können sie dann Ramones-Hoodies kaufen.
Die nicht Eingeweihten verstehen es einfach nicht. Manche von ihnen hören das Wort Punk und haben ein Bild aus dem 1970ern vor Augen – ein historisches Artefakt über ein paar Kids, die damals irgendwie alles etwas anders gemacht haben. Die traditionellen Punks, die immer noch ihre 1973er-Iggy-Pop-LP laufen lassen, erfreuen sich natürlich daran, aber sie untermauern die Annahme, Punk sei verknöchert und nicht mehr relevant.
Zurück in die Welt von C. Hier haben wir sowohl die Traditionalisten, die die Fahne von ANSI 89 hochhalten, als auch diejenigen, die einfach so schreiben, dass das Programm tut, was es soll, und die vielleicht nicht einmal bemerken, dass ihr Code sich in den 1990ern nicht hätte kompilieren lassen. Außenstehende verstehen den Unterschied nicht. Sie sehen Bücher aus den 1980ern, die immer noch nachgedruckt werden, und Onlinetutorials aus den 1990ern. Sie hören von Hardcore-Traditionalisten, die darauf bestehen, immer noch so wie damals zu schreiben, und sie wissen nicht, dass sich die Sprache und der Rest der Anwender weiterentwickelt haben. Das ist beschämend, da sie viele tolle Dinge verpassen.
Dies ist ein Buch über das Brechen von Traditionen und darüber, wie man dafür sorgt, dass C Punkrock bleibt. Ich interessiere mich nicht dafür, den Code aus diesem Buch mit der ursprünglichen C-Spezifikation aus Kernighans & Ritchies Buch von 1978 zu vergleichen. Mein Telefon besitzt 512 MByte Speicher – warum sollten unsere C-Lehrbücher noch Seiten darauf verwenden, Techniken zum Einsparen von Kilobytes in den Programmen zu beschreiben. Ich schreibe diesen Text auf einem einfachen Netbook, das 3,2 Milliarden Anweisungen pro Sekunde ausführen kann – warum soll ich mich darum scheren, ob bei einer Operation 8 oder 16 Bits verglichen werden müssen? Wir sollten Code schreiben, der sich schnell schreiben lässt und von unseren Kollegen gelesen werden kann. Wir schreiben weiterhin in C, daher wird unser lesbarer, aber nicht vollständig optimierter Code immer noch um Größenordnungen schneller laufen, als wenn wir vergleichbaren Code in einer der vielen anderen aufgeblasenen Sprachen schreiben würden.
Fragen & Antworten (oder: Die Rahmenbedingungen für dieses Buch)
F: Was unterscheidet dieses C-Buch von allen anderen?
A: Die Lehrbücher zu C ähneln sich alle sehr. (Ich habe sehr viele gelesen, unter anderem [Griffiths 2012], [Kernighan 1978, deutsch 1983], [Kernighan 1988, deutsch 1990], [Kochan 2004], [Oualline 1997], [Perry 1994], [Prata 2004] und [Ullman 2004].) Die meisten wurden geschrieben, bevor der C99-Standard viele Anwendungsaspekte vereinfacht hat, und bei manchen Büchern, die sich mittlerweile in der n-ten Auflage befinden, hat der Autor einfach nur ein paar Hinweise zu aktuellen Entwicklungen eingebaut, statt sich neue Gedanken über den Einsatz der Sprache zu machen. Sie erwähnen alle, dass es vielleicht Bibliotheken gibt, die Sie eventuell in Ihrem eigenen Code einsetzen können, aber diese Texte sind aus einer Zeit vor den aktuellen Installationstools und Ökosystemen, mit denen der Einsatz dieser Bibliotheken zuverlässig und ausreichend portabel wurde. Diese Lehrbücher sind immer noch korrekt und haben auch ihren Wert, aber moderner C-Code sieht einfach nicht mehr so aus wie der Code aus diesen Büchern.
Dieses Buch fängt da an, wo sie aufhören – es denkt neu über die Sprache und die Umgebung nach, in der sie eingesetzt wird. Es setzt einfach Bibliotheken für verkettete Listen und XML-Parser ein, statt alles von Grund auf selbst zu entwickeln. Das Buch dreht sich um das Schreiben von lesbarem Code und anwenderfreundlichen Funktionsschnittstellen.
F: Für wen ist dieses Buch gedacht? Muss ich ein Programmier-Guru sein?
A: Sie haben schon Programmiererfahrung in einer beliebigen Sprache, vielleicht in Java oder in einer Skriptsprache wie Perl. Ich muss Ihnen nicht mehr verkaufen, warum Ihr Code nicht nur aus einer langen Funktion ohne Unterfunktionen bestehen sollte.
Sie haben ein bisschen Wissen über C, aber machen Sie sich keine Sorgen, wenn Sie es nicht allzu gut kennen – wie ich noch erklären werde, gibt es eine ganze Menge Zeugs, das Sie besser nie erlernen sollten. Sind Sie in Bezug auf die C-Syntax noch völlig unbeleckt: Die Sprache ist fast aggressiv einfach, und die Suchmaschine Ihrer Wahl wird Sie zu Dutzenden von Onlinetutorials führen. Haben Sie schon Erfahrung mit anderen Sprachen, sollten Sie die Grundlagen in ein oder zwei Stunden draufhaben.
Ich möchte auch darauf hinweisen, dass ich mit Modeling with Data [Klemens 2008] ein Lehrbuch über statistisches und wissenschaftliches Programmieren geschrieben habe. Neben vielen Details zu numerischen Daten und statistischen Modellen für das Beschreiben von Daten gibt es hier ein eigenes Tutorial zu C, das natürlich meiner Meinung nach viele der Fehler älterer C-Tutorien vermeidet.
F: Ich bin Anwendungsentwickler, kein Kernel-Hacker. Warum sollte ich C nutzen, statt eine Sprache wie Python einzusetzen, mit der der Code schnell geschrieben ist?
A: Wenn Sie Anwendungsentwickler sind, ist dieses Buch für Sie genau richtig. Ich lese immer wieder, dass die Leute davon ausgehen, dass C eine Systemsprache ist. Aber das ist doch sehr brav gedacht – keiner kann uns sagen, was wir womit schreiben dürfen!
Aussagen wie »Unsere Sprache ist fast genauso schnell wie C, aber viel einfacher zu schreiben« sind so verbreitet, dass es sich fast schon um ein Klischee handelt. Klar, C ist auf jeden Fall so schnell wie C, und Ziel dieses Buchs ist, Ihnen zu zeigen, dass C sich viel einfacher einsetzen lässt, als die Lehrbücher aus den vergangenen Jahrzehnten vorgeben. Aufrufe von malloc
und das Jonglieren mit der Speicherverwaltung sind nur noch halb so oft nötig wie in den 1990ern, der Umgang mit Strings lässt sich einfacher gestalten, und selbst die Syntax des Sprachkerns sorgt mittlerweile für mehr Lesbarkeit.
Ich habe tatsächlich mit C begonnen, weil ich eine Simulation beschleunigen musste, die in der Skriptsprache R lief. Wie so viele andere Skriptsprachen besitzt auch R eine C-Schnittstelle, über die die Anwender jederzeit ausweichen können, wenn die Hostsprache zu langsam ist. Schließlich hatte ich so viele Funktionen, die aus dem R-Skript in C-Code sprangen, dass ich die Hostsprache ganz aufgegeben habe. Und nun schreibe ich schließlich ein Buch über moderne C-Techniken.
F: Schön, dass Anwendungsentwickler, die von einer Skriptsprache kommen, dieses Buch mögen werden, aber ich bin ein Kernel-Hacker. Ich habe mir in der fünften Klasse C selbst beigebracht und habe sogar manchmal Träume, die sich korrekt kompilieren lassen. Was gibt es denn da noch Neues für mich?
A: C hat sich in den letzten 20 Jahren ziemlich weiterentwickelt. Wie ich später noch beschreiben werde, haben sich die Dinge, die garantiert von allen C-Compilern unterstützt werden, mit der Zeit geändert – dank der zwei neuen C-Standards, die seit dem ursprünglichen ANSI-Standard herausgekommen sind. Werfen Sie vielleicht einmal einen Blick in Kapitel 10 und schauen Sie, ob irgendwas Neues Sie dort überrascht.
Auch die Umgebung hat sich geändert. Die Autotools haben die gesamte Distribution von Code geändert, es ist jetzt...
Erscheint lt. Verlag | 17.6.2014 |
---|---|
Verlagsort | Heidelberg |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
Schlagworte | C • Programmiersprache • Programmiertechniken |
ISBN-10 | 3-95561-693-2 / 3955616932 |
ISBN-13 | 978-3-95561-693-9 / 9783955616939 |
Haben Sie eine Frage zum Produkt? |
![PDF](/img/icon_pdf_big.jpg)
Größe: 1,5 MB
Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopierschutz. Eine Weitergabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persönlichen Nutzung erwerben.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich