Smutne som videl, že nie veľa sa chce naučiť programovať tento rok 2018 🙁, ale aj keby som si prečítal iba svoje predchádzajúci článok človek a po krátkom čase dokáže vyslať záväzok na bezplatný softvérový projekt, bol by som s mojou prácou spokojný 🙂
Pre tých, ktorí majú radi bezpečnosť, sľubujem, že nasledujúci bude príspevok o bezpečnostných úlohách, takže všetci sú šťastní, ak sa niekto chce dozvedieť niečo iné (napríklad git, správa servera alebo neviem: p), alebo komentovať inú tému na ktoré sa nedá jednoducho odpovedať v poli pre komentáre, dajte mi vedieť a uvidíme, ako to dokážeme vyriešiť 😉
No, teraz, keď ideme na našu vec, predtým sme hovorili o písaní na stroji a že to malo spoločné so spôsobom, akým ukladáme naše premenné do programu, teraz preskúmame trochu toho, čo sa deje vo vnútri, a dúfajme, že to môže byť dosť jasné.
bity
Myslím si, že toto je téma, ktorej sa pri písaní o programovaní vždy dotknem, určite ma niečo fascinuje a pomohlo mi pochopiť veľa vecí, teraz sa pokúsim trochu vysvetliť, aké sú, ako sa čítajú a na čo slúžia 🙂
Myslite na spínač svetla, keď je obvod uzavretý, máme a 0
na obrazovke, keď zmeníme polohu prepínača, pretože a 1
🙂 jednoduché nie?
Teraz a 0
a 1
môžu znamenať veľa vecí, všetko záleží na kreativite, s akou to berieš, predpokladám, že chcem vedieť, či niekto ide na sever alebo na juh, 1
môže znamenať sever a 0
, sur 🙂 povedzme, že chcem vedieť, či je niekto muž alebo žena, 1
môže to byť muž a 0
, zena 🙂. Teraz chcem vedieť, či je táto osoba mladá alebo stará (> 22), 0
môže znamenať mladý a 1
, vyššie. Poďme si predstavovať ... Máte nejaké domáce zvieratá? 1
Povedal by som, že áno 0
Povedal by som nie Teraz chcem, aby ste si so mnou prečítali nasledujúci riadok:
1001
Toto je krátky spôsob, ako povedať ...
Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.
čo sa veľmi líši od:
0110
o Un hombre con más de 22 años de edad se dirige solo hacia el sur.
Bytes
Poďme teraz o krok ďalej, naučme sa čítať bajty. Bajt je sekvencia 8 bitov, ktoré sa čítajú sprava doľava a každý z nich 1
predstavuje mocnosť 2
povýšený na n
kde n
je poloha bitu. Pretože to znie ako čínština, dajme malý príklad 🙂
01001011
Máme tento bajt, teraz pôjdeme sprava doľava (<-), dám ich zhora nadol, aby som mohol napísať ich význam:
1
: hrot, keď je v polohe 0
naznačuje, že máme nasledujúce 2 zdvihnuté na nulu alebo 2^0
. To, o čom vieme, je ekvivalentné 1
.
1
: druhý bit, teraz poloha 1
: 2^1
čo je to isté ako povedať 2
0
: tretí bit ... toto by malo byť 2^2
, ale keďže nie je zapnutý, necháme ho zapnutý 0
1
: štvrtý bit, 2^3
u 8
????
0
: rovnake ako 0
0
: iné 0
1
: teraz sme v 2^6
o 64
a nakoniec 0
, už vieme, čo to znamená 🙂 teraz pridáme naše výsledky a porovnáme ich s nasledujúcou tabuľkou 🙂 Máme 75
tak to teda poďme hľadať v stĺpci desatinný a uvidíme, čo sa objaví v voz
Jedného máme K
!! Gratulujeme, už viete, ako čítať v binárnom jazyku 🙂 Ale tí najchytrejší si mohli všimnúť, že sme získali aj desatinné číslo a že má limit (keď sú všetky hodnoty 1
) Tento limit sa nachádza v počte 255
.
slovo
Teraz mi to povie viac ako jeden, ale čo keď budem potrebovať číslo väčšie ako 255
? alebo kde nájdem ďalšie znaky, ako napríklad Japonci? Odpoveď je jednoduchá, poďme spolu 2 bytes
. Teraz, keď máme dve, je možný počet kombinácií, ktoré máme 2^16
o 65536
možné výsledky, ako napr 0
je jedným z nich, maximum je 65535
. Znie to číslo na zvonček? Pamätáte si maximálny počet portov v systéme linux? Nechávam im domáce úlohy 😉
Dvojslovné a štvorslovné slovo
Pre matematickejšie existujú aj konkrétne formáty, dvojslovo obsahujú, ako si už mnohí predstavovali 2 word
o 4 bytes
(o 32 bits
) informácií, to isté ako povedať:
11111111111111111111111111111111
alebo de 0
a 4 294 967 295
V tomto okamihu sa mnohí budú čudovať, čo sa stane so zápornými číslami, to znamená, že niekde treba uvažovať, nie? Aby bolo možné uložiť záporné číslo, vývojári procesorov sa rozhodli obsadiť prvý bit vľavo ako znamienkovú hodnotu. To znamená, že ak je prvý bit 0
hovoríme o kladnom čísle, ale ak je 1
máme negatívum. Teraz uvidíte, prečo sú bity také špeciálne, že môžu byť akékoľvek, čo chcete 😀
Ale to nám samozrejme ostáva o jednu pozíciu menej na to, aby sme robili násobenie! Takže náš0
a 4 294 967 295
sa stáva:
-2,147,483,648
a +2,147,483,647
Mnohí z nás to už majú 64 bits
, a toto je hodnota a štvorslovo, môžeme mať hodnoty od 0
a 18 446 744 073 709 551 615
. To je veľké číslo 🙂
Prečo 8 bit?
Toto sa bude čudovať nejednému, a odpoveď je v hardvéri. Procesory od začiatku potrebovali údaje, aby mohli vykonávať operácie. Dáta sú uložené v pamäti počítača a zakaždým, keď to procesor vyžaduje, použije na ich získanie dátové zbernice. V staroveku mohli tieto zbernice komunikovať maximálne 8 bitov za cyklus, čo znamená, že maximálnym a najefektívnejším spôsobom presunu údajov bolo zoskupenie 8 bitov a ich odoslanie do procesora.
S odstupom času až dodnes vyvinuli procesory schopnosť presunúť 16 bitov, 32 bitov a ... 64 bitov.
Čo to má spoločné so strojopisom?
Teraz sme pri časti, kde to má všetko zmysel 🙂 Písanie je vlastnosť, ktorú programovacie jazyky používajú na pomenovanie týchto pamäťových priestorov. Všetky premenné majú svoj náprotivok v jednom z týchto typov údajov, bez ohľadu na to, ako sa volajú. Tieto sú známe ako primitívne dátové typyKaždý jazyk so silným typom má svoju koncepciu týchto hodnôt a množstva, ktoré predstavuje. Napríklad v C máme knižnicu limits.h
čo nám ukazuje maximálne a minimálne množstvo primitívnych hodnôt.
Pozrime sa, čo sa stane, keď sa pokúsime prelomiť jednu z hodnôt:
Vpravo máme hodnoty súboru limits.h
a naľavo sme vzali jednu z týchto hodnôt (unsigned short int
) a priradili sme číslo vyššie ako príslušné. Vo výsledku nás kompilátor varuje, že zneužívame pamäť kvôli binárnej forme 66666
sa nemôže zmestiť do binárnej formy súboru 65535
. To nás vedie k lekcii v výkon keď programujeme, ak vaša hodnota nebude časom veľmi rásť, alebo ak nepotrebujete hodnoty také veľké ako hodnoty z zdvojnásobiť o štvorslovoPoužitím správneho typu sa zníži množstvo pamäte vyžadovanej procesorom, čo znamená vyššiu rýchlosť načítania údajov, ak je správne vypočítaná.
Na strane tlmočníka je to jednoduchšie vďaka implicitné konverzie. C.keď definujeme premennú v jazykoch ako javascript alebo Python, tlmočník má na starosti pochopenie, o aký typ ide, a pridelenie dostatočného priestoru na pamäť na vykonávanie operácií. Pozrime sa na jednoduchý príklad 🙂
Ako vidíte, nemusíme tlmočníkovi pythonu vysvetľovať typ našej premennej, pretože má na starosti priradenie typu a jeho uloženie do pamäte 🙂
Poznajte svoje premenné
Závisí to od jazyka a typu implementácie, ktorú budete používať, ale prvým krokom k schopnosti programovať je naučiť sa premenné, ktoré môžete použiť 🙂 Keď pochopíte premenné, budete v pozícii, aby ste ich efektívne a logicky využívali na ukladanie informácií (za predpokladu, používateľom alebo systémom). Toto je prvý krok v rebríčku programovania a dúfame, že po prečítaní tohto článku lepšie pochopíte, ako váš počítač funguje a ako ukladá informácie. Bude so mnou až do nasledujúceho článku. Nezabudnite zanechať svoje komentáre, aby ste zistili, či musíte posilniť alebo komentovať konkrétny bod. Na zdravie
Dobre napísané, stručné a jasné, zároveň zaujímavé pre všetkých divákov. Dobrá práca.
Dakujem pekne, pozdravujem 🙂
Skvelé vysvetlenie. Si stroj.
Ďakujem vám
Veľmi dobre vysvetlené vďaka
Ďakujem vám, že ste si ju prečítali celú 🙂
Výborne, ďakujem za príspevok. A s využitím binárneho problému existuje možnosť, že nám môžete dať triedu IP, podsiete atď. Rozumiem, že nejde o otázku programovania, ale dobré vysvetlenie tejto otázky vždy čakalo.
Ešte raz ďakujem za vysvetlenie
Ahoj Diego, dá sa to 🙂 pravdu povediac ani ja som sa téme príliš nevenoval, ale neexistuje lepší spôsob vyšetrovania, ako hľadať niečo, o čom by som sa o tom podelil v článku 🙂 Necháme to na zoznam pretože ďalší príspevok už má predmet a bude sa zaoberať otužovaním. Zdravím 🙂
Ste vynikajúci učiteľ a veľmi štedrý pri výučbe toho, čo viete. Gratulujeme a ďakujeme.
Ďakujem pekne Pedro 🙂 Stále hľadám miesta, kde budem učiť, bohužiaľ tu v Peru je ťažké, keď máš iba technický odborný titul, takže teraz sa pozerám na možnosť pokračovať v štúdiu na vysokej škole tu alebo kde môžem alebo dokonca sa prihlás na magisterské štúdium v odbore cudzinec, ktovie, možno sa niečo také čoskoro podá 🙂, ale určite mi učenie robí deň 🙂 pozdravujem
Lepšie vysvetlenie témy som nečítal, prvý príklad je geniálny
aj keď som toto slovo (ako 16-bitové premenné) nepočul, dvojslovné alebo štvorslovné slovo
bez ohľadu na to, že „už programujem“, sú príspevky zaujímavé. Ak sa vyskytne problém, v príspevku bude použité C (limity.h) ako príklad premennej veľkosti, C má najmenej špecifickú špecifikáciu, ktorá existuje
Ahojte niečo 🙂 ďakujem pekne, prišiel som s príkladom na ceste 😛 pretože sú to určite známe údaje pre tých, ktorí si prečítali trochu Assembly, a tomu rozumie procesor 🙂 hahaha určite C nie je príliš konkrétny, ale myslím si, že to je. Je to spôsobené tým, že prenosnosť a rôzne architektúry, ktoré podporuje, boli také rozmanité, že C musí vyhovovať každému typu procesora, aby bol skutočne prenosný 🙂
Zdravím a ďakujem za zdieľanie.
Pokiaľ by nebolo zaujímavé, keby táto séria tutoriálov vychádzala z rustu, myslím si, že je to jeden z najzaujímavejších jazykov, ktoré sa dnes vyvíjajú.
Som za ním, ale uznávam, že je to ťažký jazyk, ale s veľkou budúcnosťou ...
Teším sa na vaše ďalšie články, sú naozaj zaujímavé.
Zdravím.
Ahoj Sergio, bolo by to určite zaujímavé, počul som, že GNOME plánuje implementovať Rust v rámci svojej sady programov, zatiaľ som nevidel celý jeho rozsah, ale prichádza migrácia.
Čo sa týka jazykov, osobne sa stále učím C, chcem mať možnosť začať sa na jadre vyvíjať v najbližších mesiacoch a radšej sa naučím niekoľko jazykov do hĺbky, než začnem prehodnocovať nové, ale určite môžem hľadať niečo zaujímavé a urobiť niekoľko príkladov. v Ruste, pretože jeho dokumentácia vyzerá sama o sebe celkom dobre.
Zdravím a ďakujem za zdieľanie 🙂
Veľmi dobré vysvetlenie, tak v tomto článku, ako aj v predchádzajúcom. Dúfam, že budete pokračovať v tejto téme, ktorá mi pripadá veľmi zaujímavá.
Ahoj David, tiež dúfam, že budem môcť pokračovať v písaní a hlavne motivovať ľudí, aby sa zapojili do využívania bezplatného softvéru. V súčasnosti existuje toľko projektov a potrieb, že mať niekoľko ďalších rúk na vývoj by bolo skvelé 🙂
pozdravy
Mohli by ste uverejniť príspevok o Turingovom stroji?
Ahoj Mart 🙂 Myslím si, že v nejakom komentári sme sa toho už dotkli, nie? Som si istý, že dokážem dať dokopy niečo zaujímavé na túto tému 🙂 pozrime sa, čo môže vyjsť. Zdravím a ďakujem za prečítanie všetkých mojich článkov, od prvého dňa až dodnes som vás vždy videla celkom zaujatého 🙂
Páni, veľmi pekne ďakujem, aké dobré vysvetlenie.
pozdravy
Ďakujem pekne Allan 🙂 s pozdravom
Čítal som váš predchádzajúci príspevok! Ďakujem pekne za vysvetlenie, aj keď si myslím, že tomu slovu nikdy nedokončím.
Ahoj Ramon 🙂 velmi pekne dakujem za precitanie oboch. Ak je to „slovo“ akékoľvek, potom „slovo“ predstavuje vývoj bajtu, je to ako s procesormi, predtým ako existovalo 8 bitov, po 16 bitoch atď. Je to tak preto, lebo zakaždým, keď potrebujeme viac priestoru, proces a lepšia rýchlosť alebo výkon ... „slovo“ sa zrodilo, pretože priestor „bajtu“ bol krátky a to isté platí pre slovo „dvojitý“ a „štvorcový“ 🙂 je to prirodzený vývoj, ktorý nás núti pridať výkon a priestor na ďalší vývoj 🙂
pozdravy
Tento rok 2018 sa učím programovať áno alebo áno, ďakujem
Som rada 🙂 snaz sa !! S pozdravom
Ďakujem pekne, len tak ďalej. Už viem programovať, ale čakám na vaše učenie, že moje programovanie pre samoukov je plné zlých postupov.
Ďakujem Guillermo 🙂 No dúfam, že nájdete zaujímavé veci aj v nasledujúcich príspevkoch 🙂 Zdravím
Jednoduché vysvetlenie je vždy najlepšie .. vynikajúce ..
Navrhoval by som git ... pre programátorov je to základné, keď chcete pracovať ako tím a dať si do poriadku prácu .. verzie ..
Veľmi pravdivý Edgar, pokúsim sa o ňom uverejniť obsah, aj keď je dosť ťažké povedať niečo nové, pretože dokumentácia git je už teraz bohatá a niekoľko vecí je už preložených do niekoľkých jazykov. Uvidím, čo môžem urobiť, pozdravy a poďakovanie za zdieľanie
Dobrý deň, zodpovedá číslo od 0 do 18 446 744 073 709 551 615 64-bitovej desatinnej hodnote alebo odkazuje na inú hodnotu? Pri výpočte výkonu 2 ^ 64 bude výsledok, ktorý dostanem,: 18 446 744 073 709 552 000.
Ahoj Tiririri, myslím, že máš problém so zaokrúhľovaním, môžeš skúsiť použiť príkaz
bc
? je programovací jazyk navrhnutý tak, aby bol čo najpresnejší, stačí ak do neho vstúpite2^64
, mozno to vyriesi 🙂 daj vediet ako to prebiehalo, zdravim. Skutočná hodnota je 18 446 744 073 709 551 616, ale odčítame 1, pretože 0 sa počíta ako možná hodnota 🙂
Vďaka, vypočítal som to pomocou kalkulačky výkonu, ktorú som našiel na internete (https://es.calcuworld.com/calculadoras-matematicas/potencias/) a to bol výsledok, ktorý mi dal.
A áno, už som vyskúšal príkaz bc a účinne mi dáva hodnotu, ktorú ste si zapísali.
Ahojte znova, obrazok, na ktorý odkazujete na knižnicu limits.h, je veľmi malý a nedá sa prečítať (aspoň som si ho nemohol prečítať, pretože vidím, že to urobil každý, zdá sa), a keďže mu nerozumiem Už nepokračujem v čítaní. Neviem, či by si to mohla zmeniť, dúfam, že som ťa tým neobťažovala.
Môžete vyskúšať mobilnú verziu, tie vyzerajú trochu prehľadnejšie, je to téma wordpressu: / na druhej strane všetky hlavičky C nájdete v / usr / include /, v tomto prípade si môžete zvoliť priame čítanie, ak je to jednoduchšie 🙂 skúsim nahrať väčší obrázok, či to pomôže 🙂
Ďakujem, myslím si, že by som s tým mal byť trpezlivý, heh heh.
Ďakujem za článok, pretože som teraz trochu lepšie pochopil premenné a rozsah zastúpenia jazyka a teraz si myslím, že by som mal začať používať knižnicu „stdint.h“, pretože ju odporúčajú používať pri programovaní vc, pretože som mal bola učená stará škola, pretože pamäť bola vzácna a človek musel byť opatrný s tým, čo sa používalo
Pre Katekyo nie je dôvod, určite je lepšie použiť štandardnú knižnicu, ale môžem vás ubezpečiť, že je lepšie vedieť, čo odlišuje uint_least8_t od uint_fast8_t, a to sa dá dosiahnuť poznaním primitívnych dátových typov, čo bolo cieľom príspevku 🙂 Veľká vďaka za komentár a za prečítanie článku, pozdravy
: Alebo majstrovské vysvetlenie! Časť konceptov som poznal, ale z tohto príspevku čerpám veľa nových poznatkov
Dakujem pekne Victor 🙂 ako dobre, ze ten clanok moze pomoct, zdravim
Python sa mi veľmi páčil, aby som uľahčil programovanie, videl som kurz v http://zetcode.com/gui/pyqt4/ Miloval som posledný tetris o: http://zetcode.com/gui/pyqt4/thetetrisgame/
Tento tetris som počas leta vyretušoval, aby som dal body, hru pre viacerých hráčov a hudbu, kúsok po kúsku, ale veľmi zábavnú.
Dobrý deň Guille, je určite veľmi zábavné vidieť, ako softvér, na ktorom pracujete, rastie kúsok po kúsku 🙂 je to neporovnateľná skúsenosť a ešte viac, keď niekomu pripadá to, čo vyvíjate, užitočné, teda z iného sveta 😀 ďakujem pekne na zdieľanie 🙂
Ten, ktorý som urobil, som nahral (30 MB pre hudbu) http://guillermo.molleda.com/Tetris9.7z
Musíte nakonfigurovať inú počiatočnú rýchlosť pre každého hráča alebo ak reštartujete body po novej hre ... a moje dve dcéry si so mnou môžu zahrať traja hráči. Je dokonca návyková.