Odakle dolazi UNIX?

Pozdrav svima 🙂 ovih sam se tjedana prilično zabavljao čitajući neke knjige o programiranju, istina je da je najbolji način naučiti programirati uvijek uz knjigu, bilo koji članak, vodič, vodič koji možete pronaći (uključujući i moj) puki su mjerila kada ih uspoređujete sa stvarnom knjigom o toj temi. Sada moramo definirati što je i "prava" knjiga, jer nisu sve knjige obično dobre, a mnoge od njih mogu čak i koštati više nego što stvarno vrijede i izgubiti vrijeme.

Tijekom svih ovih godina popis knjiga koje sam pročitao i popis knjiga koje mogu preporučiti prilično su se razilazili, ali bez sumnje među nekim od mojih omiljenih koje imamo (bez određenog redoslijeda):

  • CEH certificirani etički haker, Matt Walker.
  • Početak Pythona: od početnika do profesionalca Magnus Lie Hetland.
  • Hakiranje: umjetnost iskorištavanja Jona Ericksona.
  • Početak rada s Arduinom, Massimo Banzi.
  • Učenje bash školjke, Cameron Newbam i Bill Rosenblatt.
  • Učenje vi i vim urednika Arnolda Robbinsa, Elberta Hannah i Linde Lamb.
  • Linux kernel u malom, Greg Kroah-Hartman (i Gentoo programer).
  • Moderni C Jensa Gustedta
  • Priručnik za Shellcoder Chrisa Anleyja, Johna Heasmana, Felixa «FX» Lindera i Gerarda Richartea.
  • Programski jezik C: Brian W. Kernighan i Dennis M. Ritchie (tvorci C-a)
  • Otklanjanje pogrešaka s GDB-om Richarda Stallmana, Rolanda Pescha, Stana Shebsa i dr.
  • Hakiranje izloženog Linuxa: Sigurnosne tajne i rješenja Linuxa od velike skupine istraživača ISECOM-a, uključujući Petea Herzoga, Margu Barceló, Ricka Tuckera, Andreau Barisaniju (još jedan bivši programer Gentoo), Thomasu Baderu, Simonu Bilesu, Colbyju Clarku, Raoulu Chiesi, Pablu Endresu , Richard Feist, Andrea Ghirardini, Julian "HammerJammer" Ho, Marco Ivaldi, Dru Lavigne, Stephane Lo Presti, Christopher Low, Ty Miller, Armand Puccetti & et al.
  • Operativni sustavi: Pristup zasnovan na konceptu, Dhananjay M. Dhamdhere
  • Pro Git Scotta Chacona i Bena Strauba
  • Programiranje stručnjaka C: Duboke tajne Petera Van Der Lindena.

Mogao bih pohvalno govoriti o svakoj od ovih knjiga, ali za danas ćemo uzeti neke odlomke iz posljednjeg na popisu, jer su me mnoge od ovih anektoda osvojile i pomogle mi da bolje razumijem neke zamršene tajne C i programiranje općenito 🙂

Unix i C

Kada govorimo o UNIX-u, povijest se isprepliće s podrijetlom ovog sustava i razvojem jezika koji je do danas jedan od najčešće korištenih u razvoju istog i njegovih derivata (uključujući Linux). I neobično, ovo dvoje rođeno je iz "pogreške".

Multricije Bio je to mega projekt koji je okupio Bell-ove laboratorije, General Electric i sam MIT kako bi stvorio operativni sustav.Taj je sustav predstavio brojne pogreške i jedan od najvažnijih propusta u izvedbi zbog kojih je sustav bio praktički neupotrebljiv. Govorimo o 1969. godini, pa tadašnji hardver nije mogao podržati količinu softvera koja je bila potrebna za pokretanje samog sustava.

Tek 1970. godine nekoliko Bellovih inženjera počelo je raditi na jednostavnom, brzom i laganom operativnom sustavu za PDP-7. Cijeli je sustav bio napisan u Asembler i bio pozvan UNIX kao parodija na Multricije budući da je želio učiniti samo nekoliko stvari, ali da ih radi dobro umjesto silnog uzaludnog posla koji je druga značila. Sada možete razumjeti zašto Epoha počinje 1. siječnja, 1970. 🙂 Prilično znatiželjna činjenica za mene. U to vrijeme još uvijek nije bilo govora o samom C, već o a Novi B budući da su Ritchiejeve ideje potekle iz već korištenog B jezika toga doba.

Rani C

Tijekom godina (1972-3.) Pojam C počeo se upotrebljavati kako se novi jezik počeo oblikovati, a otprilike u to vrijeme rodila se još jedna čudna činjenica, mnogi programeri i vicevi programera kažu:

Programeri znaju da počinjete brojati od 0 umjesto od 1.

Pa, to nije u potpunosti istina 🙂 pravi razlog zašto se to tako smatra do danas je taj što je za pisce kompajlera prilikom stvaranja bilo lakše izračunati niz pomoću offseta, oni ukazuju na udaljenost koja postoji od točke ishodišta do željenog cilja, zato:

array[8]=2;

Kaže nam da element polja definiran je kao 2, jer se u niz dodaje 8 jedinica da bi se došlo do memorijskog prostora u kojem će biti pohranjen element 2. Prije C, mnogi su jezici počeli računati od 1, zahvaljujući C, sada gotovo svi počinju s 0 🙂 tako da nisu krivi programeri, već pisci kompilatora što je to tako.

Školjka Bourne

