Woher kommt UNIX?

Grüße an alle  In diesen Wochen hat es mir sehr viel Spaß gemacht, einige Bücher über das Programmieren zu lesen. Die Wahrheit ist, dass der beste Weg, das Programmieren zu lernen, immer mit einem Buch ist. Alle Artikel, Tutorials und Anleitungen, die man finden kann (einschließlich meiner), sind nichts anderes Referenzpunkte beim Vergleich mit einem echten Buch zu diesem Thema. Nun müssen wir auch definieren, was ein „echtes“ Buch ist, denn nicht alle Bücher sind in der Regel gut, und viele davon können sogar mehr kosten, als sie wirklich wert sind, und unsere Zeit verschwenden.

In diesen Jahren sind die Liste der Bücher, die ich gelesen habe, und die Liste der Bücher, die ich empfehlen kann, ziemlich unterschiedlich, aber ohne Zweifel unter einigen meiner Favoriten, die wir haben (in keiner bestimmten Reihenfolge):

  • CEH Certified Ethical Hacker von Matt Walker.
  • Python beginnen: Vom Anfänger zum Profi von Magnus Lie Hetland.
  • Hacking: Die Kunst der Ausbeutung durch Jon Erickson.
  • Erste Schritte mit Arduino von Massimo Banzi.
  • Lernen Sie die Bash Shell von Cameron Newbam & Bill Rosenblatt.
  • Lernen Sie die vi und vim Redakteure von Arnold Robbins, Elbert Hannah & Linda Lamb.
  • Linux-Kernel auf den Punkt gebracht von Greg Kroah-Hartman (auch ein Gentoo-Entwickler).
  • Modernes C von Jens Gustedt
  • Das Shellcoder's Handbook von Chris Anley, John Heasman, Felix «FX» Linder und Gerardo Richarte.
  • Die Programmiersprache C von Brian W. Kernighan & Dennis M. Ritchie (Schöpfer von C)
  • Debuggen mit GDB von Richard Stallman, Roland Pesch, Stan Shebs et al.
  • Hacking Linux Exposed: Linux-Sicherheitsgeheimnisse und -Lösungen einer großen Gruppe von ISECOM-Forschern, darunter Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (ein weiterer ehemaliger Gentoo-Entwickler), Thomas Bader, Simon Biles, Colby Clark und Raoul Chiesa Pablo Endres, Richard Feist, Andrea Ghirardini, Julian "HammerJammer" Ho, Marco Ivaldi, Dru Lavigne, Stephane Lo Presti, Christopher Low, Ty Miller, Armand Puccetti und andere.
  • Betriebssysteme: Ein konzeptbasierter Ansatz von Dhananjay M. Dhamdhere
  • Pro Git von Scott Chacon und Ben Straub
  • Expert C Programming: Tiefe Geheimnisse von Peter Van Der Linden.

Ich könnte von jedem dieser Bücher schwärmen, aber für heute werden wir einige Passagen aus dem letzten auf der Liste übernehmen, da mich viele dieser Anekdoten fasziniert und mir geholfen haben, einige der komplizierten Geheimnisse von C und der Programmierung darin besser zu verstehen allgemein. 

Unix und C.

Wenn wir über UNIX sprechen, ist die Geschichte mit dem Ursprung dieses Systems und der Entwicklung der Sprache verflochten, die bis heute eine der am häufigsten verwendeten bei der Entwicklung des Systems und seiner Derivate (einschließlich Linux) ist. Und seltsamerweise sind diese beiden aus einem "Fehler" geboren.

Multitrics Es war ein Megaprojekt, bei dem Bell Laboratories, General Electric und MIT selbst zusammenkamen, um ein Betriebssystem zu erstellen. Dieses System wies viele Fehler auf und war einer der wichtigsten Leistungsfehler, die das System praktisch unbrauchbar machten. Wir sprechen über das Jahr 1969, daher konnte die damalige Hardware nicht die Menge an Software unterstützen, die zum Ausführen des Systems selbst benötigt wurde.

Erst 1970 begannen einige Bell-Ingenieure mit der Arbeit an einem einfachen, schnellen und leichten Betriebssystem für den PDP-7. Das ganze System war eingeschrieben Monteur und war gerufen worden UNIX als Parodie auf Multitrics da er nur ein paar Dinge tun wollte, aber sie gut machen wollte, anstatt die enorme verschwendete Arbeit, die die zweite bedeutete. Jetzt können Sie verstehen, warum Epoch beginnt am 1. Januar 1970.  Für mich eine ziemlich merkwürdige Tatsache. Damals war noch nicht von einem C selbst die Rede, sondern von einem Neu B. da Ritchies Ideen aus der bereits verwendeten B-Sprache dieser Zeit stammten.

Frühes C.

Im Laufe der Jahre (1972-3) wurde der Begriff C verwendet, seit die neue Sprache Gestalt annahm, und um diese Zeit wird eine weitere merkwürdige Tatsache geboren, sagen viele Programmierer und Programmierer-Witze:

Programmierer wissen, dass Sie von 0 statt 1 zählen.

Nun, das ist nicht ganz richtig.  Der wahre Grund, warum dies bis heute so betrachtet wird, liegt darin, dass es für Compiler-Autoren bei seiner Erstellung einfacher war, ein Array mit zu berechnen VersätzeDiese geben die Entfernung an, die von einem Ursprungspunkt zum gewünschten Ziel besteht. Deshalb:

array[8]=2;

Es sagt uns, dass das Element Der Wert des Arrays ist als 2 definiert, da dem Array 8 Einheiten hinzugefügt werden, um den Speicherplatz zu erreichen, in dem Element 2 gespeichert wird. Vor C begannen viele Sprachen, dank C, bei 1 zu zählen, jetzt beginnen fast alle mit 0  Es ist also nicht die Schuld der Programmierer, sondern vielmehr die Schuld der Compiler-Autoren, dass dies so ist.

Die Bourne Shell

Dies ist ein Thema, das, obwohl es nicht direkt mit C zusammenhängt, mehr als einem helfen kann, zu verstehen, warum die Shell-Programmierung so eigenartig ist, und es ist sicherlich neugierig zu wissen. Steve Bourne hat in dieser Saison einen Compiler für Algol-68 geschrieben. Dies ist eine Sprache, in der die Schlüssel ( {} ) werden durch Wörter ersetzt, daher können wir es in C wie folgt definieren:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Dies sind nur einige Beispiele dafür, was Algol versteht. Wenn wir es jedoch heute auf die Shell-Programmierung anwenden, werden Sie verstehen, warum Ihre Programme in der Shell eine benötigen fi für jeden if  Auf jeden Fall interessant.

Anfangen zu lesen

Ich kann Ihnen nicht alle Details des Buches erzählen, insbesondere da es sich bei vielen davon bereits um Programmierthemen handelt, für deren Verständnis Vorkenntnisse erforderlich sind, aber ich dachte, ich würde einige der merkwürdigen Anekdoten, die ich dabei gefunden habe, mit Ihnen teilen  Ich hatte keine Zeit, an einigen Artikeln zu arbeiten, die auf der To-Do-Liste standen, weil mich diese neuesten Bücher einfach gefangen haben und ich sie jeden Tag genieße und vor allem versuche, sie so gut wie möglich zu verstehen. Liebe Grüße und bald werde ich weitere Themen mit euch teilen können, liebe Grüße.