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 da naučim programirati uvijek uz knjigu, bilo koji članak, vodič, vodič koji mogu pronaći (uključujući i moj) samo su mjerila kada ih upoređujete sa stvarnom knjigom na tu temu. 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.

Kroz ove godine popis knjiga koje sam pročitao i spisak 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, autor Magnus Lie Hetland.
  • Hakiranje: umjetnost eksploatacije Jona Ericksona.
  • Početak rada s Arduinom, Massimo Banzi.
  • Učenje bash školjke, Cameron Newbam i Bill Rosenblatt.
  • Učenje vi i vim urednika: Arnold Robbins, Elbert Hannah i Linda Lamb.
  • Linux kernel u malom, Greg Kroah-Hartman (i Gentoo programer).
  • Modern C, Jens Gustedt
  • 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)
  • Otklanjanje grešaka s GDB-om, Richard Stallman, Roland Pesch, Stan Shebs, et al.
  • Hakiranje izloženog Linuxa: Sigurnosne tajne i rješenja Linux-a od velike grupe istraživača ISECOM-a, uključujući Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (još jedan bivši programer Gentooa), 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 i dr.
  • Operativni sistemi: Pristup zasnovan na konceptu, Dhananjay M. Dhamdhere
  • Pro Git, Scott Chacon i Ben Straub
  • Programiranje stručnjaka C: Duboke tajne Peter Van Der Linden.

Mogao bih pohvalno govoriti o svakoj od ovih knjiga, ali za danas ćemo uzeti neke odlomke iz posljednje na listi, jer su me mnoge od ovih anektoda osvojile i pomogle mi da bolje razumijem neke zamršene tajne C-a i programiranja uopće. 🙂

Unix i C

Kada govorimo o UNIX-u, povijest se isprepliće s porijeklom ovog sistema i razvojem jezika koji je do danas jedan od najčešće korištenih u razvoju istog i njegovih derivata (uključujući Linux). Zanimljivo je da su ovo dvoje rođeni iz "greške".

multrics Bio je to mega projekt koji je okupio Bell Laboratories, General Electric i sam MIT da bi stvorio operativni sistem, rekao je da sistem predstavlja brojne greške i jedan od najvažnijih propusta u performansama koji sistem čine praktično neupotrebljivim. Govorimo o 1969. godini, pa tadašnji hardver nije mogao podržati količinu softvera koja je bila potrebna za pokretanje samog sistema.

Tek 1970. godine nekoliko Bellovih inženjera počelo je raditi na jednostavnom, brzom i laganom operativnom sistemu za PDP-7. Čitav sistem je napisan Assembler i bio pozvan UNIX kao parodija na multrics budući da je želio učiniti samo nekoliko stvari, ali i to dobro, umjesto silnog uzaludnog posla koji je druga značila. Sada možete razumjeti zašto epoha počinje 1. januara, 1970. Me Prilično znatiželjna činjenica za mene. U to vrijeme još uvijek nije bilo govora o samom C, već o a Novo B budući da su Ritchiejeve ideje potekle iz već korištenog B jezika toga doba.

Rano 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 neobična činjenica, mnogi programeri i vicevi programera kažu:

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

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

array[8]=2;

Kaže nam da je taj 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 za to nisu krivi programeri, već pisci kompajlera.

Bornova školjka

Ovo je tema koja, iako nije izravno povezana sa C, može pomoći više njih da shvate zašto je Shell programiranje tako neobično, a to je sigurno znatiželjno znati. Steve Bourne je 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 našao usput 🙂 Nisam imao vrijeme je da radim na nekim stavkama koje su se našle na popisu obaveza, jer jednostavno su me ove posljednje knjige uhvatile i uživam u njima svaki dan, a posebno ih pokušavam razumjeti u potpunosti. Pozdrav i uskoro ću s vama moći podijeliti još tema, pozdrava.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  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 obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Huan rekao je

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

  2.   HO2Gi rekao je

    Vrlo zanimljivo kao i uvijek.

  3.   Jose Rafael rekao je

    Vrlo zanimljiva pojašnjenja su dobra.

  4.   Alex rekao je

    Excelente

  5.   danielga rekao je

    Zanimljivo !!! Hvala puno.

  6.   drugo rekao je

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

    jezici sa indeksima od 1 izum su sotone ...

    1.    ChrisADR rekao je

      Zanimljiva napomena 🙂 Pretpostavljam da su se u nekom trenutku istorije 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.    drugo rekao je

        wa, kakva neobična stvar, natjerali ste me da sumnjam, pogledao sam "kupljenu" kopiju programa Expert C Programming: Duboke tajne i stižu mnoštvo, to je prvi put da čujem tu multricetu. Koliko je znatiželjno, podsjeća pomalo na trix zeca

        1.    ChrisADR rekao je

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

          Saludos

  7.   ED774 rekao je

    Veliki doprinos

  8.   Anónimo rekao je

    Zanimljivo, iako sigurno, Multrics je nastao zbog pogrešnog otiska, jer je prvobitno ime tog operativnog sistema bilo Multics, a Unix, izvorno nazvan Unics, precizno se referirajući na taj sjajni operativni sistem, na kraju i fonetikom, Unics se transformiran u Unix, sada ste morali samo spomenuti ime onoga ko se smatra autorom Unixa; Ken Thompson, legenda kaže da su i Thompson i Ritchie bili u kafeteriji laboratorija Bell i komentirali svoje projekte, a Ritchie je predložio Thomposonu da svoj program Unics prepiše na jezik C koji je napisao ... i ostalo , je istorija. 😉

    Inače, ranije 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 koja će mnogo godina kasnije uzeti Javu, u smislu da programi nisu ovisili o operativnom sistemu, dodajući poznatu java virtualnu mašinu.

    1.    ChrisADR rekao je

      Loša stvar kod legendi je ta što iskrivljuju historiju, na više načina ... i mogu vas natjerati da pomislite da se nešto dogodi kad nije ... poput činjenice postojećeg razgovora između Thompsona i Ritchieja (koji sam izostavio po svojoj volji) jer vodi na povijesne i tehničke greške (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 pravilno programski jezici (vrlo različiti od skupštine i njegovi dijalekti po arhitekturi koji ovise o hardveru procesora) pa C nije "inovirao" u tom smislu, on je jednostavno usvojio rješenja koja su već postojala na 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 da bi kasnije stvorila svoju virtualnu mašinu, ali ne samo da se za to oslanjala na C, već je slijedila i druge modele, inače ne bismo imali objektno orijentiranu paradigmu 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.   Ignatius Esquivel rekao je

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