Da dove viene UNIX?

Saluti a tutti 🙂 in queste settimane sono stato abbastanza divertito leggendo alcuni libri sulla programmazione, la verità è che il modo migliore per imparare a programmare è sempre con un libro, qualsiasi articolo, tutorial, guida che si può trovare (compreso il mio) sono semplici benchmark quando li si confronta con un vero libro sull'argomento. Ora, dobbiamo definire anche cosa sia un libro "vero", dal momento che non tutti i libri di solito sono buoni, e molti di loro possono anche costare più di quanto valgono realmente e perdere tempo.

In questi anni la lista dei libri che ho letto e la lista dei libri che posso consigliare si sono discostate un po ', ma senza dubbio tra alcuni dei miei preferiti abbiamo (senza un ordine preciso):

  • Hacker etico certificato CEH di Matt Walker.
  • Beginning Python: From Novice to Professional di Magnus Lie Hetland.
  • Hacking: l'arte dello sfruttamento di Jon Erickson.
  • Primi passi con Arduino di Massimo Banzi.
  • Imparare il bash Shell di Cameron Newbam e Bill Rosenblatt.
  • Imparare gli editor vi e vim di Arnold Robbins, Elbert Hannah e Linda Lamb.
  • Linux Kernel in a Nutshell di Greg Kroah-Hartman (anche uno sviluppatore Gentoo).
  • Modern C di Jens Gustedt
  • Il Manuale di Shellcoder di Chris Anley, John Heasman, Felix «FX» Linder e Gerardo Richarte.
  • Il linguaggio di programmazione C di Brian W. Kernighan e Dennis M. Ritchie (creatori di C)
  • Debug con GDB di Richard Stallman, Roland Pesch, Stan Shebs, et al.
  • Hacking Linux Exposed: Linux Security Secrets and Solutions da un grande gruppo di ricercatori ISECOM, tra cui Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (un altro ex sviluppatore 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 & et al.
  • Sistemi operativi: un approccio basato sui concetti di Dhananjay M. Dhamdhere
  • Pro Git di Scott Chacon e Ben Straub
  • Programmazione Expert C: segreti profondi di Peter Van Der Linden.

Potrei parlare molto bene di ciascuno di questi libri, ma per oggi prenderemo alcuni passaggi dall'ultimo della lista, poiché molti di questi aneddoti mi hanno affascinato e mi hanno aiutato a capire meglio alcuni degli intricati segreti di C e programmazione in generale. 🙂

Unix e C

Quando si parla di UNIX, la storia si intreccia con l'origine di questo sistema e lo sviluppo del linguaggio che fino ad oggi è uno dei più utilizzati nello sviluppo di esso e dei suoi derivati ​​(Linux compreso). E, curiosamente, questi due sono nati da un "errore".

Multitrics È stato un mega progetto che ha riunito i laboratori Bell, la General Electric e lo stesso MIT per creare un sistema operativo che presentava molti errori e, tra i più importanti, fallimenti prestazionali che rendevano il sistema praticamente inutilizzabile. Stiamo parlando dell'anno 1969, quindi l'hardware di quel tempo non poteva supportare la quantità di software necessaria per eseguire il sistema stesso.

Fu solo nel 1970 che un paio di ingegneri Bell iniziarono a lavorare su un sistema operativo semplice, veloce e leggero per il PDP-7. L'intero sistema era stato scritto Assembler ed era stato chiamato UNIX come una parodia di Multitrics dal momento che voleva solo fare poche cose, ma farle bene invece del tremendo lavoro sprecato che il secondo significava. Adesso puoi capire perché Epoch inizia il 1 gennaio 1970. 🙂 Un fatto piuttosto curioso per me. A quel tempo, non si parlava ancora di una C in sé, ma di a Nuovo B poiché le idee di Ritchie provenivano dal linguaggio B già utilizzato di quel tempo.

Inizio C.

Nel corso degli anni (1972-3) il termine C iniziò ad essere usato quando il nuovo linguaggio iniziò a prendere forma, e in questo periodo nacque un altro fatto curioso, molti programmatori e battute sui programmatori dicono:

I programmatori sanno che inizi a contare da 0 invece di 1.

Bene, questo non è del tutto vero 🙂 il vero motivo per cui questo è considerato così fino ad oggi è perché alla sua creazione, per gli autori di compilatori era più facile calcolare un array usando offset, indicano la distanza che esiste da un punto di origine all'obiettivo desiderato, ecco perché:

array[8]=2;

Ci dice che l'elemento di array è definito come 2, perché 8 unità vengono aggiunte all'array per raggiungere lo spazio di memoria in cui verrà memorizzato l'elemento 2. Prima del C, molte lingue cominciavano a contare da 1, grazie a C, ora quasi tutte iniziano con 0 🙂 quindi non è colpa dei programmatori, ma degli autori del compilatore se è così.

La Bourne Shell

Questo è un argomento che, sebbene non direttamente correlato al C, può aiutare più di uno a capire perché la programmazione Shell sia così peculiare, ed è certamente curioso di sapere. Steve Bourne scrisse un compilatore per Algol-68 quella stagione, questo è un linguaggio in cui le chiavi ( {} ) sono sostituiti da parole, quindi potremmo definirlo come segue in C:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Questi sono solo alcuni esempi di ciò che Algol comprende, ma se lo applichiamo oggi alla programmazione della shell, capirete perché nella shell i vostri programmi richiedono un fi per ciascuno if 🙂 sicuramente interessante.

Inizia a leggere

Non posso dirti tutti i dettagli del libro, soprattutto perché molti di questi sono già argomenti di programmazione che richiedono un background preliminare per essere compresi, ma ho pensato di condividere con te alcuni dei curiosi aneddoti che ho trovato lungo il percorso 🙂 I non ho fatto in tempo a lavorare su alcune delle cose che sono state nella lista delle cose da fare perché semplicemente questi ultimi libri mi hanno preso e me li sto godendo ogni giorno e soprattutto cercando di capirli al meglio. Saluti ea presto potrò condividere con voi altri argomenti, saluti.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Giovanni suddetto

    Il tuo articolo è stato molto interessante per me. Molte grazie.

  2.   HO2Gi suddetto

    Interessantissimo come sempre.

  3.   Jose Rafael suddetto

    Molto interessanti le precisazioni sono buone.

  4.   alex suddetto

    Eccellente

  5.   Daniela suddetto

    Interessante !!! Molte grazie.

  6.   Segundo suddetto

    multrics? non sarà multics (https://en.wikipedia.org/wiki/Multics)

    le lingue con indici da 1 sono un'invenzione di satana ...

    1.    Chris ADR suddetto

      Nota interessante 🙂 Suppongo che a un certo punto della storia siano stati usati entrambi i termini:

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

      e ovviamente lo stesso libro che è stato scritto a metà degli anni '90.

      Grazie per la precisazione 🙂 saluti

      1.    Segundo suddetto

        ma che strana cosa, mi hai fatto dubitare, ho guardato in una copia "acquistata" di Expert C Programming: Deep secrets e ci sono multic in arrivo, è la prima volta che sento che multrics. Che curiosità, ricorda un po 'il coniglio di trix

        1.    Chris ADR suddetto

          hahaha sicuramente curioso, ho controllato la mia copia inglese di deep secrets, lì c'è anche scritto Multrics (perché mi avevi anche fatto dubitare) ... forse era un'espressione del tempo 😛

          saluti

  7.   ED774 suddetto

    Ottimo contributo

  8.   anonimo suddetto

    Interessante, anche se sicuramente, Multrics è dovuto a un errore di stampa, dal momento che il nome originale di quel sistema operativo era Multics, e Unix era originariamente chiamato Unics, precisamente riferendosi a quel grande sistema operativo, eventualmente e per fonetica, Unics se trasformato in Unix, ora, bastava citare il nome della persona che si considera l'autore di Unix; Ken Thompson, la leggenda vuole che sia Thompson che Ritchie fossero nella mensa dei Bell Labs a commentare i loro progetti ed è stato che Ritchie ha suggerito a Thomposon di riscrivere il suo programma Unics con C, la lingua che aveva scritto ... e il resto , è storia. 😉

    A proposito, in precedenza tutti i programmi venivano scritti con le istruzioni della macchina, il che li rendeva totalmente dipendenti dall'hardware, l'innovazione di C, oltre a rendere più facile scrivere programmi, era che il linguaggio era indipendente dall'hardware che implementava il compilatori, una filosofia che molti anni dopo avrebbe assunto Java, nel senso che i programmi non dipendevano dal sistema operativo, aggiungendo la famosa java virtual machine.

    1.    Chris ADR suddetto

      La cosa brutta delle leggende è che distorcono la storia, in più di un modo ... e possono farti pensare che qualcosa accade quando non lo è ... come il fatto della conversazione esistente tra Thompson e Ritchie (che ho omesso a volontà) poiché porta a errori storici e tecnici (C non era prima di UNIX) ...

      E per quanto riguarda la seconda ... un'altra leggenda che distorce la realtà, poiché prima di C c'erano B, A, pascal, Ada, algol-60, PL / 1 e alcuni altri che erano linguaggi di programmazione propriamente (molto diversi da Assembly ei loro dialetti dall'architettura che dipendono dall'hardware del processore) quindi C non ha "innovato" in questo senso, ha semplicemente adottato soluzioni che già esistevano in altri linguaggi e alla fine è diventato popolare più velocemente e meglio di questi ... L'unica parte La verità è che Java si è basato su questo concetto di portabilità per creare in seguito la sua macchina virtuale, ma non solo si è affidato a C per questo, ma ha seguito altri modelli, altrimenti non avremmo il paradigma di programmazione orientato agli oggetti in java ...

      Ho sentito che avrei dovuto chiarire la situazione perché chiunque fosse meno esperto poteva prenderlo per vero e poi credere che fosse successo così ... saluti 🙂

  9.   Ignazio Esquivel suddetto

    Come sempre l'articolo è molto interessante, grazie per il contributo.