Hvor kommer UNIX fra?

Hilsen alle 🙂 disse ukene har jeg blitt ganske underholdt med å lese noen bøker om programmering, sannheten er at den beste måten å lære å programmere alltid er med en bok, hvilken som helst artikkel, veiledning, guide som man kan finne (inkludert min) er bare referanser når man sammenligner dem med en ekte bok om emnet. Nå må vi definere hva en "ekte" bok også er, siden ikke alle bøker vanligvis er gode, og mange av dem kan til og med koste mer enn de virkelig er verdt og kaste bort tid.

Gjennom disse årene har listen over bøker som jeg har lest og listen over bøker som jeg kan anbefale, avviket ganske mye, men uten tvil blant noen av favorittene vi har (i ingen spesifikk rekkefølge):

  • CEH Certified Ethical Hacker av Matt Walker.
  • Beginning Python: From Novice to Professional av Magnus Lie Hetland.
  • Hacking: kunsten å utnytte av Jon Erickson.
  • Komme i gang med Arduino av Massimo Banzi.
  • Lære bash Shell av Cameron Newbam & Bill Rosenblatt.
  • Læring av vi og vim redaktører av Arnold Robbins, Elbert Hannah & Linda Lamb.
  • Linux Kernel in a Nutshell av Greg Kroah-Hartman (også en Gentoo-utvikler).
  • Modern C av Jens Gustedt
  • The Shellcoder's Handbook av Chris Anley, John Heasman, Felix «FX» Linder & Gerardo Richarte.
  • C-programmeringsspråket av Brian W. Kernighan & Dennis M. Ritchie (skaperne av C)
  • Feilsøking med GDB av Richard Stallman, Roland Pesch, Stan Shebs, et al.
  • Hacking Linux Exposed: Linux Security Secrets and Solutions fra en stor gruppe ISECOM-forskere, inkludert Pete Herzog, Marga Barceló, Rick Tucker, Andrea Barisani (en annen tidligere Gentoo-utvikler), 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.
  • Operativsystemer: En konseptbasert tilnærming av Dhananjay M. Dhamdhere
  • Pro Git av Scott Chacon og Ben Straub
  • Expert C Programmering: Deep secrets av Peter Van Der Linden.

Jeg kunne snakke høyt om hver av disse bøkene, men i dag vil vi ta noen av avsnittene fra den siste på listen, ettersom mange av disse anektodene har trollbundet meg og hjulpet meg til å forstå noen av de intrikate hemmelighetene til C og programmering generelt. 🙂

Unix og C

Når vi snakker om UNIX, er historien flettet sammen med opprinnelsen til dette systemet og utviklingen av språket som frem til i dag er en av de mest brukte i utviklingen av det og dets derivater (inkludert Linux). Og merkelig nok er disse to født av en "feil".

Multiriker Det var et megaprosjekt som samlet Bell Laboratories, General Electric og MIT for å lage et operativsystem, sa at systemet presenterte mange feil, og blant en av de viktigste ytelsesfeilene som gjorde systemet praktisk talt ubrukelig. Vi snakker om året 1969, så maskinvaren på den tiden kunne ikke støtte mengden programvare som var nødvendig for å kjøre selve systemet.

Det var først i 1970 at et par Bell-ingeniører begynte å jobbe med et enkelt, raskt og lett operativsystem for PDP-7. Hele systemet var skrevet inn assembler og hadde blitt kalt UNIX som en parodi på Multiriker siden han bare ønsket å gjøre noen få ting, men å gjøre det bra i stedet for det enorme bortkastede arbeidet som det andre betydde. Nå kan du forstå hvorfor Epoch begynner 1. januar, 1970. 🙂 Et ganske nysgjerrig faktum for meg. På den tiden var det fortsatt ikke snakk om en C i seg selv, men om en Ny B siden Ritchies ideer kom fra det allerede brukte B-språket på den tiden.

Tidlig C

I løpet av årene (1972-3) begynte begrepet C å bli brukt som det nye språket begynte å ta form, og rundt dette tidspunktet ble et annet nysgjerrig faktum født, mange programmerere og programmeringsvitser sier:

Programmerere vet at du begynner å telle fra 0 i stedet for 1.

Dette er ikke helt sant, den virkelige grunnen til at dette blir ansett på denne måten den dag i dag er fordi det for kompilatorforfattere var lettere å beregne en matrise ved opprettelsen. forskyvninger, disse indikerer avstanden som eksisterer fra et opprinnelsespunkt til ønsket mål, det er derfor:

array[8]=2;

Det forteller oss at elementet av matrise er definert som 2, fordi 8 enheter legges til matrisen for å nå minneområdet der element 2. Lagres. Før C begynte mange språk å telle fra 1, takket være C, nå begynner nesten alle med 0 🙂 så det er ikke programmørenes feil, men kompilatorforfatterne feil at dette er slik.

Bourne-skallet

