Από πού προέρχεται το UNIX;

Χαιρετίσματα σε όλους 🙂 αυτές τις εβδομάδες έχω διασκεδάσει αρκετά διαβάζοντας κάποια βιβλία σχετικά με τον προγραμματισμό, η αλήθεια είναι ότι ο καλύτερος τρόπος για να μάθετε να προγραμματίζετε είναι πάντα με ένα βιβλίο, οποιοδήποτε άρθρο, φροντιστήριο, οδηγό που μπορεί κανείς να βρει (συμπεριλαμβανομένου του δικού μου) είναι απλώς σημεία αναφοράς κατά τη σύγκριση με ένα πραγματικό βιβλίο για το θέμα. Τώρα, πρέπει να καθορίσουμε τι είναι ένα "πραγματικό" βιβλίο, καθώς δεν είναι συνήθως όλα τα βιβλία καλά, και πολλά από αυτά μπορούν να κοστίσουν ακόμη και περισσότερο από ό, τι πραγματικά αξίζει και σπαταλούν χρόνο.

Κατά τη διάρκεια αυτών των ετών, η λίστα των βιβλίων που έχω διαβάσει και η λίστα των βιβλίων που μπορώ να προτείνω έχουν αποκλίνει αρκετά, αλλά χωρίς αμφιβολία μεταξύ των αγαπημένων μου, έχουμε (χωρίς συγκεκριμένη σειρά):

  • CEH Certified Ethical Hacker από τον Matt Walker.
  • Έναρξη Python: Από το Novice to Professional από τον Magnus Lie Hetland.
  • Hacking: η τέχνη της εκμετάλλευσης από τον Jon Erickson.
  • Ξεκινώντας με το Arduino από τον Massimo Banzi.
  • Μαθαίνοντας το bash Shell των Cameron Newbam & Bill Rosenblatt.
  • Μαθαίνοντας τους συντάκτες vi και vim των Arnold Robbins, Elbert Hannah & Linda Lamb.
  • Πυρήνας Linux εν συντομία από τον Greg Kroah-Hartman (επίσης προγραμματιστής Gentoo).
  • Μοντέρνο C από τον Jens Gustedt
  • Το Εγχειρίδιο του Shellcoder των Chris Anley, John Heasman, Felix «FX» Linder & Gerardo Richarte.
  • Η γλώσσα προγραμματισμού Γ από τους Brian W. Kernighan & Dennis M. Ritchie (δημιουργοί του C)
  • Εντοπισμός σφαλμάτων με το GDB από τους Richard Stallman, Roland Pesch, Stan Shebs, et al.
  • Hacking Linux Exposed: Linux Secrets and Solutions από μια μεγάλη ομάδα ερευνητών του ISECOM, συμπεριλαμβανομένων των Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (άλλος πρώην προγραμματιστής Gentoo), Thomas Bader, Simon Biles, Colby Clark, Raoul Chiesa, Pablo Endres , Richard Feist, Andrea Ghirardini, Julian "HammerJammer" Ho, Marco Ivaldi, Dru Lavigne, Stephane Lo Presti, Christopher Low, Ty Miller, Armand Puccetti κ.ά.
  • Λειτουργικά συστήματα: Μια προσέγγιση βασισμένη σε έννοιες από τον Dhananjay M. Dhamdhere
  • Pro Git των Scott Chacon και Ben Straub
  • Προγραμματισμός εμπειρογνωμόνων Γ: Βαθιά μυστικά του Peter Van Der Linden.

Θα μπορούσα να μιλήσω ιδιαίτερα για καθένα από αυτά τα βιβλία, αλλά για σήμερα θα πάρουμε μερικά από τα αποσπάσματα από το τελευταίο στη λίστα, καθώς πολλά από αυτά τα ανόκτια με έχουν γοητεύσει και με βοήθησαν να κατανοήσω καλύτερα μερικά από τα περίπλοκα μυστικά του C και του προγραμματισμού γενικά. 🙂

Unix και C

