Varifrån kommer UNIX?

Hälsningar till alla 🙂 dessa veckor har jag varit ganska underhållen att läsa några böcker om programmering, sanningen är att det bästa sättet att lära sig att programmera alltid är med en bok, vilken artikel, handledning, guide som man kan hitta (inklusive min) är bara riktmärken när man jämför dem med en riktig bok om ämnet. Nu måste vi också definiera vad en "riktig" bok är, eftersom inte alla böcker vanligtvis är bra, och många av dem kan till och med kosta mer än de verkligen är värda och slösa tid.

Under dessa år har listan över böcker som jag har läst och listan över böcker som jag kan rekommendera avvikit ganska mycket, men utan tvekan bland några av mina favoriter vi har (i ingen specifik ordning):

  • CEH Certified Ethical Hacker av Matt Walker.
  • Början av Python: Från nybörjare till professionell av Magnus Lie Hetland.
  • Hacking: utnyttjandekonsten av Jon Erickson.
  • Komma igång med Arduino av Massimo Banzi.
  • Att lära sig bash-skalet av Cameron Newbam & Bill Rosenblatt.
  • Lärande vi- och vim-redaktörerna av Arnold Robbins, Elbert Hannah & Linda Lamb.
  • Linux Kernel in a Nutshell av Greg Kroah-Hartman (en Gentoo-utvecklare också).
  • Modern C av Jens Gustedt
  • Shellcoder's Handbook av Chris Anley, John Heasman, Felix «FX» Linder & Gerardo Richarte.
  • C-programmeringsspråket av Brian W. Kernighan & Dennis M. Ritchie (skapare av C)
  • Felsökning med GDB av Richard Stallman, Roland Pesch, Stan Shebs, et al.
  • Hacking Linux Exposed: Linux Security Secrets and Solutions från en stor grupp ISECOM-forskare, inklusive Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (en annan före detta Gentoo-utvecklare), 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 & et al.
  • Operativsystem: En konceptbaserad strategi av Dhananjay M. Dhamdhere
  • Pro Git av Scott Chacon och Ben Straub
  • Expert C-programmering: Djupa hemligheter av Peter Van Der Linden.

Jag kunde tala högt om var och en av dessa böcker, men idag tar vi några av passagen från den sista på listan, eftersom många av dessa anektoder har fängslat mig och hjälpt mig att bättre förstå några av de invecklade hemligheterna i C och programmering i allmänhet. 🙂

Unix och C

När vi pratar om UNIX är sammanflätad historia med ursprunget till detta system och utvecklingen av språket som fram till i dag är en av de mest använda i utvecklingen av det och dess derivat (inklusive Linux). Och märkligt nog är dessa två födda av ett "misstag".

Multiriker Det var ett megaprojekt som samlade Bell-laboratorier, General Electric och MIT för att skapa ett operativsystem. Detta system presenterade många fel och bland ett av de viktigaste prestandafel som gjorde systemet praktiskt taget oanvändbart. Vi pratar om år 1969, så den tidens hårdvara kunde inte stödja den mängd programvara som behövdes för att köra själva systemet.

Det var först 1970 som ett par Bell-ingenjörer började arbeta med ett enkelt, snabbt och lätt operativsystem för PDP-7. Hela systemet hade skrivits in Assemblerare och hade kallats UNIX som en parodi på Multiriker eftersom han bara ville göra få saker, men att göra det bra istället för det enorma bortkastade arbetet som det andra innebar. Nu kan du förstå varför Epok börjar den 1 januari 1970. 🙂 Ett ganska nyfiken faktum för mig. Vid den tiden var det fortfarande inget tal om ett C i sig, utan om ett Ny B eftersom Ritchies idéer kom från det redan använda B-språket på den tiden.

Tidigt C

Under åren (1972-3) började termen C användas sedan det nya språket började ta form, och omkring denna tid föds ett annat märkligt faktum, många programmerare och skämtare säger:

Programmerare vet att du börjar räkna från 0 istället för 1.

Tja, det här är inte helt sant 🙂 den verkliga anledningen till att detta betraktas så här till i dag är att det vid sammanställningen var enklare att beräkna en matris med kompilatorförfattare förskjutningar, dessa indikerar avståndet som finns från en utgångspunkt till det önskade målet, det är därför:

array[8]=2;

Det säger oss att elementet av array definieras som 2, eftersom 8 enheter läggs till arrayen för att nå minnesutrymmet där element 2. kommer att lagras. Innan C började många språk räkna från 1, tack vare C, nu börjar nästan alla med 0 🙂 så det är inte programmerarens fel, men kompilatorns författares fel att det är så.

Bourne-skalet