Dette er et tema som, selv om det ikke er direkte relatert til C, kan hjelpe flere enn å forstå hvorfor Shell-programmering er så merkelig, og det er absolutt nysgjerrig å vite. Steve Bourne skrev en kompilator for Algol-68 den sesongen, dette er et språk der tastene ( {} ) erstattes av ord, så vi kan definere det som følger i C:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

Dette er bare noen eksempler på hva Algol forstår, men hvis vi bruker det på skallprogrammering i dag, vil du forstå hvorfor programmet i shell krever en fi for hver if Absolutt interessant.

Begynn å lese

Jeg kan ikke fortelle deg alle detaljene i boka, spesielt siden mange av disse allerede er programmeringsemner som krever en tidligere bakgrunn for å bli forstått, men jeg trodde jeg ville dele med deg noen av de nysgjerrige anekdotene som jeg fant underveis 🙂 Jeg har ikke hatt tid til å jobbe med noen av elementene som har vært på oppgavelisten fordi ganske enkelt disse siste bøkene har fanget meg, og jeg gleder meg over dem hver dag og fremfor alt prøver å forstå dem til det fulle. Hilsen og snart vil jeg kunne dele med deg flere emner, hilsener.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Juan sa

    Artikkelen din har vært veldig interessant for meg. Takk så mye.

  2.   HO2Gi sa

    Veldig interessant som alltid.

  3.   Jose Rafael sa

    Veldig interessant avklaringene er gode.

  4.   Alex sa

    Utmerket

  5.   danielga sa

    Interessant !!! Takk så mye.

  6.   Segundo sa

    multrics? det vil ikke være multics (https://en.wikipedia.org/wiki/Multics)

    språk med indekser fra 1 er en oppfinnelse av satan ...

    1.    ChrisADR sa

      Interessant merknad 🙂 Jeg antar at begge begrepene på et tidspunkt i historien har blitt brukt:

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

      og tydeligvis den samme boka som er skrevet på midten av 90-tallet.

      Takk for avklaring 🙂 hilsener

      1.    Segundo sa

        wa, for en merkelig ting, du har fått meg til å tvile, jeg har sett i en "kjøpt" kopi av Expert C Programming: Deep secrets and there are multics coming, det er første gang jeg hører at multrics. Hvor nysgjerrig, det minner litt om trix-kaninen

        1.    ChrisADR sa

          hahaha absolutt nysgjerrig, jeg sjekket den engelske kopien av dype hemmeligheter, der står det også Multrics (fordi du også hadde fått meg til å tvile) ... kanskje det var et uttrykk for tiden 😛

          Hilsen

  7.   ED774 sa

    Flott bidrag

  8.   anonym sa

    Interessant, selv om det helt sikkert er Multrics, skyldes feil trykk, siden det opprinnelige navnet på det operativsystemet var Multics, og Unix, opprinnelig kalt Unics, refererte nettopp til det flotte operativsystemet, til slutt og av fonetikk, forvandlet Unics til Unix, nå , du måtte bare nevne navnet på hvem som regnes som forfatter av Unix; Ken Thompson, legenden forteller at både Thompson og Ritchie var i kafeteriaen på Bell Labs og kommenterte prosjektene sine, og det var at Ritchie foreslo til Thomposon at han omskrev sitt Unics with C-program, språket han hadde skrevet ... og hvile, er historie. 😉

    Forresten, tidligere var alle programmer skrevet med instruksjonene fra maskinen, noe som gjorde dem helt avhengige av maskinvaren. Innovasjonen til C, bortsett fra å gjøre det lettere å skrive programmer, var at språket var uavhengig av maskinvaren som implementerte kompilatorer, en filosofi som mange år senere ville ta Java, i den forstand at programmene ikke var avhengige av operativsystemet, og la til den berømte virtuelle Java-maskinen.

    1.    ChrisADR sa

      Det dårlige med legender er at de forvrenger historien, på flere måter enn en ... og de kan få deg til å tro at noe skjer når det ikke er ... som det faktum i den eksisterende samtalen mellom Thompson og Ritchie (som jeg utelatt. etter ønske) siden det fører til historiske og tekniske feil (C var ikke før UNIX) ...

      Og når det gjelder det andre ... en annen legende som forvrenger virkeligheten, siden før C var det B, A, pascal, Ada, algol-60, PL / 1 og noen flere som var riktig programmeringsspråk (veldig forskjellig fra forsamlingen og dens dialekter etter arkitektur som er avhengige av maskinvaren til prosessoren) så C ikke "innoverte" i denne forstand, han adopterte ganske enkelt løsninger som allerede eksisterte på andre språk, og til slutt ble den populær raskere og bedre enn disse ... Den eneste delen Sannheten er at Java var basert på dette begrepet bærbarhet for senere å lage sin virtuelle maskin, men ikke bare stolte den på C for dette, men den fulgte andre modeller, ellers ville vi ikke ha objektet- orientert programmeringsparadigme i java ...

      Jeg følte at jeg burde avklare situasjonen fordi alle som ikke er kjent, kunne ta det som sant og så tro at det skjedde slik ... hilsener 🙂

  9.   Ignatius Esquivel sa

    Som alltid er artikkelen veldig interessant, takk for bidraget.