Woher kommt UNIX?

Grüße an alle - diese Wochen war ich ziemlich unterhalten, einige Bücher über Programmierung zu lesen. Die Wahrheit ist, dass der beste Weg, das Programmieren zu lernen, immer mit einem Buch ist. Jeder Artikel, jedes Tutorial, jede Anleitung, die man finden kann (einschließlich meiner), ist nur Benchmarks beim Vergleich mit einem echten Buch zu diesem Thema. Jetzt müssen wir auch definieren, was ein "echtes" Buch ist, da nicht alle Bücher normalerweise gut sind und viele von ihnen sogar mehr kosten können, als sie wirklich wert sind und 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 über jedes dieser Bücher hoch sprechen, aber für heute werden wir einige der Passagen aus dem letzten auf der Liste übernehmen, da viele dieser Anektoden mich fasziniert haben und mir geholfen haben, einige der komplizierten Geheimnisse von C und Programmierung im Allgemeinen besser zu verstehen 🙂

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. 🙂 Eine ziemlich merkwürdige Tatsache für mich. Zu dieser Zeit 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, ist, 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 of array 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 von 1 zu zählen, jetzt beginnen fast alle mit 0 🙂 Es ist also nicht die Schuld der Programmierer, sondern 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 🙂 sicherlich interessant.

Anfangen zu lesen

Ich kann Ihnen nicht alle Details des Buches erzählen, zumal viele davon bereits Programmierthemen sind, für deren Verständnis ein vorheriger Hintergrund erforderlich ist, aber ich dachte, ich würde Ihnen einige der merkwürdigen Anekdoten mitteilen, die ich auf dem Weg gefunden habe Zeit, an einigen Artikeln zu arbeiten, die auf der To-Do-Liste standen, weil mich diese letzten Bücher einfach erwischt haben und ich sie jeden Tag genieße und vor allem versuche, sie in vollen Zügen zu verstehen. Grüße und bald kann ich mehr Themen und Grüße mit Ihnen teilen.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   John sagte

    Ihr Artikel war für mich sehr interessant. Vielen Dank.

  2.   HO2Gi sagte

    Sehr interessant wie immer.

  3.   Jose Rafael sagte

    Sehr interessant sind die Klarstellungen gut.

  4.   Alex sagte

    ausgezeichnet

  5.   Danielga sagte

    Interessant !!! Vielen Dank.

  6.   zweite sagte

    Multrics? es wird nicht multics sein (https://en.wikipedia.org/wiki/Multics)

    Sprachen mit Indizes von 1 sind eine Erfindung des Satans ...

    1.    ChrisADR sagte

      Interessanter Hinweis 🙂 Ich nehme an, dass irgendwann in der Geschichte beide Begriffe verwendet wurden:

      https://www.landley.net/history/mirror/collate/unix.htm

      und offensichtlich das gleiche Buch, das Mitte der 90er Jahre geschrieben wurde.

      Vielen Dank für die Klarstellung 🙂 Grüße

      1.    zweite sagte

        wa, was für eine seltsame Sache, Sie haben mich zweifeln lassen, ich habe in einer "gekauften" Kopie von Expert C Programming nachgesehen: Tiefe Geheimnisse und es kommen Multics, es ist das erste Mal, dass ich diese Multrics höre. Wie neugierig, es erinnert ein wenig an das Trix-Kaninchen

        1.    ChrisADR sagte

          hahaha sicherlich neugierig, ich habe meine englische Kopie von tiefen Geheimnissen überprüft, dort steht auch Multrics (weil du mich auch zweifeln lässtest) ... vielleicht war es ein Ausdruck der Zeit 😛

          Grüße

  7.   ED774 sagte

    Großartiger Beitrag

  8.   anonym sagte

    Interessant, obwohl sicherlich, ist Multrics auf einen Druckfehler zurückzuführen, da der ursprüngliche Name dieses Betriebssystems Multics war und Unix ursprünglich Unics hieß und sich genau auf dieses großartige Betriebssystem bezog, schließlich und phonetisch auf Unics se In Unix umgewandelt, mussten Sie nur noch den Namen desjenigen erwähnen, der als Autor von Unix gilt. Ken Thompson, der Legende nach waren sowohl Thompson als auch Ritchie in der Cafeteria der Bell Labs und kommentierten ihre Projekte. Ritchie schlug Thomposon vor, sein Unics with C-Programm, die Sprache, die er geschrieben hatte, und den Rest neu zu schreiben ist Geschichte. 😉

    Übrigens wurden zuvor alle Programme mit den Anweisungen der Maschine geschrieben, was sie vollständig von der Hardware abhängig machte. Die Innovation von C bestand neben der Erleichterung des Schreibens von Programmen darin, dass die Sprache unabhängig von der Hardware war, die die implementiert Compiler, eine Philosophie, die viele Jahre später Java übernehmen würde, in dem Sinne, dass die Programme nicht vom Betriebssystem abhängig waren, und die berühmte Java Virtual Machine hinzufügen.

    1.    ChrisADR sagte

      Das Schlechte an Legenden ist, dass sie die Geschichte in mehrfacher Hinsicht verzerren ... und Sie können denken, dass etwas passiert, wenn es nicht ... wie die Tatsache des bestehenden Gesprächs zwischen Thompson und Ritchie (das ich nach Belieben weggelassen habe), da es führt zu historischen und technischen Fehlern (C war nicht vor UNIX) ...

      Und was die zweite betrifft ... eine weitere Legende, die die Realität verzerrt, da es vor C B, A, Pascal, Ada, Algol-60, PL / 1 und einige andere gab, die richtig Programmiersprachen waren (ganz anders als Assembly) und ihre Dialekte nach Architektur, die von der Hardware des Prozessors abhängen), so dass C nicht in diesem Sinne "innovierte", sondern einfach Lösungen übernahm, die bereits in anderen Sprachen existierten, und am Ende wurde es schneller und besser populär als diese ... Der einzige Teil Die Wahrheit ist, dass Java auf diesem Konzept der Portabilität basierte, um später seine virtuelle Maschine zu erstellen, sich aber nicht nur auf C stützte, sondern auch anderen Modellen folgte, sonst hätten wir das objektorientierte Programmierparadigma in Java nicht ...

      Ich hatte das Gefühl, dass ich die Situation klären sollte, weil jeder, der sich weniger auskennt, sie als wahr ansehen und dann glauben könnte, dass es so passiert ist… Grüße 🙂

  9.   Ignatius Esquivel sagte

    Wie immer ist der Artikel sehr interessant, danke für den Beitrag.