Odkud pochází UNIX?

Zdravím všechny 🙂 tyto týdny mě docela bavilo číst některé knihy o programování, pravdou je, že nejlepší způsob, jak se naučit programovat, je vždy s knihou, jakýmkoli článkem, návodem, návodem, který lze najít (včetně mého), jsou pouhé měřítka při jejich porovnání se skutečnou knihou na toto téma. Nyní musíme definovat také to, co je „skutečná“ kniha, protože ne všechny knihy jsou obvykle dobré a mnoho z nich může dokonce stát víc, než je jejich skutečná hodnota, a ztrácet čas.

V průběhu těchto let se seznam knih, které jsem četl, a seznam knih, které mohu doporučit, dost lišil, ale bezpochyby mezi některými z mých oblíbených máme (v žádném konkrétním pořadí):

  • CEH Certified Ethical Hacker od Matt Walker.
  • Počáteční Python: Od nováčka po profesionála Magnuse Lie Hetlanda.
  • Hacking: umění vykořisťování Jon Erickson.
  • Začínáme s Arduinem od Massima Banziho.
  • Naučte se bash Shell od Camerona Newbama a Billa Rosenblatta.
  • Učení editorů vi a vim od Arnolda Robbinse, Elberta Hannaha a Lindy Lambové.
  • Linuxové jádro v kostce, Greg Kroah-Hartman (také vývojář Gentoo).
  • Moderní C od Jensa Gustedta
  • Příručka Shellcodera od Chrise Anleyho, Johna Heasmana, Felixe «FX» Lindera a Gerarda Richarteho.
  • Programovací jazyk C od Briana W. Kernighana a Dennisa M. Ritchieho (tvůrci jazyka C)
  • Ladění pomocí GDB Richard Stallman, Roland Pesch, Stan Shebs a kol.
  • Hacking Linux Exposed: Linux Security Secrets and Solutions od velké skupiny vědců ISECOM, včetně Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (další bývalý vývojář 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í přístup Dhananjay M. Dhamdhere
  • Pro Git od Scotta Chacona a Bena Strauba
  • Expert C Programming: Deep secrets by Peter Van Der Linden.

O každé z těchto knih bych mohl velmi mluvit, ale pro dnešek si vezmeme některé pasáže z poslední v seznamu, protože mnoho z těchto anektod mě uchvátilo a pomohlo mi lépe porozumět některým složitým tajemstvím jazyka C a programování obecně. 🙂

Unix a C.

Když mluvíme o UNIXu, historie se prolíná s původem tohoto systému a vývojem jazyka, který je dodnes jedním z nejpoužívanějších při jeho vývoji a jeho derivátech (včetně Linuxu). A kupodivu se tito dva rodí z „omylu“.

Multiknihy Byl to mega projekt, který spojil laboratoře Bell, General Electric a samotné MIT k vytvoření operačního systému.Tento systém představoval mnoho chyb a mezi jedním z nejdůležitějších výkonových selhání, díky nimž byl systém prakticky nepoužitelný. Mluvíme o roce 1969, takže tehdejší hardware nemohl podporovat množství softwaru, který byl potřebný ke spuštění samotného systému.

Teprve v roce 1970 začalo několik inženýrů společnosti Bell pracovat na jednoduchém, rychlém a lehkém operačním systému pro PDP-7. Celý systém byl napsán Assembler a byl zavolán UNIX jako parodie na Multiknihy protože chtěl udělat jen pár věcí, ale udělat je dobře místo obrovské promarněné práce, kterou ten druhý znamenal. Nyní můžete pochopit proč Epocha začíná 1. ledna 1970. 🙂 Pro mě dost zvláštní fakt. V té době se ještě nemluvilo o samotném C, ale o Nový B protože Ritchieho nápady pocházely z již používaného jazyka B té doby.

Brzy C.

V průběhu let (1972–3) se termín C začal používat, protože se začal formovat nový jazyk, a v této době se rodí další podivná skutečnost, mnoho programátorů a programátorských vtipů říká:

Programátoři vědí, že začnete počítat od 0 místo od 1.

To není úplně pravda 🙂 skutečným důvodem, proč se to takto považuje dodnes, je to, že při jeho vytváření bylo pro autory překladačů snazší vypočítat pole pomocí ofsety, tyto označují vzdálenost, která existuje od počátečního bodu k požadovanému cíli, proto:

array[8]=2;

Říká nám to ten prvek pole je definováno jako 2, protože do pole je přidáno 8 jednotek, aby se dosáhlo paměťového prostoru, kde bude uložen prvek 2. Před C začalo mnoho jazyků počítat od 1, díky C, nyní téměř všechny začínají 0 🙂 takže to není chyba programátorů, ale chyba spisovatelů kompilátoru, že tomu tak je.

Bourneova skořápka

Toto je téma, které, ačkoli přímo nesouvisí s C, může pomoci více než jednomu pochopit, proč je programování Shell tak zvláštní, a je jistě zvědavé vědět. Steve Bourne napsal v této sezóně kompilátor pro Algol-68, jedná se o jazyk, ve kterém klíče ( {} ) jsou nahrazeny slovy, takže bychom jej mohli definovat v C takto:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Toto je jen několik příkladů toho, čemu Algol rozumí, ale pokud to dnes použijeme na programování shellu, pochopíte, proč ve vašem programu vaše programy vyžadují fi pro každého if 🙂 určitě zajímavé.

Začněte číst

Nemohu vám sdělit všechny podrobnosti o knize, zejména proto, že mnoho z nich jsou již programovací témata, která vyžadují pochopení předchozího pozadí, ale myslela jsem si, že se s vámi podělím o některé zvědavé anekdoty, které jsem po cestě našel 🙂 Je čas pracovat na některých článcích, které byly na seznamu úkolů, protože mě tyto poslední knihy prostě chytily a já si je každý den užívám a hlavně se snažím jim plně porozumět. Zdravím a brzy s vámi budu moci sdílet další témata, pozdravy.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   John řekl

    Váš článek byl pro mě velmi zajímavý. Díky moc.

  2.   HO2Gi řekl

    Jako vždy velmi zajímavé.

  3.   Jose Rafael řekl

    Velmi zajímavá vysvětlení jsou dobrá.

  4.   Alex řekl

    Vynikající

  5.   danielga řekl

    Zajímavé !!! Díky moc.

  6.   druhý řekl

    vícenásobné? nebude to multics (https://en.wikipedia.org/wiki/Multics)

    jazyky s indexy od 1 jsou vynálezem satana ...

    1.    ChrisADR řekl

      Zajímavá poznámka 🙂 Předpokládám, že v určitém bodě historie byly použity oba termíny:

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

      a samozřejmě stejná kniha, která byla napsána v polovině 90. let.

      Díky za objasnění 🙂 pozdravy

      1.    druhý řekl

        wa, jaká divná věc, přiměl jsi mě pochybovat, podíval jsem se do „zakoupené“ kopie Programování Expert C: Hluboká tajemství a přicházejí multics, je to poprvé, co jsem multrices slyšel. Jak zvědavé to trochu připomíná králíka trix

        1.    ChrisADR řekl

          hahaha jistě zvědavý, zkontroloval jsem svou anglickou kopii hlubokých tajemství, tam se také říká Multrics (protože jste mě také přiměli pochybovat) ... možná to byl výraz doby 😛

          pozdravy

  7.   ED774 řekl

    Velký příspěvek

  8.   anonymní řekl

    Zajímavé, i když jistě, je Multrics způsobeno chybnou tiskovou zprávou, protože původní název tohoto operačního systému byl Multics a Unix se původně volal Unics, přesně podle toho skvělého operačního systému, nakonec a podle fonetiky, Unics se transformovaný do Unixu, nyní jste museli uvést pouze jméno toho, kdo je považován za autora Unixu; Ken Thompson, legenda říká, že Thompson i Ritchie byli v kavárně Bell Labs a komentovali své projekty, a to bylo tím, že Ritchie navrhl Thomposonovi, aby přepsal svůj program Unics pomocí C, jazyk, který napsal ... a zbytek , je historie. 😉

    Mimochodem, dříve byly všechny programy psány s instrukcemi stroje, díky nimž byly zcela závislé na hardwaru, inovace jazyka C, kromě snazšího psaní programů, spočívala v tom, že jazyk byl nezávislý na hardwaru implementujícím překladače, filozofie, která by o mnoho let později vzala Javu, v tom smyslu, že programy nebyly závislé na operačním systému, a přidal slavný virtuální stroj Java.

    1.    ChrisADR řekl

      Špatná věc na legendách je, že narušují historii více způsoby než jednou ... a mohou vás donutit si myslet, že se něco stane, když tomu tak není ... jako skutečnost ze stávající konverzace mezi Thompsonem a Ritchiem (kterou jsem podle libosti vynechal), protože vede k historickým a technickým chybám (C nebyl před UNIXem) ...

      A pokud jde o druhou ... další legendu, která narušuje realitu, protože před C existovaly B, A, pascal, Ada, algol-60, PL / 1 a několik dalších, které byly správně programovací jazyky (velmi odlišné od Assembly a jejich dialekty podle architektury, které jsou závislé na hardwaru procesoru), takže C v tomto smyslu „neinovoval“, jednoduše přijal řešení, která již existovala v jiných jazycích, a nakonec se stala populární rychleji a lépe než tyto ... Jediná část Pravdou je, že Java byla založena na tomto konceptu přenositelnosti, aby později vytvořila svůj virtuální stroj, ale nejen že se při tom spoléhala na C, ale následovala další modely, jinak bychom v javě neměli paradigma objektově orientovaného programování ...

      Cítil jsem, že bych měl objasnit situaci, protože kdokoli méně zběhlý by to mohl brát jako pravdu a pak věřit, že se to stalo takto ... pozdravy 🙂

  9.   Ignáce Esquivela řekl

    Jako vždy je článek velmi zajímavý, děkuji za příspěvek.