Όταν μιλάμε για το UNIX, η ιστορία είναι συνυφασμένη με την προέλευση αυτού του συστήματος και την ανάπτυξη της γλώσσας που μέχρι σήμερα είναι μια από τις πιο χρησιμοποιούμενες στην ανάπτυξη αυτού και των παραγώγων του (συμπεριλαμβανομένου του Linux). Και περίεργα, αυτά τα δύο γεννιούνται από ένα «λάθος».

Πολλαπλές Ήταν ένα μεγάλο έργο που συγκέντρωσε τα Bell Laboratories, General Electric και το ίδιο το MIT για να δημιουργήσουν ένα λειτουργικό σύστημα, είπε ότι το σύστημα παρουσίασε πολλά σφάλματα, και μεταξύ μιας από τις πιο σημαντικές, αποτυχίες απόδοσης που κατέστησαν το σύστημα πρακτικά άχρηστο. Μιλάμε για το έτος 1969, οπότε το υλικό εκείνης της εποχής δεν μπορούσε να υποστηρίξει την ποσότητα του λογισμικού που χρειαζόταν για την εκτέλεση του ίδιου του συστήματος.

Μόλις το 1970, μερικοί μηχανικοί της Bell άρχισαν να εργάζονται σε ένα απλό, γρήγορο και ελαφρύ λειτουργικό σύστημα για το PDP-7. Όλο το σύστημα είχε γραφτεί Assembler και είχε κληθεί UNIX ως παρωδία του Πολλαπλές αφού ήθελε μόνο να κάνει μερικά πράγματα, αλλά να τα κάνει καλά αντί για την τεράστια χαμένη δουλειά που σήμαινε το δεύτερο. Τώρα μπορείτε να καταλάβετε γιατί Εποχή ξεκινά την 1η Ιανουαρίου, 1970. 🙂 Ένα περίεργο γεγονός για μένα. Εκείνη την εποχή δεν υπήρχε καμία συζήτηση για το ίδιο το C, αλλά για ένα Νέο Β αφού οι ιδέες του Ritchie προέρχονταν από την ήδη χρησιμοποιούμενη γλώσσα Β της εποχής.

Πρώιμη Γ

Με τα χρόνια (1972-3) ο όρος Γ άρχισε να χρησιμοποιείται καθώς η νέα γλώσσα άρχισε να διαμορφώνεται και γύρω από αυτό το διάστημα γεννήθηκε ένα άλλο περίεργο γεγονός, λένε πολλοί προγραμματιστές και αστεία προγραμματιστών:

Οι προγραμματιστές γνωρίζουν ότι αρχίζετε να μετράτε από 0 αντί για 1.

Λοιπόν, αυτό δεν είναι απολύτως αληθινό 🙂 ο πραγματικός λόγος για τον οποίο αυτό θεωρείται μέχρι σήμερα είναι επειδή κατά τη δημιουργία του, για τους συντάκτες συγγραφέων ήταν ευκολότερο να υπολογιστεί ένας πίνακας αντισταθμίσεις, αυτά υποδεικνύουν την απόσταση που υπάρχει από ένα σημείο προέλευσης έως τον επιθυμητό στόχο, γι 'αυτό:

array[8]=2;

Μας λέει ότι το στοιχείο του πίνακα ορίζεται ως 2, επειδή 8 μονάδες προστίθενται στον πίνακα για να φτάσουν στο χώρο μνήμης όπου θα αποθηκευτεί το στοιχείο 2. Πριν από το C, πολλές γλώσσες άρχισαν να μετράνε από το 1, χάρη στο C, τώρα σχεδόν όλες ξεκινούν με 0 🙂 οπότε δεν φταίνε οι προγραμματιστές, αλλά το λάθος των συγγραφέων του συγγραφέα είναι έτσι.

Το κέλυφος Bourne

