Od kod prihaja UNIX?

Lep pozdrav vsem 🙂 v teh tednih sem bil zelo zabaven ob branju nekaterih knjig o programiranju, resnica je, da je najboljši način, kako se naučiti programirati, vedno knjiga, kateri koli članek, vadnica, vodič, ki ga lahko najdete (vključno z mojim), je zgolj primerjalna merila, če jih primerjate s pravo knjigo na to temo. Zdaj moramo opredeliti tudi, kaj je "prava" knjiga, saj navadno niso vse knjige dobre in mnoge od njih lahko celo stanejo več, kot so v resnici vredne, in zapravijo čas.

V teh letih se je seznam knjig, ki sem jih prebrala, in seznam knjig, ki jih lahko priporočam, precej razhajal, toda nedvomno med nekaterimi najljubšimi, ki jih imamo (brez določenega vrstnega reda):

  • CEH certificiran etični heker, Matt Walker.
  • Začetek Pythona: od začetnika do profesionalca Magnus Lie Hetland.
  • Hacking: umetnost izkoriščanja Jona Ericksona.
  • Uvod v Arduino Massimo Banzi.
  • Učenje bash školjke Cameron Newbam in Bill Rosenblatt.
  • Učenje urednikov vi in ​​vim Arnolda Robbinsa, Elberta Hannah in Linde Lamb.
  • Jedro Linuxa na kratko, Greg Kroah-Hartman (tudi razvijalec Gentoo).
  • Sodobni C Jens Gustedt
  • Priročnik Shellcoderja Chrisa Anleyja, Johna Heasmana, Felixa «FX» Linderja in Gerarda Richarteja.
  • Programski jezik C avtorja Brian W. Kernighan in Dennis M. Ritchie (ustvarjalci C)
  • Odpravljanje napak z GDB Richard Stallman, Roland Pesch, Stan Shebs, et al.
  • Hacking Linux Exposed: Varnostne skrivnosti in rešitve Linuxa iz velike skupine raziskovalcev ISECOM-a, med katerimi so Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (drugi nekdanji razvijalec Gentoo-ja), 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 in sod.
  • Operacijski sistemi: pristop, zasnovan na konceptu, Dhananjay M. Dhamdhere
  • Pro Git Scotta Chacona in Bena Strauba
  • Strokovno programiranje C: Globoke skrivnosti Peter Van Der Linden.

Lahko bi pohvalil vsako od teh knjig, za danes pa bomo vzeli nekaj odlomkov iz zadnje na seznamu, saj so me mnoge od teh anektod očarale in mi pomagale bolje razumeti nekatere zapletene skrivnosti C in programiranja na splošno. 🙂

Unix in C

Ko govorimo o UNIX-u, se zgodovina prepleta z nastankom tega sistema in razvojem jezika, ki je do danes eden najpogosteje uporabljenih pri razvoju njega in njegovih izpeljank (vključno z Linuxom). In nenavadno je, da sta se ta dva rodila iz "napake".

Multrike Šlo je za mega projekt, ki je združil Bell Laboratories, General Electric in sam MIT, da bi ustvaril operacijski sistem, dejal je, da je sistem predstavljal veliko napak in med najpomembnejšimi okvarami delovanja, zaradi katerih je bil sistem praktično neuporaben. Govorimo o letu 1969, zato takratna strojna oprema ni mogla podpirati količine programske opreme, ki je bila potrebna za zagon samega sistema.

Šele leta 1970 je nekaj Bellovih inženirjev začelo delati preprost, hiter in lahek operacijski sistem za PDP-7. Celoten sistem je bil zapisan v Monter in je bil poklican UNIX kot parodija na Multrike saj je hotel narediti le nekaj stvari, vendar jih je opravil dobro, namesto izjemnega zapravljenega dela, ki ga je pomenilo drugo. Zdaj lahko razumete, zakaj Epoha začne 1. januarja, 1970. 🙂 Zame precej radovedno dejstvo. Takrat še ni bilo govora o samem C, ampak o a Novo B saj so Ritchiejeve ideje prišle iz že uporabljenega jezika B tistega časa.

Zgodnji C

Z leti (1972–3) se je izraz C začel uporabljati, ko se je začel oblikovati novi jezik, in približno v tem času se je rodilo še eno nenavadno dejstvo, mnogi programerji in programerji v šali pravijo:

Programerji vedo, da začnete šteti od 0 namesto od 1.

No, to ni povsem res 🙂 resnični razlog, da se to še danes tako šteje, je ta, da je bilo za pisce prevajalnikov ob njegovem ustvarjanju lažje izračunati matriko z nadomestila, ti označujejo razdaljo od izvorne točke do želenega cilja, zato:

array[8]=2;

Pove nam, da element array je definiran kot 2, ker je v matriko dodanih 8 enot, da se doseže pomnilniški prostor, kjer bo shranjen element 2. Pred C so številni jeziki začeli šteti od 1, zahvaljujoč C, zdaj se skoraj vsi začnejo z 0 🙂 torej niso krivi programerji, temveč pisci prevajalnikov, da je temu tako.

Bournova školjka

To je tema, ki čeprav ni neposredno povezana s C, lahko pomaga več kot enemu, da razume, zakaj je programiranje Shell tako nenavadno, in je vsekakor radovedno vedeti. Steve Bourne je okoli tiste sezone napisal prevajalnik za Algol-68, to je jezik, v katerem so tipke ( {} ) se nadomestijo z besedami, zato bi ga lahko v C opredelili takole:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

