Bedste svar
Forestil dig et stort computerprogram, lad os sige en fil, der er 100 MB lang.
Forestil dig nu en lille rettelse, lad os sige, en rettelse, der kun ændrer et par byte i disse 100 MB.
At udstede en erstatning for 100 MB-programfilen er spild af båndbredde. Det tager lang tid at downloade og bruger unødigt meget plads.
I stedet kan du udstede et lille program, hvis eneste formål er at finde den originale 100 MB fil på klientens computer og derefter ændre de få byte, der udgør rettelsen. Dette ville være en patch.
Selvfølgelig bruges ordet “patch” i disse dage ret uformelt til at beskrive enhver mindre genudgivelse af en software, uanset form genudgivelsen tager; det kan være i form af et program som beskrevet ovenfor, eller det kan bare være et sæt erstatningsfiler eller endda en ny installationspakke, det kaldes stadig ofte en “programrettelse”, hvis formålet af pakken er bare for at rette et par fejl eller implementere andre mindre ændringer.
Svar
Nå, på det laveste niveau er der lavet en computerchip af transistorer. Disse er TINY pletter af silicium med bevidste urenheder for at gøre dem i stand til at fungere som små kontakter.
Transistorer opbygges i kredsløb ved at tilføje et lag af små ledninger for at forbinde dem.
Transistorer er indbygget i “Logiske porte”, der kan udføre meget enkle logiske operationer:
- OG – hvis der begge er to indgangssignaler, skal du generere et udgangssignal.
- ELLER – hvis det ene eller begge af de to indgangssignaler er til stede, skal du generere et udgangssignal.
- XOR – hvis kun et af indgangssignalerne er til stede, men ikke det andet, generere et udgangssignal.
- IKKE – som kun har en indgang – og kun genererer en udgang, hvis der ikke er noget signal på indgangen.
Hver af disse logiske porte er blot et par transistorer.
Logiske porte kan derefter samles for at lave ting som “flip flops”, der har en enkelt sand / falsk værdi og husker det – eller “en bit adders”, der kan tilføje to binære cifre sammen og producere et output og en “carry” -bit.
Til e-bitadders kan kombineres for at skabe klumper af kredsløb, der kan tilføje to større tal sammen (eller trække dem ved hjælp af et trick kaldet “tos komplement aritmetik).
Vi kan også bygge ting kaldet” shifters “, der multiplicer et tal med to, fire, otte, seksten osv.
En flip flip-flops kan sættes sammen for at opbygge et stykke kredsløb, der kan gemme et helt tal – og en flok DE biter kan skabe en blok RAM-hukommelse, der kan rumme mange, mange tal.
Fra disse adder- og skifterblokke kan du opbygge kredsløb, der multiplicerer og deler … og ud fra dem kan vi lave kredsløb, der beregner ting som sines og cosines og kvadratrødder. Vi kan også lave kredsløb, der sammenligner to tal ved at trække det ene fra det andet og se om resultatet er positivt, nul eller negativt.
Så er der en hel masse kontrollogik – som kan fortælle disse andre store klumper af kredsløb for at flytte et nummer fra et sted i RAM til et andet – eller for at tilføje to tal taget fra RAM sammen og skrive dem tilbage til et andet sted i RAM.
Det sidste trin er at bruge et tal gemt i RAM for at fortælle kontrollogikken, hvad de skal gøre … så DET tal er en kode, der repræsenterer en instruktion i et computerprogram. Så måske betyder tallet 1 at “flytte et tal fra et sted til et andet” og “2” betyder “tilføj to tal” og “3” betyder “sammenligne to tal”. Når hver instruktion er udført, henter kredsløbet den næste instruktion og udfører den også. Hvis du foretager en sammenligning, kan du fortælle den blok af logik at begynde at tage den næste instruktion fra et andet sted.
Dette er så en MEGET enkel – men ganske brugbar computer … men tingene er blevet VILDIG mere komplekse end det.
Når alle disse stadig mere komplicerede logiske kredsløb kombineres – ender vi muligvis med en chip med over en milliard af de små transistorer!
Vi kalder det “CPU ”Chip.
Derefter får vi de andre chips, der fremstiller hele computeren – især er der“ RAM-chips ”, der gemmer numre ligesom vores flip-flop – men bruger en mere pladseffektiv metode . Disse chips bruger kondensatorer i stedet for transistorer – og ved at oplade en kondensator (eller ikke) gemmer en enkelt bit information på mindre plads end en flip-flop gør. Disse RAM-chips er mere eller mindre bare et VAST hav af kondensatorer og kontrollogik. Milliarder af dem på en enkelt chip.
Så har vi også chips, der gør ting som at sende indholdet af et stykke RAM til en skærm for at lave en skærm. Tallene i RAM er grupperet i sæt med tre, der repræsenterer lysstyrken i de røde, grønne og blå farver med en enkelt pixel på skærmen. Millioner af numre bruges til at beskrive det billede, du ser – og computeren ændrer disse farver ved hver pixel ved at skrive tal i den RAM-hukommelse.
Den resulterende maskine er den mest komplekse ting, som mennesker har lavet – af FAR. En mobiltelefon eller en bærbar computer skubber muligvis mod en billion transistorer og kondensatorer.
Som en 62-årig softwareingeniør finder jeg det ret forbløffende, at alt dette er blevet muligt i løbet af min levetid. Da jeg begyndte at gøre dette, blev computere stadig lavet på samme måde – men en transistor var noget på størrelse med en tic-tac mynte – og nu er de mindre end lysets bølgelængde!
Men så forbløffende som alt det kompleksitet er – hvad der forbløffer mig totalt, er hvor vanvittigt pålideligt det hele er.
Din bil er måske lavet af 10.000 dele – hvoraf nogle gør tingene et par tusind gange i sekundet. Efter et par år (som måske er et par tusinde timers drift) vil nogle af disse dele gå galt og skal udskiftes.
Min computer er lavet af en billion dele – hvoraf de fleste gør tingene et par milliarder gange i sekundet. Det er hardware, der fungerer fuldstændigt fejlfrit i et årti – repræsenterer et par hundrede tusinde timers drift – men en kvintillion individuelle operationer – som hver eneste gang skete fejlfrit.
Computere er virkelig fantastiske ting.