Hvor kommer UNIX fra?

Hilsen alle 🙂 i disse uger har jeg været ganske underholdt med at læse nogle bøger om programmering, sandheden er, at den bedste måde at lære at programmere altid er med en bog, enhver artikel, tutorial, guide, som man kan finde (inklusive min) er kun benchmarks, når man sammenligner dem med en rigtig bog om emnet. Nu skal vi også definere, hvad en "rigtig" bog er, da ikke alle bøger normalt er gode, og mange af dem kan endda koste mere, end de virkelig er værd og spilde tid.

Gennem disse år har listen over bøger, som jeg har læst, og listen over bøger, som jeg kan anbefale, afvejet en hel del, men uden tvivl blandt nogle af mine favoritter (vi har ingen specifik rækkefølge):

  • CEH Certified Ethical Hacker af Matt Walker.
  • Begyndende Python: Fra novice til professionel af Magnus Lie Hetland.
  • Hacking: kunsten at udnytte af Jon Erickson.
  • Kom godt i gang med Arduino af Massimo Banzi.
  • Lær den bash Shell af Cameron Newbam & Bill Rosenblatt.
  • Læring af vi og vim-redaktørerne af Arnold Robbins, Elbert Hannah & Linda Lamb.
  • Linux-kerne i en nøddeskal af Greg Kroah-Hartman (også en Gentoo-udvikler).
  • Modern C af Jens Gustedt
  • Shellcoder's Handbook af Chris Anley, John Heasman, Felix «FX» Linder & Gerardo Richarte.
  • C programmeringssproget af Brian W. Kernighan & Dennis M. Ritchie (skabere af C)
  • Fejlfinding med GDB af Richard Stallman, Roland Pesch, Stan Shebs, et al.
  • Hacking Linux Exposed: Linux Security Secrets and Solutions fra en stor gruppe af ISECOM forskere, herunder Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (en anden tidligere Gentoo-udvikler), 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.
  • Operativsystemer: En konceptbaseret tilgang af Dhananjay M. Dhamdhere
  • Pro Git af Scott Chacon og Ben Straub
  • Programmering af ekspert C: Dybe hemmeligheder af Peter Van Der Linden.

Jeg kunne tale højt om hver af disse bøger, men i dag vil vi tage nogle af passagerne fra den sidste på listen, da mange af disse anektoder har fængslet mig og hjulpet mig til bedre at forstå nogle af de indviklede hemmeligheder ved C og programmering generelt. 🙂

Unix og C

Når vi taler om UNIX, er historien flettet sammen med oprindelsen af ​​dette system og udviklingen af ​​det sprog, der den dag i dag er et af de mest anvendte i udviklingen af ​​det og dets derivater (inklusive Linux). Og mærkeligt nok er disse to født af en "fejl".

Multirics Det var et megaprojekt, der samlede Bell Laboratories, General Electric og MIT selv for at skabe et operativsystem, sagde systemet præsenterede mange fejl og blandt en af ​​de vigtigste ydeevnefejl, der gjorde systemet praktisk talt ubrugeligt. Vi taler om året 1969, så datidens hardware kunne ikke understøtte den mængde software, der var nødvendig for at køre selve systemet.

Det var først i 1970, at et par Bell-ingeniører begyndte at arbejde på et simpelt, hurtigt og let styresystem til PDP-7. Hele systemet var skrevet ind Assembler og var blevet kaldt UNIX som en parodi på Multirics da han kun ville gøre et par ting, men at gøre det godt i stedet for det enorme spildte arbejde, som det andet betød. Nu kan du forstå hvorfor Epoch begynder 1. januar 1970. Rather En ret nysgerrig kendsgerning for mig. På det tidspunkt var der stadig ikke tale om en C i sig selv, men om en Ny B siden Ritchies ideer kom fra det allerede anvendte B-sprog på den tid.

Tidlig C

I årenes løb (1972-3) begyndte udtrykket C at blive brugt, da det nye sprog begyndte at tage form, og omkring dette tidspunkt blev en anden nysgerrig kendsgerning født, mange programmører og programmervittigheder siger:

Programmører ved, at du begynder at tælle fra 0 i stedet for 1.

Nå, dette er ikke helt sandt - den virkelige grund til, at dette betragtes som den måde i dag, er, at det ved kompetenceskrivere var lettere for at beregne en matrix ved hjælp af forskydninger, disse angiver afstanden, der eksisterer fra et oprindelsespunkt til det ønskede mål, det er derfor:

array[8]=2;

Det fortæller os, at elementet af array er defineret som 2, fordi 8 enheder føjes til arrayet for at nå hukommelsesområdet, hvor element 2. Gemme.Inden C begyndte mange sprog at tælle fra 1 takket være C, nu begynder næsten alle med 0 🙂 så det er ikke programmørernes skyld, men kompilatorforfatterne, at dette er sådan.

Bourne-skallen