To je le nekaj primerov tega, kar Algol razume, če pa ga danes uporabimo za programiranje lupine, boste razumeli, zakaj v lupini vaši programi zahtevajo fi za vsakega if 🙂 vsekakor zanimivo.

Začnite brati

Ne morem vam povedati vseh podrobnosti knjige, še posebej, ker so mnoge od njih že programske teme, za katere je potrebno predhodno razumevanje, vendar sem mislil, da bi z vami delil nekaj nenavadnih anekdot, ki sem jih našel na tej poti. čas je, da se lotim nekaterih postavk, ki so bile na seznamu opravil, ker so me preprosto te zadnje knjige ujele in jih vsak dan uživam, predvsem pa jih skušam razumeti v celoti. Lep pozdrav in kmalu bom lahko delil z vami več tem, pozdrav.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.

  1.   John je dejal

    Vaš članek mi je bil zelo zanimiv. Najlepša hvala.

  2.   HO2Gi je dejal

    Zelo zanimivo kot vedno.

  3.   Jose Rafael je dejal

    Zelo zanimiva pojasnila so dobra.

  4.   Alex je dejal

    Odlično

  5.   danielga je dejal

    Zanimivo !!! Najlepša hvala.

  6.   2. je dejal

    multrics? ne bo multics (https://en.wikipedia.org/wiki/Multics)

    jeziki z indeksi od 1 so izum satana ...

    1.    ChrisADR je dejal

      Zanimiva opomba 🙂 Predvidevam, da sta bila na neki točki zgodovine uporabljena oba izraza:

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

      in očitno ista knjiga, ki je bila napisana sredi 90-ih.

      Hvala za pojasnilo 🙂 pozdrav

      1.    2. je dejal

        wa, kaj čudnega, zaradi česar ste dvomili, pogledal sem v "kupljeno" kopijo programa Expert C Programming: Globoke skrivnosti in množična sporočila prihajajo, prvič sem slišal, da gre za večpredstavnost. Kako radovedno, malo spominja na zajca trix

        1.    ChrisADR je dejal

          hahaha vsekakor radoveden, preveril sem svojo angleško kopijo globokih skrivnosti, tam piše tudi Multrics (ker ste me tudi vi dvomili) ... mogoče je bil izraz časa

          pozdrav

  7.   ED774 je dejal

    Velik prispevek

  8.   anonimni je dejal

    Zanimivo, čeprav zagotovo, da je Multrics posledica napačnega tiska, saj je bilo prvotno ime tega operacijskega sistema Multics, Unix pa se je prvotno imenoval Unics in se natančno skliceval na ta odličen operacijski sistem, sčasoma pa se je s fonetiko Unics preoblikoval v Unix, zdaj , omeniti ste morali le ime, kdo velja za avtorja Unixa; Ken Thompson, legenda pravi, da sta bila oba, Thompson in Ritchie, v kavarni laboratorijev Bell komentirala svoje projekte in Ritchie je Thomposonu predlagal, naj svoj program Unics napiše v jeziku C, ki ga je napisal. in ostalo je zgodovina. 😉

    Mimogrede, prej so bili vsi programi napisani z navodili stroja, zaradi česar so bili popolnoma odvisni od strojne opreme, inovacija C, poleg lažjega pisanja programov, pa je bila tudi, da je jezik neodvisen od strojne opreme, ki izvaja prevajalniki, filozofija, ki bo mnogo let kasneje prevzela Javo v smislu, da programi niso bili odvisni od operacijskega sistema, dodali pa so tudi znameniti java navidezni stroj.

    1.    ChrisADR je dejal

      Slaba stvar pri legendah je, da izkrivljajo zgodovino, na več načinov ... in lahko vam dajo misliti, da se nekaj zgodi, ko ni ... kot dejstvo obstoječega pogovora med Thompsonom in Ritchiejem (ki sem ga izpustil po želji), saj vodi do zgodovinskih in tehničnih napak (C ni bil pred UNIX-om) ...

      Kar pa zadeva drugo ... še ena legenda, ki izkrivlja resničnost, saj so pred C obstajali B, A, pascal, Ada, algol-60, PL / 1 in nekaj drugih, ki so bili pravilno programski jeziki (zelo drugačni od skupščine in njeni dialekti po arhitekturi, ki so odvisni od strojne opreme procesorja), zato C v tem smislu ni "inoviral", preprosto je sprejel rešitve, ki so že obstajale v drugih jezikih in je na koncu postal hitrejši in boljši od teh ... Edini del Resnica je, da je Java temeljila na tem konceptu prenosljivosti, da bi kasneje ustvarila svoj navidezni stroj, vendar se pri tem ne samo zanašala na C, ampak je sledila tudi drugim modelom, sicer ne bi imeli cilja - usmerjena programska paradigma v javi ...

      Zdelo se mi je, da bi moral razjasniti situacijo, ker bi lahko kdorkoli slabše podkovan to vzel za resnico in potem verjel, da se je zgodilo tako ... pozdrav 🙂

  9.   Ignacij Esquivel je dejal

    Kot vedno je članek zelo zanimiv, hvala za prispevek.