Odkiaľ pochádza UNIX?

Zdravím všetkých 🙂 tieto týždne ma celkom bavilo čítanie niektorých kníh o programovaní, pravda je taká, že najlepší spôsob, ako sa naučiť programovať, je vždy kniha, akýkoľvek článok, návod, príručka, ktorú človek môže nájsť (vrátane mojej), sú iba referenčné hodnoty pri ich porovnaní so skutočnou knihou o tejto téme. Teraz musíme definovať, čo je to aj „skutočná“ kniha, pretože nie všetky knihy sú zvyčajne dobré a mnohé z nich môžu stáť dokonca viac, ako sú skutočné hodnoty, a strácať čas.

V priebehu týchto rokov sa zoznam kníh, ktoré som prečítal, a zoznam kníh, ktoré môžem odporučiť, dosť rozchádzali, ale medzi moje obľúbené knihy nepochybne patria:

  • Etický hacker s certifikáciou CEH, Matt Walker.
  • Počiatočný Python: Od nováčika po profesionála, Magnus Lie Hetland.
  • Hacking: umenie vykorisťovania od Jona Ericksona.
  • Začíname s Arduinom od Massima Banziho.
  • Naučte sa bash Shell od Camerona Newbama a Billa Rosenblatta.
  • Učenie editorov vi a vim od Arnolda Robbinsa, Elberta Hannaha a Lindy Lambovej.
  • Linuxové jadro v skratke od Grega Kroah-Hartmana (tiež vývojár Gentoo).
  • Moderné C od Jensa Gustedta
  • Príručka spoločnosti Shellcoder, Chris Anley, John Heasman, Felix «FX» Linder & Gerardo Richarte.
  • Programovací jazyk C, Brian W. Kernighan a Dennis M. Ritchie (tvorcovia jazyka C)
  • Ladenie pomocou GDB Richard Stallman, Roland Pesch, Stan Shebs a kol.
  • Hacking Linux Exposed: Linux Security Secrets and Solutions od veľkej skupiny výskumníkov ISECOM, vrátane Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (ďalší bývalý vývojár 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 a kol.
  • Operačné systémy: Koncepčný prístup, autor: Dhananjay M. Dhamdhere
  • Pro Git od Scotta Chacona a Bena Strauba
  • Programovanie Expert C: Hlboké tajomstvá Peter Van Der Linden.

O každej z týchto kníh by som mohol hovoriť vysoko, ale na dnes si vezmeme niektoré pasáže z poslednej v zozname, pretože veľa z týchto anektód ma zaujalo a pomohlo mi lepšie pochopiť niektoré zložité tajomstvá jazyka C a programovania všeobecne. 🙂

Unix a C.

Keď hovoríme o systéme UNIX, história sa prelína s pôvodom tohto systému a vývojom jazyka, ktorý je dodnes jedným z najpoužívanejších pri vývoji systému a jeho derivátov (vrátane Linuxu). A je kuriózne, že títo dvaja sa rodia z „omylu“.

Multics Bol to megaprojekt, ktorý spojil laboratóriá Bell, General Electric a samotné MIT, aby vytvorili operačný systém. Tento systém predstavoval veľa chýb a medzi jedným z najdôležitejších výpadkov výkonu, vďaka ktorým bol systém prakticky nepoužiteľný. Hovoríme o roku 1969, takže vtedajší hardvér nemohol uniesť množstvo softvéru, ktorý bol potrebný na samotné spustenie systému.

Až v roku 1970 začalo pár inžinierov spoločnosti Bell pracovať na jednoduchom, rýchlom a ľahkom operačnom systéme pre PDP-7. Celý systém bol napísaný v Assembler a bol zavolaný UNIX ako paródia na Multics pretože chcel urobiť iba pár vecí, ale urobiť ich dobre namiesto ohromne premárnenej práce, ktorú znamenal druhý. Teraz môžete pochopiť prečo Epocha začína 1. januára, 1970. 🙂 Pre mňa dosť kuriózny fakt. V tom čase sa ešte nehovorilo o samotnom C, ale o Nový B keďže Ritchieho nápady vychádzali z už používaného vtedajšieho jazyka B.

Začiatkom C.

V priebehu rokov (1972 - 3) sa termín C začal používať, pretože sa začal formovať nový jazyk, a v tomto období sa rodí ďalší kuriózny fakt, mnohí programátori a programátorské vtipy hovoria:

Programátori vedia, že začnete počítať od 0 namiesto od 1.

To nie je úplne pravda 🙂 skutočným dôvodom, prečo sa to takto považuje dodnes, je to, že pri jeho tvorbe bolo pre autorov kompilátorov jednoduchšie vypočítať pole pomocou offsety, tieto označujú vzdialenosť, ktorá existuje od východiskového bodu k požadovanému cieľu, preto:

array[8]=2;

Hovorí nám to ten prvok poľa je definované ako 2, pretože do poľa je pridaných 8 jednotiek, aby sa dosiahol pamäťový priestor, kde bude uložený prvok 2. Pred C začalo veľa jazykov počítať od 1, vďaka C teraz takmer všetky začínajú nulou 🙂 takže to nie je chyba programátorov, ale autorov kompilátorov.

Bourneova škrupina

Toto je téma, ktorá síce priamo nesúvisí s jazykom C, ale môže pomôcť nejednému človeku pochopiť, prečo je programovanie spoločnosti Shell také zvláštne, a je určite zaujímavé ju vedieť. Steve Bourne okolo tejto sezóny napísal kompilátor pre Algol-68, jedná sa o jazyk, v ktorom sa klávesové skratky ( {} ) sú nahradené slovami, takže by sme ich v C mohli definovať takto:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Je to len niekoľko príkladov toho, čomu Algol rozumie, ale ak to dnes použijeme na programovanie shellu, pochopíte, prečo vaše programy v prostredí shell vyžadujú fi pre každého if 🙂 určite zaujímavé.

Začnite čítať

Nemôžem vám povedať všetky podrobnosti o knihe, najmä preto, že mnohé z nich sú už programátorskými témami, ktoré si vyžadujú porozumenie, ale myslím si, že sa s vami podelím o niektoré zvedavé anekdoty, ktoré som na tejto ceste našiel 🙂 Ja nemali čas pracovať na niektorých z položiek, ktoré boli na zozname úloh, pretože týchto niekoľko posledných kníh ma jednoducho chytilo a teším sa z nich každý deň a predovšetkým sa snažím porozumieť im naplno. Zdravím a čoskoro sa s vami budem môcť podeliť o ďalšie témy, pozdravy.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   John dijo

    Váš článok bol pre mňa veľmi zaujímavý. Mnohokrat dakujem.

  2.   HO2Gi dijo

    Ako vždy veľmi zaujímavé.

  3.   Jose Rafael dijo

    Veľmi zaujímavé sú objasnenia.

  4.   alex dijo

    Vynikajúca

  5.   danielga dijo

    Zaujimave !!! Mnohokrat dakujem.

  6.   druhý dijo

    multics? nebude to multics (https://en.wikipedia.org/wiki/Multics)

    jazyky s indexmi od 1 sú vynálezom satana ...

    1.    ChrisADR dijo

      Zaujímavá poznámka 🙂 Predpokladám, že v určitom okamihu histórie boli použité oba pojmy:

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

      a zjavne rovnaká kniha, ktorá bola napísaná v polovici 90. rokov.

      Ďakujem za objasnenie 🙂 pozdravujem

      1.    druhý dijo

        wa, aká čudná vec, spôsobil si, že som pochyboval, pozrel som sa do „zakúpenej“ kópie programu Expert C Programming: Deep secrets and there are multics coming, it is the first time I remember that multrics. Aké zvláštne, trochu to pripomína králika trix

        1.    ChrisADR dijo

          hahaha určite zvedavý, skontroloval som svoju anglickú kópiu hlbokých tajomstiev, tam je tiež napísané Multrics (pretože ste ma tiež prinútili pochybovať) ... možno to bol výraz doby 😛

          pozdravy

  7.   ED774 dijo

    Veľký príspevok

  8.   Anonymný dijo

    Zaujímavé, aj keď určite, je Multrics spôsobené chybnou tlačou, pretože pôvodný názov tohto operačného systému bol Multics a Unix, pôvodne nazývaný Unics, presne odkazujúci na tento skvelý operačný systém, nakoniec a podľa fonetiky sa Unics transformoval na Unix, teraz , stačilo spomenúť meno toho, kto sa považuje za autora Unixu; Ken Thompson, legenda hovorí, že obaja, Thompson i Ritchie, boli v kaviarni laboratórií Bell a komentovali ich projekty. Ritchie navrhol Thomposonovi, aby prepísal svoj program Unics na jazyk C, ktorý napísal. ... a zvyšok je história. 😉

    Mimochodom, predtým boli všetky programy písané s pokynmi stroja, vďaka čomu boli úplne závislé od hardvéru. Inovácia jazyka C okrem toho, že uľahčila písanie programov, spočívala v tom, že jazyk bol nezávislý od hardvéru implementujúceho prekladačov, filozofia, ktorú si o mnoho rokov neskôr vyžiadala jazyk Java v tom zmysle, že programy neboli závislé od operačného systému a pridal k nim slávny virtuálny stroj Java.

    1.    ChrisADR dijo

      Zlé na legendách je, že prekrúcajú históriu viacerými spôsobmi ... a môžu vás prinútiť myslieť si, že sa niečo stane, keď to tak nie je ... ako skutočnosť z existujúceho rozhovoru medzi Thompsonom a Ritchiem (ktorý som vynechal) podľa ľubovôle), pretože vedie k historickým a technickým chybám (C nebol pred UNIXom) ...

      A pokiaľ ide o druhú ... ďalšiu legendu, ktorá deformuje realitu, pretože pred C boli B, A, pascal, Ada, algol-60, PL / 1 a niekoľko ďalších, ktoré správne programovali jazyky (veľmi odlišné od Assembly a jeho dialekty podľa architektúry, ktoré závisia od hardvéru procesora), takže C v tomto zmysle „neinovoval“, jednoducho prijal riešenia, ktoré už existovali v iných jazykoch, a nakoniec sa stali populárnymi rýchlejšie a lepšie ako tieto ... Jediná časť Pravdou je, že Java bola založená na tomto koncepte prenosnosti, aby mohla neskôr vytvoriť svoj virtuálny stroj, ale nielen že sa pri tom spoliehala na C, ale riadila sa aj inými modelmi, inak by sme nemali objekt - paradigma orientovaného programovania v Jave ...

      Cítil som, že by som mal objasniť situáciu, pretože ktokoľvek menej zbehlý by to mohol brať ako pravdu a potom veriť, že sa to stalo takto ... pozdravujem 🙂

  9.   Ignác Esquivel dijo

    Ako vždy, článok je veľmi zaujímavý, ďakujem za príspevok.