Nažalost, vidio sam da mnogi ne žele naučiti programirati ovu 2018. godinu, ali čak i da sam samo pročitao svoj artículo prednji osoba i nakon malo vremena može poslati obvezu na projekt besplatnog softvera, bio bih zadovoljan svojim radom 🙂
Za one koji vole sigurnost, obećavam vam da će sljedeće biti post o sigurnosti 🙂 tako da su svi sretni ako netko želi naučiti nešto drugo (poput gita, administriranje poslužitelja ili što ja znam: p) ili da komentiram neku drugu temu na koji se ne može odgovoriti na jednostavan način u okviru za komentare, javite mi i vidimo kako to možemo raditi 😉
Pa, ako idemo na našu stvar, prije smo razgovarali o tipkanju i da je to povezano s načinom na koji spremamo svoje varijable u program, sada ćemo pregledati malo onoga što se događa unutra i nadamo se da to može biti dovoljno jasno.
bitovi
Mislim da je ovo tema koje se uvijek dotaknem kad pišem o programiranju, to je zasigurno nešto što me fascinira i što mi je pomoglo da razumijem mnoge stvari, sada ću pokušati objasniti malo kako su, kako se čitaju i čemu služe 🙂
Zamislite prekidač za svjetlo, kad je krug zatvoren, imamo 0
na zaslonu, kada promijenimo položaj prekidača, jer a 1
🙂 jednostavno zar ne?
Sada a 0
a 1
mogu značiti mnogo stvari, sve ovisi o kreativnosti s kojom ga poduzimate, pretpostavimo da želim znati ide li netko na sjever ili jug, 1
može značiti sjever i 0
, sur 🙂 recimo da želim znati je li netko muškarac ili žena, 1
to može biti čovjek i 0
, žena 🙂. Sada želim znati je li ta osoba mlada ili stara (> 22), 0
može značiti mlad i 1
, više. Nastavimo maštati ... Imate li kućnih ljubimaca? 1
Rekao bih da da, dok 0
Rekao bih ne Sada želim da pročitate sljedeći redak sa mnom:
1001
Ovo je kratki način da kažem ...
Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.
koja se uvelike razlikuje od:
0110
o Un hombre con más de 22 años de edad se dirige solo hacia el sur.
Bytes
Idemo sada korak dalje, naučimo kako čitati bajtove. Bajt je slijed od 8 bitova, koji se čitaju zdesna nalijevo i svaki 1
predstavlja moć od 2
podignuta na n
gdje n
je položaj bita. Kako zvuči kao kineski, dajmo mali primjer 🙂
01001011
Imamo ovaj bajt, sada ćemo ići s desna na lijevo (<-) Postavit ću ih odozgo prema dolje kako bih mogao napisati njihovo značenje:
1
: bit u položaju 0
označava da imamo sljedeća 2 podignuta na nulu ili 2^0
. To dobro znamo da je ekvivalentno 1
.
1
: drugi bit, sada položaj 1
: 2^1
što je isto što i reći 2
0
: treći bit ... ovo bi trebalo biti 2^2
, ali budući da nije uključen, ostavit ćemo ga uključenim 0
1
: četvrti bit, 2^3
u 8
????
0
: isto kao 0
0
: ostalo 0
1
: sad smo u 2^6
o 64
i konačno 0
, mi već znamo što to znači 🙂 sada ćemo dodati svoje rezultate i usporediti ih sa sljedećom tablicom 🙂 imamo 75
pa potražimo to u stupcu Decimal i vidjet ćemo što se pojavljuje u Char
Imamo jednog K
!! Čestitamo, već znate kako čitati u binarnom obliku 🙂 Ali najpronicljiviji su možda primijetili da smo dobili i decimalni broj i da ima ograničenje (kada su sve vrijednosti 1
) Ta se granica nalazi u broju 255
.
riječ
Sad će mi reći više od jednog, ali što ako trebam broj veći od 255
? ili gdje mogu pronaći druge likove poput Japanaca? Pa, odgovor je jednostavan, spojimo 2 bytes
. Sad kad imamo dvije, mogući broj kombinacija koje imamo je 2^16
o 65536
mogući ishodi, kao što su 0
je jedan od tih, maksimum mogućih je 65535
. Zvoni li taj broj? Sjećate se maksimalnog broja priključaka na linux sustavu? Ostavljam im domaće zadaće 😉
Dvostruka riječ i četverokut
Za matematičkije postoje i specifični formati, dvostruka riječ sadrže, kako su mnogi već zamislili 2 word
o 4 bytes
(o 32 bits
) informacija, isto što i reći:
11111111111111111111111111111111
na 0
a 4 294 967 295
U ovom će se trenutku mnogi zapitati što se događa s negativnim brojevima, odnosno negdje ih se mora razmišljati, zar ne? Da bi mogli pohraniti negativan broj, programeri procesora odlučili su zauzeti prvi bit s lijeve strane kao vrijednost znaka. To znači da ako je prvi bit 0
govorimo o pozitivnom broju, ali ako jest 1
imamo negativan. Sad pogledajte zašto su bitovi toliko posebni, mogu biti što god želite 😀
Ali ovo nam očito ostavlja jedan položaj manje za obavljanje množenja! Dakle naš0
a 4 294 967 295
postaje:
-2,147,483,648
a +2,147,483,647
Mnogi od nas već jesu 64 bits
, a ovo je vrijednost a četverokut, možemo imati vrijednosti u rasponu od 0
a 18 446 744 073 709 551 615
. To je velik broj 🙂
Zašto 8 bit?
To je nešto što će se zapitati više osoba, a odgovor je u hardveru. Od početka su procesori trebali podatke kako bi mogli izvoditi operacije. Podaci se pohranjuju u memoriju računala i svaki put kad ih procesor zahtijeva, za prikupljanje koristi sabirnice podataka. U davna vremena ovi sabirnici mogli su komunicirati najviše 8 bita po ciklusu, što znači da je najveći i najučinkovitiji način premještanja podataka bio grupiranje 8 bita i njihovo slanje u procesor.
S vremenom, do danas, procesori su razvili sposobnost pomicanja 16 bita, 32 bita i ... 64 bita.
Kakve to veze ima s tipkanjem?
Sad smo u dijelu u kojem sve to ima smisla 🙂 Tipkanje je svojstvo koje programski jezici koriste za imenovanje tih memorijskih prostora. Sve varijable imaju svoj pandan u jednoj od ovih vrsta podataka, bez obzira kako se zvale. Oni su poznati kao primitivni tipovi podatakaSvaki jako tipkani jezik ima svoje poimanje tih vrijednosti i količine koju one predstavljaju. Na primjer u C imamo knjižnicu limits.h
što nam pokazuje maksimalnu i minimalnu količinu primitivnih vrijednosti.
Pogledajmo što će se dogoditi ako pokušamo razbiti jednu od vrijednosti:
S desne strane imamo vrijednosti datoteke limits.h
i s lijeve strane uzeli smo jednu od ovih vrijednosti (unsigned short int
) i dodijelili smo broj veći od odgovarajućeg. Kao rezultat toga, prevodilac nas upozorava da zloupotrebljavamo memoriju jer je binarni oblik 66666
ne može stati u binarni oblik 65535
. To nas vodi do lekcije u predstava kada programiramo, ako vaša vrijednost neće rasti puno s vremenom ili ako ne trebate vrijednosti velike kao vrijednosti dvostruko o četverokutKorištenje ispravnog tipa smanjuje količinu memorije koju zahtijeva CPU, što podrazumijeva veću brzinu dohvaćanja podataka ako je dobro proračunata.
Na strani tumača to je lakše zbog implicitne pretvorbe. Ctada definiramo varijablu u jezicima kao što su javascript ili Python, tumač je zadužen za razumijevanje vrste i dodjelu dovoljno memorijskog prostora za izvođenje operacija. Pogledajmo jednostavan primjer 🙂
Kao što vidite, ne moramo tumaču pythona objašnjavati vrstu naše varijable, jer je ona zadužena za dodjeljivanje tipa i pohranjivanje u memoriju 🙂
Upoznajte svoje varijable
To ovisi o jeziku i vrsti implementacije koju ćete koristiti, ali prvi korak da biste mogli programirati jest naučiti varijable koje možete koristiti 🙂 Jednom kad shvatite varijable, moći ćete ih učinkovito i logično koristiti za pohranu podataka (pod uvjetom od strane korisnika ili sustava). Ovo je prvi korak na programskoj ljestvici i nadamo se da ćete nakon čitanja ovog članka bolje razumjeti kako vaše računalo radi i kako pohranjuje informacije. Bit će sa mnom do sljedećeg članka, ne zaboravite ostaviti svoje komentare da biste vidjeli trebate li pojačati ili komentirati bilo koju točku. Živjeli
Dobro napisano, sažeto i jasno, istovremeno zanimljivo za svu publiku. Dobar posao.
Puno vam hvala, pozdrav 🙂
Izvrsno objašnjenje. Vi ste stroj.
Hvala ti
Vrlo dobro objašnjeno hvala
Hvala vam što ste je pročitali u cijelosti 🙂
Izvrsno, hvala na unosu. A iskorištavanjem binarnog problema postoji mogućnost da nam date klasu IP-a, podmreže itd. Razumijem da to nije programsko pitanje, ali dobro objašnjenje tog problema uvijek se čekalo.
Još jednom, hvala na vašem objašnjenju
Pozdrav Diego, to se može učiniti 🙂 istini za volju, ni ja nisam puno ulazio u tu temu, ali nema boljeg načina za istragu od traženja nečega o tome u članku 🙂 Ostavit ćemo to na popisu jer sljedeći post već ima temu a bavit će se otvrdnjavanjem. Pozdrav 🙂
Vi ste izvrstan učitelj i vrlo ste velikodušni u podučavanju onoga što znate. Svaka čast i hvala.
Puno ti hvala Pedro 🙂 Još uvijek tražim mjesta za predavanje, nažalost ovdje u Peruu je teško kad imaš samo tehničku stručnu spremu, pa sada gledam mogućnost nastavka sveučilišnog studija ovdje ili tamo gdje mogu ili čak i prijaviti se na magisterij za strance, tko zna, možda se uskoro nešto takvo može dati 🙂, ali definitivno je podučavanje nešto što mi uljepšava dan 🙂 Pozdrav
Nisam pročitao bolje objašnjenje teme, prvi je primjer sjajan
iako nisam čuo tu riječ (poput 16-bitnih varijabli), dvostruku riječ ili četverokut
bez obzira što "već programiram", postovi su zanimljivi. Ako treba postojati bilo kakav problem, post treba upotrijebiti C (limit.h) kao primjer varijabilnih veličina, C ima najmanje specifičnu specifikaciju koja postoji
Pozdrav nešto 🙂 puno hvala, usput sam došao do primjera 😛 jer su sigurno poznati podaci za one koji su pročitali malo skupštine, a to je ono što procesor razumije 🙂 hahaha sigurno C nije baš specifičan, ali mislim da jest zbog činjenice da su prenosivost i različite arhitekture koje podržava toliko varirali da C mora prilagoditi svaku vrstu procesora kako bi bio doista prenosiv
Pozdrav i hvala na podjeli.
Osim što bi bilo zanimljivo da se ova serija vodiča temelji na hrđi, mislim da je to jedan od najzanimljivijih jezika koji se danas razvijaju.
Iza njega sam, ali prepoznajem da je to težak jezik, ali s velikom budućnošću ...
Radujem se vašim sljedećim člancima, stvarno su zanimljivi.
Pozdrav.
Pozdrav Sergio, bilo bi sigurno zanimljivo, čuo sam da GNOME planira implementirati Rust u svom paketu programa, još ga nisam vidio u potpunosti, ali dolazi migracija.
Što se tiče jezika, osobno još uvijek učim C, želim biti sposoban početi se razvijati na jezgri u sljedećih nekoliko mjeseci i radije bih naučio nekoliko jezika detaljno prije nego što započnem s pregledom novih, ali definitivno mogu potražiti nešto zanimljivo i napraviti nekoliko primjera u Rustu, jer njegova dokumentacija sama po sebi izgleda prilično dobro.
Pozdrav i hvala na dijeljenju 🙂
Vrlo dobra objašnjenja, kako u ovom članku, tako i u prethodnom. Nadam se da ćete nastaviti s ovom temom koja mi se čini vrlo zanimljivom.
Pozdrav Davide, također se nadam da ću nastaviti pisati i posebno motivirati ljude da sudjeluju sa besplatnim softverom, toliko je projekata i potreba da bi bilo izvrsno imati nekoliko dodatnih ruku za razvoj develop
pozdravi
Možete li objaviti post o Turingovom stroju?
Pozdrav Mart 🙂 Mislim da smo ga već spomenuli u nekom komentaru, zar ne? Siguran sam da mogu sastaviti nešto zanimljivo na tu temu 🙂 da vidimo što može izaći. Pozdrav i hvala što ste pročitali sve moje članke, od prvog dana do danas uvijek sam vas vidio prilično zainteresiranih 🙂
Wow, puno vam hvala kako dobro objašnjenje.
pozdravi
Puno vam zahvaljujem Allan
Pročitala sam vaš prethodni post! Puno vam hvala na objašnjenju, iako mislim da nikada neću dovršiti razumijevanje riječi.
Pozdrav Ramone, hvala vam što ste pročitali oboje. Ako je od bilo kakve koristi, «riječ» je razvoj bajta, to je poput procesora, prije nego što je bilo 8-bitnih, nakon 16-bitnih itd. ... to je zato što svaki put kada nam je potrebno više prostora za obradu i bolja brzina ili moć ... rođena je "riječ" jer je prostor "bajta" promašio, a isto kao i kod "dvostruke" i "četverostruke" riječi 🙂 prirodna je evolucija koja nas tjera da dodamo snagu i prostor za daljnji razvoj 🙂
pozdravi
Ove 2018. godine učim programirati da ili da, hvala
Drago mi je 🙂 potrudite se !! Živjeli
Puno vam hvala, nastavite tako. Već znam kako programirati, ali čekam vaša učenja, da je moje samouko programiranje puno loših praksi.
Hvala Guillermo 🙂 Pa nadam se da ćete pronaći zanimljivosti i u sljedećim postovima 🙂 Pozdrav
Jednostavno objašnjenje je uvijek najbolje .. izvrsno ..
Predložio bih git ... za programere je osnovno kada želite raditi kao tim i dovesti svoj posao u red .. verzije ..
Vrlo istinito Edgar, pokušat ću objaviti sadržaj o tome, iako je prilično teško reći nešto novo, jer je git dokumentacija već obilna i nekoliko je stvari već prevedeno na nekoliko jezika. Vidjet ću što mogu učiniti, pozdravi i hvala na dijeljenju
Pozdrav, odgovara li broj od 0 do 18 446 744 073 709 551 615 64-bitnoj decimalnoj vrijednosti ili se odnosi na drugu vrijednost? Pa, izračunavajući snagu od 2 ^ 64, rezultat koji dobivam je: 18 446 744 073 709 552.
Pozdrav Tiririri, mislim da imate problem sa zaokruživanjem, možete pokušati koristiti naredbu
bc
? je programski jezik dizajniran da bude što precizniji, jednom u njemu samo je potrebno2^64
, možda će to riješiti 🙂 javite mi kako je prošlo, pozdrav. Stvarna vrijednost je 18 446 744 073 709 551 616, ali oduzimamo 1 jer 0 vrijedi kao moguća vrijednost 🙂
Hvala, izračunao sam to pomoću kalkulatora snage koji sam pronašao na netu (https://es.calcuworld.com/calculadoras-matematicas/potencias/) i to je bio rezultat koji mi je dao.
I da, već sam isprobao naredbu bc i ona mi učinkovito daje vrijednost koju ste zapisali.
Pozdrav još jednom, slika na kojoj se pozivate na knjižnicu limit.h vrlo je mala i ne može se pročitati (barem je nisam mogla pročitati, jer vidim da su svi to činili), a budući da je ne razumijem, više ne nastavljam čitanje. Ne znam biste li to mogli promijeniti, nadam se da vas nisam time zamarao.
Možete isprobati mobilnu verziju, one izgledaju malo jasnije, riječ je o wordpress temi: / s druge strane, sva zaglavlja C mogu se naći u / usr / include /, u ovom slučaju možete ih pročitati izravno ako želite lakše je 🙂 Pokušat ću učitati veću sliku da vidim pomaže li 🙂
Hvala, mislim da bih trebao biti strpljiv s ovim, heh heh.
Hvala na članku, jer sada sam malo bolje razumio varijable i opseg predstavljanja jezika, ali sada mislim da bih trebao početi koristiti biblioteku "stdint.h", jer je preporučuju za korištenje prilikom programiranja na c jer Učili su me staroj školi jer je pamćenje bilo dragocjeno i trebalo je biti oprezan s onim što se koristi
Za Katekyo nema razloga, zasigurno je bolje koristiti standardnu knjižnicu, ali uvjeravam vas da je bolje znati što razlikuje uint_least8_t od uint_fast8_t, a to se postiže poznavanjem primitivnih tipova podataka, što je i bio cilj posta 🙂 Veliko hvala na komentaru i čitanju članka, pozdrav
: Ili majstorsko objašnjenje! Znao sam dio koncepata, ali iz ovog posta dobivam puno novih znanja
Puno vam hvala, Victor 🙂 kako dobro što članak može biti od pomoći, pozdrav
Jako mi se svidio Python kako bi olakšao programiranje, vidio sam tečaj u http://zetcode.com/gui/pyqt4/ Svidio mi se zadnji tetris o: http://zetcode.com/gui/pyqt4/thetetrisgame/
Ovaj tetris retuširao sam tijekom ljeta kako bih stavio bodove, više igrača i glazbu, malo po malo, ali vrlo zabavno.
Pozdrav Guille, zasigurno je vrlo zabavno vidjeti kako softver na kojem radiš raste malo po malo is to je neusporedivo iskustvo, a još više kad nekome ovo što razvijate bude korisno, to je iz drugog svijeta 😀 veliko hvala na dijeljenju 🙂
Onu koju sam napravio prenio sam na nju (30 MB za glazbu) http://guillermo.molleda.com/Tetris9.7z
Morate konfigurirati različitu početnu brzinu za svakog igrača ili ako ponovno pokrenete bodove nakon nove igre, ..., a tri su igračice za moje dvije kćeri koje će se igrati sa mnom. Čak izaziva ovisnost.