Ovo je tema koja, iako nije izravno povezana s C, može pomoći više njih da shvate zašto je programiranje Shell tako neobično, a to je sigurno znatiželjno znati. Steve Bourne je oko te sezone napisao kompajler za Algol-68, ovo je jezik na kojem tipke ( {} ) zamjenjuju se riječima, pa bismo ga mogli definirati kako slijedi u C:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Ovo su samo neki primjeri onoga što Algol razumije, ali ako ga danas primijenimo na programiranje ljuske, shvatit ćete zašto u ljusci vaši programi zahtijevaju fi za svakog if 🙂 svakako zanimljivo.

Počnite čitati

Ne mogu vam reći sve detalje o knjizi, pogotovo jer su mnoge od njih već programske teme za koje je potrebno prethodno razumijevanje, ali mislio sam da ću s vama podijeliti neke znatiželjne anegdote koje sam pronašao usput 🙂 nisam imao vremena za rad na nekim stavkama koje su se našle na popisu obveza jer me ovih posljednjih nekoliko knjiga jednostavno uhvatilo i uživam u njima svaki dan, a prije svega pokušavajući ih razumjeti u potpunosti. Pozdrav i uskoro ću s vama moći podijeliti još tema, pozdrav.


13 komentara, ostavi svoj

Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Jovan dijo

    Vaš mi je članak bio vrlo zanimljiv. Hvala vam puno.

  2.   HO2Gi dijo

    Vrlo zanimljivo kao i uvijek.

  3.   Jose Rafael dijo

    Vrlo zanimljiva pojašnjenja su dobra.

  4.   Alex dijo

    Izvrstan

  5.   danielga dijo

    Zanimljivo !!! Hvala vam puno.

  6.   drugi dijo

    multrics? to neće biti multics (https://en.wikipedia.org/wiki/Multics)

    jezici s indeksima od 1 izum su sotone ...

    1.    ChrisADR dijo

      Zanimljiva napomena 🙂 Pretpostavljam da su se u nekom trenutku povijesti koristila oba izraza:

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

      i očito ista knjiga koja je napisana sredinom 90-ih.

      Hvala na pojašnjenju 🙂 pozdrav

      1.    drugi dijo

        wa, kakva neobična stvar, natjerali ste me da sumnjam, pogledao sam "kupljenu" kopiju programa Expert C Programming: Duboke tajne i dolaze mnoštva, prvi put čujem za tu multricu. Koliko je znatiželjno, podsjeća malo na zeca trix

        1.    ChrisADR dijo

          hahaha sigurno znatiželjan, provjerio sam svoju englesku kopiju dubokih tajni, tamo piše i Multrics (jer ste i mene sumnjali) ... možda je to bio izraz vremena 😛

          pozdravi

  7.   ED774 dijo

    Veliki doprinos

  8.   anoniman dijo

    Zanimljivo, iako sigurno, Multrics je nastao zbog pogrešnog otiska, jer je izvorno ime tog operativnog sustava bilo Multics, a Unix, izvorno nazvan Unics, precizno se referirajući na taj sjajni operativni sustav, vremenom i fonetikom, Unics se transformirao u Unix , morali ste spomenuti samo ime osobe koja sebe smatra autorom Unixa; Ken Thompson, legenda kaže da su i Thompson i Ritchie bili u kafeteriji u Bell Labsu komentirajući njihove projekte, a Ritchie je predložio Thomposonu da prepiše svoj Unics s C programom, jezikom koji je napisao ... i ostalo, to je povijest. 😉

    Inače, prije su svi programi bili napisani s uputama stroja, što ih je činilo potpuno ovisnima o hardveru, inovacija C-a, osim što je olakšavala pisanje programa, bila je i to što je jezik bio neovisan o hardveru koji implementira kompajleri, filozofija koju će mnogo godina kasnije prihvatiti Java, u smislu da programi nisu ovisili o operativnom sustavu, dodajući poznati Java virtualni stroj.

    1.    ChrisADR dijo

      Loša stvar kod legendi je što iskrivljuju povijest, na više načina ... i mogu vas natjerati da pomislite da se nešto događa kad nije ... poput činjenice postojećeg razgovora između Thompsona i Ritchieja (koji sam izostavio po volji) jer dovodi do povijesnih i tehničkih pogrešaka (C nije bio prije UNIX-a) ...

      A što se tiče druge ... još jedne legende koja iskrivljuje stvarnost, budući da su prije C bili B, A, pascal, Ada, algol-60, PL / 1 i još nekoliko koji su bili ispravno programski jezici (vrlo različiti od skupštine i njihovi dijalekti po arhitekturi koji ovise o hardveru procesora) pa C u tom smislu nije "inovirao", on je jednostavno usvojio rješenja koja su već postojala u drugim jezicima i na kraju je postao brži i bolji od ovih ... Jedini dio Istina je da se Java temeljila na ovom konceptu prenosivosti kako bi kasnije stvorila svoj virtualni stroj, ali ne samo da se za to oslanjala na C, već je slijedila i druge modele, inače ne bismo imali cilj- paradigma orijentiranog programiranja u javi ...

      Smatrao sam da bih trebao razjasniti situaciju jer bi svi slabije upućeni to mogli shvatiti kao istinu, a zatim povjerovati da se to dogodilo ovako ... pozdrav 🙂

  9.   Ignacije Esquivel dijo

    Kao i uvijek, članak je vrlo zanimljiv, hvala na doprinosu.