Dette er et emne, der, selvom det ikke er direkte relateret til C, kan hjælpe mere end en til at forstå, hvorfor Shell-programmering er så ejendommelig, og det er bestemt nysgerrig at vide. Steve Bourne skrev en kompilator til Algol-68 den sæson, dette er et sprog, hvor tasterne ( {} ) erstattes af ord, så vi kunne definere det som følger i C:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Dette er blot nogle eksempler på, hvad Algol forstår, men hvis vi anvender det til shell-programmering i dag, vil du forstå, hvorfor dine programmer i shell kræver en fi for hver if Bestemt interessant.

Begynd at læse

Jeg kan ikke fortælle dig alle detaljerne i bogen, især da mange af disse allerede er programmeringsemner, der kræver en forudgående baggrund for at blive forstået, men jeg troede, jeg ville dele med dig nogle af de nysgerrige anekdoter, som jeg fandt undervejs 🙂 Jeg har ikke haft tid til at arbejde på nogle af de ting, der har været på listen over to-do, fordi simpelthen disse sidste bøger har fanget mig, og jeg nyder dem hver dag og frem for alt forsøger at forstå dem fuldt ud. Hilsner og snart vil jeg være i stand til at dele med dig flere emner, hilsner.


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

13 kommentarer, lad dine

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort.

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   John sagde han

    Din artikel har været meget interessant for mig. Mange tak.

  2.   HO2Gi sagde han

    Meget interessant som altid.

  3.   Jose Rafael sagde han

    Meget interessant afklaringerne er gode.

  4.   Alex sagde han

    Fremragende

  5.   Danielga sagde han

    Interessant !!! Mange tak.

  6.   Segundo sagde han

    multrics? det bliver ikke multics (https://en.wikipedia.org/wiki/Multics)

    sprog med indekser fra 1 er en opfindelse af satan ...

    1.    ChrisADR sagde han

      Interessant note 🙂 Jeg antager, at begge udtryk på et eller andet tidspunkt i historien er blevet brugt:

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

      og åbenbart den samme bog, der er skrevet i midten af ​​90'erne.

      Tak for afklaring 🙂 hilsner

      1.    Segundo sagde han

        wa, hvilken underlig ting, du har fået mig til at tvivle, jeg har kigget i en "købt" kopi af Expert C-programmering: Dybe hemmeligheder, og der kommer multics, det er første gang jeg hører, at multrics. Hvor nysgerrig, det minder lidt om trix-kaninen

        1.    ChrisADR sagde han

          hahaha bestemt nysgerrig, jeg tjekkede min engelske kopi af dybe hemmeligheder, der står der også Multrics (fordi du også havde fået mig til at tvivle) ... måske var det et udtryk for tiden 😛

          hilsen

  7.   ED774 sagde han

    Fantastisk bidrag

  8.   Anonymous sagde han

    Interessant, selvom det sikkert er, at Multrics skyldes et forkert tryk, da det originale navn på det operativsystem var Multics, og Unix, oprindeligt kaldet Unics, med henvisning til det store operativsystem, til sidst og af fonetik, Unics se forvandlet til Unix, nu behøvede du kun at nævne navnet på, hvem der betragtes som forfatter til Unix; Ken Thompson, legenden siger, at begge, Thompson og Ritchie, var i Bell-laboratoriets cafeteria og kommenterede deres projekter, og det var, at Ritchie foreslog Thomposon, at han omskrev sit program Unics med C, det sprog, han havde skrevet ... og resten , er historie. 😉

    Forresten blev alle programmer tidligere skrevet med maskinens instruktioner, hvilket gjorde dem helt afhængige af hardwaren. Innovationen i C, bortset fra at gøre det nemmere at skrive programmer, var at sproget var uafhængigt af hardware, der implementerede compilers, en filosofi, som mange år senere ville tage Java i den forstand, at programmerne ikke var afhængige af operativsystemet, og tilføjede den berømte virtuelle Java-maskine.

    1.    ChrisADR sagde han

      Den dårlige ting ved legender er, at de fordrejer historien på flere måder end en ... og de kan få dig til at tro, at der sker noget, når det ikke er ... som det faktum, at den eksisterende samtale mellem Thompson og Ritchie (som jeg udeladte efter eget valg), da den fører til historiske og tekniske fejl (C var ikke før UNIX) ...

      Og hvad angår det andet ... en anden legende, der forvrænker virkeligheden, da der før C var B, A, pascal, Ada, algol-60, PL / 1 og et par flere, der korrekt programmerede sprog (meget forskelligt fra forsamlingen og dets dialekter efter arkitektur, der er afhængige af processorens hardware), så C ikke "fornyede" i denne forstand, han vedtog simpelthen løsninger, der allerede eksisterede på andre sprog, og i sidste ende blev det populært hurtigere og bedre end disse ... Den eneste del Sandheden er, at Java var baseret på dette koncept for bærbarhed for senere at oprette sin virtuelle maskine, men ikke kun stole på C for dette, men det fulgte andre modeller, ellers ville vi ikke have det objektorienterede programmeringsparadigme i java ...

      Jeg følte, at jeg skulle afklare situationen, fordi enhver, der var mindre bevandret, kunne tage det som sandt og så tro, at det skete sådan her ... hilsner 🙂

  9.   Ignatius Esquivel sagde han

    Som altid er artiklen meget interessant, tak for bidraget.