Cum se fac programele?
Programele se fac cu limbaje de programare. Trebuie sa sti o "limba" in care sa programezi calculatorul.
Acest limbaj este de fapt... coduri. Coduri care sunt instructiunile date calculatorului (mai bine zis procesorului) ca sa faca ceva. Un program (Photoshop, Winamp, Skype, chiar Windows-ul in sine), este de fapt o lista foarte mare de instructiuni pentru procesor. Nu conteaza ca e PC, smartphone sau tableta, n-are absolut nicio relevanta. Programele ("aplicatiile") se fac la fel. In aceleasi limbaje, pe calculator, pe tastatura. Ca e destinat pentru un smartphone sau alt device, asta e irelevant.
Programatorul scrie aceste coduri in alt "program" (sau mai bine zis mediu de dezvoltare) numit IDE (Integrated Development Environment) care contine un editor de text (adica unde scrii codul), un compilator care traduce acele coduri in semnale binare (0 si 1) pentru procesor si un debugger (un detector de erori/probleme). De exemplu IDE-ul Code::Blocks.
Cele mai populare limbaje de programare sunt C, C++, C#, Java, Pascal, Python, PHP.
Acesta este un program extrem de simplu facut cu limbajul de programare C++:
1. #include <iostream>
2.
3. using namespace std;
4.
5. int main() {
6. cout << "Buna ziua, lume!";
7. return 0;
8. }
Acesta face sa apara pe ecran textul: "Buna ziua, lume!". Program mai simplu de atat nu se poate.
Ce inseamna aceste linii?
Linia 1 inseamna ca o sa lucrezi cu intrari si iesiri (ex. intrare de la tastatura).
Linia 3 defineste un standard pentru a lucra cu intrarile si iesirile.
Linia 5 inseamna ca ai creat functia principala.
Linia 6 arata pe ecran mesajul dintre ghilimele.
Linia 7 incheie functia cu succes, fara niciun alt rezultat.
Linia 8 arata ca blocul de instructiuni al functiei este inchis.
La 2 si 4 am lasat spatiul liber in mod intetionat ca sa arate mai bine codul.
Nu ti-am explicat pe intelesul tau pentru ca nici nu are rost, am prezentat doar in mare un inteles mai "uman", sa iti faci o idee.
Probabil te intrebi... e nevoie de 8 linii pentru a arata un simplu mesaj?
Aceasta este structura de baza a fiecarui program, orice program ai face, trebuie sa incepi cu acest "schelet".
Aici ti-am prezentat numai 8, dar gandeste-te ca un program ca Photoshop, de exemplu, are probabil sute de mii de linii de cod, si sa nu mai vorbim de un sistem de operare, cum e Windows.
Acest limbaj este de fapt... coduri. Coduri care sunt instructiunile date calculatorului (mai bine zis procesorului) ca sa faca ceva. Un program (Photoshop, Winamp, Skype, chiar Windows-ul in sine), este de fapt o lista foarte mare de instructiuni pentru procesor. Nu conteaza ca e PC, smartphone sau tableta, n-are absolut nicio relevanta. Programele ("aplicatiile") se fac la fel. In aceleasi limbaje, pe calculator, pe tastatura. Ca e destinat pentru un smartphone sau alt device, asta e irelevant.
Programatorul scrie aceste coduri in alt "program" (sau mai bine zis mediu de dezvoltare) numit IDE (Integrated Development Environment) care contine un editor de text (adica unde scrii codul), un compilator care traduce acele coduri in semnale binare (0 si 1) pentru procesor si un debugger (un detector de erori/probleme). De exemplu IDE-ul Code::Blocks.
Cele mai populare limbaje de programare sunt C, C++, C#, Java, Pascal, Python, PHP.
Acesta este un program extrem de simplu facut cu limbajul de programare C++:
1. #include <iostream>
2.
3. using namespace std;
4.
5. int main() {
6. cout << "Buna ziua, lume!";
7. return 0;
8. }
Acesta face sa apara pe ecran textul: "Buna ziua, lume!". Program mai simplu de atat nu se poate.
Ce inseamna aceste linii?
Linia 1 inseamna ca o sa lucrezi cu intrari si iesiri (ex. intrare de la tastatura).
Linia 3 defineste un standard pentru a lucra cu intrarile si iesirile.
Linia 5 inseamna ca ai creat functia principala.
Linia 6 arata pe ecran mesajul dintre ghilimele.
Linia 7 incheie functia cu succes, fara niciun alt rezultat.
Linia 8 arata ca blocul de instructiuni al functiei este inchis.
La 2 si 4 am lasat spatiul liber in mod intetionat ca sa arate mai bine codul.
Nu ti-am explicat pe intelesul tau pentru ca nici nu are rost, am prezentat doar in mare un inteles mai "uman", sa iti faci o idee.
Probabil te intrebi... e nevoie de 8 linii pentru a arata un simplu mesaj?
Aceasta este structura de baza a fiecarui program, orice program ai face, trebuie sa incepi cu acest "schelet".
Aici ti-am prezentat numai 8, dar gandeste-te ca un program ca Photoshop, de exemplu, are probabil sute de mii de linii de cod, si sa nu mai vorbim de un sistem de operare, cum e Windows.
Cum se fac limbajele de programare?
Ca sa sti asta trebuie sa cunosti un pic istoria electronicii.
Hai daca vrei sa le luam de la 0, pe romaneste, ca sa intelegi.
Intr-un chip:
...exista tranzistori. Sute de milioane. Cipul e facut de fapt din tranzistori, daca ignoram plasticul si piciorusele lui de metal.
Tranzistorii sunt de fapt intrerupatoare de curent. "Switch-uri". (de ce intrerupatoare.. imediat iti zic.)
Un tranzistor normal arata asa:
Tranzistorii sunt de fapt intrerupatoare de curent. "Switch-uri". (de ce intrerupatoare.. imediat iti zic.)
Un tranzistor normal arata asa:
Intr-un chip normal exista mii de tranzistori. microscopici.
Procesorul e tot un chip. Doar ca extrem de sofisticat si contine sute de milioane de tranzistori, dar e tot un chip.
Rolul tranzistorului este sa opreasca si sa porneasca curentul dintr-un circuit in chip. Mai multi tranzistori laolalta formeaza porti logice, care pornesc si opresc curentul. De ce? Pentru ca prin aceste opriri si porniri se fac niste intelesuri logice, se creaza un sens. Tranzistorii sunt neuronii cipului, iar portile logice sunt "sinapsele".
Curentul intr-un tranzistor intra pe doua fire si iese pe unu.
De exemplu daca curentul intra pe doua fire si iese pe unu, inseamna starea binara 1, daca intra numai pe unu, inseamna 0 (exista si varianta exclusiva care inseamna 1) , daca nu intra pe niciunul, din nou, zero. Aceste enorm de multe porniri si opriri dau un sens curentului din cip, si la cateva mii de tranzistori e deja serioasa treaba.
Limbajul binar
Numaratoarea zecimala o stii: numeri pana la 10. Pentru asta folosesti 10 cifre: 0123456789
Numaratoarea binara inseamna, pur si simplu, ca numeri pana la 1. Folosesti doar 0 si 1, adica 2 cifre.
Deci limbajul binar foloseste numaratoare binara.
In acest limbaj, nu poti avea o stare de "superpozitie" intre 0 si 1. Nu poti avea mai mult de doua cifre. Daca ar fi trei cifre, asta ar insemna deja alt sistem de calcul, probabil extraterestru, care foloseste ceva mult mai avansat decat cip-urile, care are programatori si proiectanti cu IQ de vreo 300.
Calculatoarele nu stiu 1, 2, 3. Calculatoarele nu stiu nici macar 1, 2. Calculatoarele nu pot "gandi" in mai mult de aceste doua cifre: 0 si 1. De ce? Pentru ca asa sunt construite. Pentru ca e vorba, de fapt, de curent si lipsa lui.
Cum poate fi limbajul binar practic daca foloseste doar 0 si 1?
Tranzistoarele din cip folosesc conceptul de "curent si lipsa lui", sunt legate intre ele sa formeze porti logice care creaza un sens folosind curentul electric din intrarile si iesirile din acestea inchise si deschise. Logica cu care functioneaza portile logice, cu care folosesc ele curentul sa creeze un sens, se numeste logica booleana, numita dupa George Boole care a inventat algebra booleana, bazata pe numaratoarea binara a lui Leibniz.
Algebra booleana
E un tip de matematica, care foloseste doar 0 si 1. Mai precis, e o matematica ce foloseste tabel de adevar (adevarat sau fals).
Operatiile astea se fac la nivel de BIT INDIVIDUAL, la nivel de porta logica. Nimeni nu programeaza un calculator din tastatura folosind algebra booleana, aceasta e folosita atunci cand sunt create, cand sunt proiectate cipurile, cand sunt modificate tipuri, structuri generale de chip-uri, de catre "dumnezeii" electronicii. Si cand zic asta, ma refer la modificari probabil seculare, pentru ca tehnica, logica binara e deja baza electronici. E tehnica cu care se proiecteaza portile logice din cipuri, cu care sunt legati tranzistorii intre ei. TOTUL din orice aparat electronic digital foloseste logica asta, iar sa zici ca modifici tehnica binara, e ca si cum ai zice ca reinventezi roata, ca descoperi o culoare noua. Practic reinventezi toata electronica daca poti sa modifici implementarea algebrei booleene.
Ca algebra booleana sa poata fi implementata si folosita, e nevoie de porti logice. Sunt ansabluri de tranzistori (dupa cum ai vazut mai sus). Din acest punct incepe electronica digitala si se face abstractie de tranzistor ca "tranzistor". Tranzistorul acum e doar componentul elementar, chestia care "colecteaza" curentul, caramida care nu are niciun scop fara zidul din care face parte.
Portile logice sunt cele de care se foloseste algebra booleana, deci acum pot fi facute instructiuni de baza, pe care sa se bazeze limbajele de programare.
Portile logice si tabelul de adevar al algebrei booleene:
|
CUM FUNCTIONEAZA TRANZISTORII? Videoclipul nu e in romana, dar esenta se intelege. |
Bun, si cum s-au facut limbajele de programare?
Inainte, curentul din tranzistoare se controla cu fire fizice, osciloscoape si multimetre, erau proiectate din start pe placa sa functioneaze in felul in care voia programatorul, nu aveai nevoie de tastatura si consola. Curentul era programat sa fie ghidat catre niste beculete. Primele calculatoare aratau rezultatele cu beculetele.
Apoi, s-au micsorat (relativ) si numarul de tranzistori din ele a crescut, si astfel atatea combinatii de biti se puteau face pana s-a ajuns sa fie create comenzi text, adica impulsurile electrice erau interpretate ca litere pe ecran, deci in loc sa arate rezultatele prin beculete, le aratau pe ecran (o litera e echivalentul a 16 beculete). Apoi, cu aceste litere s-au creat comenzi, care sa controleze alte cipuri, alte impulsuri electrice. Cu acele comenzi s-au creat alte comenzi si astfel a aparut primult limbaj de programare, Assembly.
Un program, e la radacinile lui, o colectie imensa de ordornari de stari electrice binare (0 si 1), deci de biti.
Un program, e la radacinile lui, o colectie imensa de ordornari de stari electrice binare (0 si 1), deci de biti.
Un procesor modern e facut din grupuri de grupuri de grupuri de grupuri de grupuri de tranzistoare, care fac ceva extrem de complex (da, deoarece altfel n-ai putea sa vezi pagina asta sau sa asculti muzica). Deci inauntrul procesorul arata asa:
Pozele astea au fost facute la microscop. Toate patratelele si cadrele pe care le vezi acolo sunt grupuri specializate de tranzistori.
Bitii fac totul in calculator. Fac sa apara culori, litere si sunete. Cum fac asta? Sa iti dau ca exemplu o poza. Doi biti inseamna 1 si 0. Deci alb si negru (adica lumina pornita si oprita). La trei biti intervine alta culoare (mai bine zis alta frecventa pentru monitor). Deci alt fir care ii spune placii video sa foloseasca inca o culoare. La fel si cu sunetul, doar ca aici nu-i vorba de culori ci forme ale aerului (unde sonore), forme care sunt controlate de difuzor pentru ca primeste impulsuri diferite de curent, care creaza frecvente, vibratii specifice.
Totul se petrece de fapt in constiinta noastra (.....sau in holofield-ul lui Bohm....) iar calculatorul aranjeaza asta prin manifestari diferite ale electricitatii.
“He who understands the Principle of Vibration, has grasped the Sceptre of Power” - The Kybalion
Ca sa intelegei si mai bine cum sta treaba, cititi aici mai multe despre biti.
Bitii fac totul in calculator. Fac sa apara culori, litere si sunete. Cum fac asta? Sa iti dau ca exemplu o poza. Doi biti inseamna 1 si 0. Deci alb si negru (adica lumina pornita si oprita). La trei biti intervine alta culoare (mai bine zis alta frecventa pentru monitor). Deci alt fir care ii spune placii video sa foloseasca inca o culoare. La fel si cu sunetul, doar ca aici nu-i vorba de culori ci forme ale aerului (unde sonore), forme care sunt controlate de difuzor pentru ca primeste impulsuri diferite de curent, care creaza frecvente, vibratii specifice.
Totul se petrece de fapt in constiinta noastra (.....sau in holofield-ul lui Bohm....) iar calculatorul aranjeaza asta prin manifestari diferite ale electricitatii.
“He who understands the Principle of Vibration, has grasped the Sceptre of Power” - The Kybalion
Ca sa intelegei si mai bine cum sta treaba, cititi aici mai multe despre biti.