Detta är ett ämne som, även om det inte är direkt relaterat till C, kan hjälpa mer än en att förstå varför Shell-programmering är så märklig, och det är verkligen nyfiken att veta. Steve Bourne skrev en kompilator för Algol-68 den säsongen, det här är ett språk där tangenterna ( {} ) ersätts av ord, så vi kan definiera det på följande sätt i C:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Det här är bara några exempel på vad Algol förstår, men om vi tillämpar det på skalprogrammering idag kommer du att förstå varför i skal dina program kräver en fi för varje if 🙂 verkligen intressant.

Börja läsa

Jag kan inte berätta alla detaljer i boken, särskilt eftersom många av dessa redan är programmeringsämnen som kräver en tidigare bakgrund för att förstås, men jag trodde att jag skulle dela med dig av några av de nyfikna anekdoterna som jag hittade på vägen 🙂 Jag har inte haft Dags att arbeta med några av de saker som har funnits på att göra-listan eftersom de här sista böckerna helt enkelt har fångat mig och jag njuter av dem varje dag och framför allt försöker förstå dem till fullo. Hälsningar och snart kan jag dela med dig av fler ämnen, hälsningar.


13 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   John sade

    Din artikel har varit väldigt intressant för mig. Tack så mycket.

  2.   HO2Gi sade

    Mycket intressant som alltid.

  3.   Jose Rafael sade

    Mycket intressant förtydligandena är bra.

  4.   Alex sade

    Utmärkt

  5.   danielga sade

    Intressant !!! Tack så mycket.

  6.   Segundo sade

    multics? det kommer inte att vara multics (https://en.wikipedia.org/wiki/Multics)

    språk med index från 1 är en uppfinning av satan ...

    1.    ChrisADR sade

      Intressant anmärkning 🙂 Jag antar att någon gång i historien har båda termerna använts:

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

      och uppenbarligen samma bok som är skriven i mitten av 90-talet.

      Tack för förtydligandet 🙂 hälsningar

      1.    Segundo sade

        wa, vilken konstig sak, du har fått mig att tvivla, jag har tittat i en "köpt" kopia av Expert C-programmering: Djupa hemligheter och det kommer multics, det är första gången jag hör att multrics. Hur nyfiken, det påminner lite om trixkaninen

        1.    ChrisADR sade

          hahaha verkligen nyfiken, jag kollade min engelska kopia av djupa hemligheter, där står det också Multrics (för att du också hade fått mig att tvivla) ... kanske var det ett uttryck för tiden 😛

          hälsningar

  7.   ED774 sade

    Bra bidrag

  8.   anonym sade

    Intressant, men säkert, att Multrics beror på ett felavtryck, eftersom det ursprungliga namnet på det operativsystemet var Multics, och Unix kallades ursprungligen Unics, med hänvisning till det stora operativsystemet, så småningom och av fonetik, Unics se förvandlas till Unix, nu var du bara tvungen att nämna namnet på vem som anses vara författaren till Unix; Ken Thompson, legenden säger att både Thompson och Ritchie var i Bell Labs cafeteria och kommenterade sina projekt och det var att Ritchie föreslog Thomposon att han skulle skriva om sitt Unics med C-program, språket han hade skrivit ... och resten , är historia. 😉

    Förresten, tidigare var alla program skrivna med maskinens instruktioner, vilket gjorde dem helt beroende av hårdvaran, innovationen hos C, förutom att göra det lättare att skriva program, var att språket var oberoende av hårdvaran som implementerade kompilatorer, en filosofi som många år senare skulle ta Java, i den meningen att programmen inte var beroende av operativsystemet, och lade till den berömda Java-maskinen.

    1.    ChrisADR sade

      Det dåliga med legender är att de snedvrider historien på fler sätt än en ... och de kan få dig att tänka att något händer när det inte är ... som det faktum i det befintliga samtalet mellan Thompson och Ritchie (som jag utelämnade efter behag) eftersom det leder till historiska och tekniska fel (C var inte före UNIX) ...

      Och när det gäller den andra ... en annan legend som förvränger verkligheten, eftersom det före C fanns B, A, pascal, Ada, algol-60, PL / 1 och några fler som programmerade ordentligt (mycket annorlunda än församlingen och deras dialekter efter arkitektur som är beroende av processorns hårdvara) så att C inte "innoverade" i den meningen, han antog helt enkelt lösningar som redan fanns på andra språk och i slutändan blev det populärt snabbare och bättre än dessa ... Den enda delen Sanningen är att Java baserades på detta koncept för bärbarhet för att senare skapa sin virtuella maskin, men inte bara litade den på C för det, utan den följde andra modeller, annars skulle vi inte ha det objektorienterade programmeringsparadigmet i java ...

      Jag kände att jag borde klargöra situationen för att alla som är mindre kunniga kan ta det som sant och sedan tro att det hände så här ... hälsningar 🙂

  9.   Ignatius Esquivel sade

    Som alltid är artikeln väldigt intressant, tack för bidraget.