Αυτό είναι ένα θέμα που, αν και δεν σχετίζεται άμεσα με το C, μπορεί να βοηθήσει περισσότερους από έναν να κατανοήσουν γιατί ο προγραμματισμός της Shell είναι τόσο περίεργος και είναι σίγουρα περίεργο να το μάθουμε. Ο Steve Bourne έγραψε έναν μεταγλωττιστή για το Algol-68 εκείνη τη σεζόν, αυτή είναι μια γλώσσα στην οποία τα κλειδιά ( {} ) αντικαθίστανται από λέξεις, έτσι θα μπορούσαμε να το ορίσουμε ως εξής στο Γ:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Αυτά είναι μόνο μερικά παραδείγματα του τι καταλαβαίνει η Algol, αλλά αν το εφαρμόσουμε στον προγραμματισμό κελύφους σήμερα, θα καταλάβετε γιατί στο κέλυφος τα προγράμματά σας απαιτούν fi για καθένα if 🙂 σίγουρα ενδιαφέρον.

Ξεκινήστε να διαβάζετε

Δεν μπορώ να σας πω όλες τις λεπτομέρειες του βιβλίου, ειδικά επειδή πολλά από αυτά είναι ήδη θέματα προγραμματισμού που απαιτούν να γίνει κατανοητό ένα προηγούμενο υπόβαθρο, αλλά σκέφτηκα ότι θα μοιραστώ μαζί σας μερικά από τα περίεργα ανέκδοτα που βρήκα στην πορεία 🙂 I δεν είχα χρόνο να δουλέψω σε κάποια από τα αντικείμενα που περιλαμβάνονται στη λίστα υποχρεώσεων επειδή απλά αυτά τα τελευταία βιβλία με έχουν πιάσει και τα απολαμβάνω κάθε μέρα και πάνω απ 'όλα προσπαθώ να τα καταλάβω στο έπακρο. Χαιρετισμούς και σύντομα θα μπορέσω να μοιραστώ μαζί σας περισσότερα θέματα, χαιρετισμούς.


13 σχόλια, αφήστε τα δικά σας

Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Γιάννης dijo

    Το άρθρο σας ήταν πολύ ενδιαφέρον για μένα. Ευχαριστώ πολύ.

  2.   HO2Gi dijo

    Πολύ ενδιαφέρον όπως πάντα.

  3.   Χοσέ Ραφαέλ dijo

    Πολύ ενδιαφέρουσες οι διευκρινίσεις είναι καλές.

  4.   alex dijo

    Άριστη

  5.   Ντάνιελ dijo

    Ενδιαφέρον !!! Ευχαριστώ πολύ.

  6.   δεύτερος dijo

    πολλαπλά; δεν θα είναι multics (https://en.wikipedia.org/wiki/Multics)

    γλώσσες με ευρετήρια από 1 είναι μια εφεύρεση του σατανά ...

    1.    ChrisADR dijo

      Ενδιαφέρουσα σημείωση supp Υποθέτω ότι κάποια στιγμή στην ιστορία έχουν χρησιμοποιηθεί και οι δύο όροι:

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

      και προφανώς το ίδιο βιβλίο που γράφτηκε στα μέσα της δεκαετίας του '90.

      Ευχαριστώ για τη διευκρίνιση 🙂 χαιρετισμούς

      1.    δεύτερος dijo

        wa, τι περίεργο, με έκανε να αμφιβάλλω, έχω κοιτάξει σε ένα "αγορασμένο" αντίγραφο του Expert C Programming: Βαθιά μυστικά και έρχονται πολλά, είναι η πρώτη φορά που ακούω αυτά τα multrics. Πόσο περίεργο, θυμίζει λίγο το κουνέλι trix

        1.    ChrisADR dijo

          χαχαχα σίγουρα περίεργος, έλεγξα το αγγλικό μου αντίγραφο βαθιών μυστικών, εκεί λέει επίσης το Multrics (γιατί με έκανε επίσης αμφιβολία) ... ίσως ήταν μια έκφραση της εποχής 😛

          αφορά

  7.   ED774 dijo

    Μεγάλη συνεισφορά

  8.   ανώνυμος dijo

    Είναι ενδιαφέρον, αν και σίγουρα, το Multrics οφείλεται σε εσφαλμένο αποτύπωμα, καθώς το αρχικό όνομα αυτού του λειτουργικού συστήματος ήταν Multics και το Unix, που αρχικά ονομάστηκε Unics, αναφέρεται ακριβώς στο εν λόγω μεγάλο λειτουργικό σύστημα, τελικά και από φωνητική, η Unics μετατράπηκε σε Unix, τώρα , έπρεπε μόνο να αναφέρετε το όνομα του ποιος θεωρείται συγγραφέας του Unix. Ο Ken Thompson, ο θρύλος λέει ότι τόσο ο Thompson όσο και ο Ritchie βρισκόταν στην καφετέρια στο Bell Labs σχολιάζοντας τα έργα τους και ήταν ότι ο Ritchie πρότεινε στον Thomposon να ξαναγράψει τα Unics του με το πρόγραμμα C, τη γλώσσα που είχε γράψει ... και το ξεκούραση, είναι ιστορία. 😉

    Παρεμπιπτόντως, προηγουμένως όλα τα προγράμματα γράφτηκαν με τις οδηγίες του μηχανήματος, τα οποία τα έκαναν εντελώς εξαρτώμενα από το υλικό, η καινοτομία του C, εκτός από τη διευκόλυνση της σύνταξης προγραμμάτων, ήταν ότι η γλώσσα ήταν ανεξάρτητη από το υλικό που εφαρμόζει το compilers, μια φιλοσοφία που πολλά χρόνια αργότερα θα πήρε την Java, με την έννοια ότι τα προγράμματα δεν εξαρτώνταν από το λειτουργικό σύστημα, προσθέτοντας τη διάσημη εικονική μηχανή java.

    1.    ChrisADR dijo

      Το κακό για τους θρύλους είναι ότι διαστρεβλώνουν την ιστορία, με περισσότερους από έναν τρόπους ... και μπορούν να σε κάνουν να σκεφτείς ότι κάτι συμβαίνει όταν δεν είναι ... όπως το γεγονός της υπάρχουσας συνομιλίας μεταξύ Thompson και Ritchie (την οποία παραλείψαμε) κατά βούληση) αφού οδηγεί σε ιστορικά και τεχνικά σφάλματα (το C δεν ήταν πριν από το UNIX) ...

      Και για το δεύτερο ... ένας άλλος θρύλος που διαστρεβλώνει την πραγματικότητα, καθώς πριν από το C υπήρχαν B, A, pascal, Ada, algol-60, PL / 1 και μερικές ακόμη που ήταν σωστά προγραμματισμένες γλώσσες (πολύ διαφορετικές από τη Συνέλευση και οι διάλεκτοι του από την αρχιτεκτονική που εξαρτώνται από το υλικό του επεξεργαστή) οπότε ο Γ δεν "καινοτομεί" με αυτή την έννοια, απλώς υιοθέτησε λύσεις που υπήρχαν ήδη σε άλλες γλώσσες και στο τέλος έγινε δημοφιλής γρηγορότερος και καλύτερος από αυτές ... Το μόνο μέρος Η αλήθεια είναι ότι η Java βασίστηκε σε αυτήν την έννοια της φορητότητας για να δημιουργήσει αργότερα την εικονική της μηχανή, αλλά όχι μόνο βασίστηκε στο C για αυτό, αλλά ακολούθησε και άλλα μοντέλα, διαφορετικά δεν θα είχαμε το αντικείμενο- προσανατολισμένο πρότυπο προγραμματισμού στην Ιάβα ...

      Ένιωσα ότι πρέπει να ξεκαθαρίσω την κατάσταση, επειδή οποιοσδήποτε λιγότερο έμπειρος θα μπορούσε να το θεωρήσει αληθινό και, στη συνέχεια, να πιστέψει ότι συνέβη έτσι…

  9.   Ιγνάσιο Έσκιβελ dijo

    Όπως πάντα, το άρθρο είναι πολύ ενδιαφέρον, ευχαριστώ για τη συμβολή.