IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

1. diel - Úvod do Pythona

Vitajte pri prvom tutoriáli populárneho on-line kurzu programovacieho jazyka Python. Programovať sa budeme učiť postupne od úplných začiatkov až po zložité konštrukcie a objektové modely. Ďalej sa naučíme pracovať s databázou a vyvíjať webové aplikácie. S trochou trpezlivosti a vytrvalosti sa z teba stane dobrý programátor.

Kompletné kurzy programovania v Pythone - Základná konštrukcia jazyka Python

Minimálne požiadavky kurzu

Na tento kurz nepotrebujete žiadne špeciálne znalosti, stačí bežná práca s počítačom 🙂

Vývoj programovacích jazykov

Aby sme plne porozumeli jazyku Python, obzrieme sa do minulosti na to, ako sa programovacie jazyky vyvíjali. Bude pre nás dôležité pochopiť, ako Python pracuje a prečo je dobré programovať práve v tomto jazyku.

1. generácia jazykov – Strojový kód

Procesor počítača vie vykonávať len obmedzené množstvo jednoduchých inštrukcií, ktoré sú uložené ako sekvencie bitov, sú to teda čísla. Tie sa mu obvykle zadávajú v hexadecimálnej (šestnástkovej) sústave. Inštrukcie sú tak elementárne, že umožňujú iba napr. sčítanie adries alebo skoky medzi inštrukciami. Nie je možné napr. jednoducho sčítať dve čísla, musíme sa na čísla pozerať ako na adresy v pamäti a také sčítanie čísel zaberie niekoľko inštrukcií. Program sčítajúci dve čísla by vyzeral napr. takto:

2104
1105
3106
7001
0053
FFFE
0000

Inštrukcie sa procesoru predložia v binárnej podobe. Takýto kód je samozrejme extrémne nečitateľný a závisí od inštrukčnej sady daného CPU. V tomto jazyku určite nebude jednoduché tvoriť nejaké programy. Platí, že každý program musí byť nakoniec do tohto jazyka preložený, aby mohol byť na procesore počítača spustený:

Strojový kód a procesor - Základná konštrukcia jazyka Python

2. generácia jazykov – Assembler

Assembler (skrátene ASM) nie je o nič jednoduchšie ako strojový kód, ale je ľudsky čitateľný. Ide o strojový kód, v ktorom majú inštrukcie slovné označenie (kód), človek si teda nemusí pamätať čísla. Kódy inštrukcií sa potom preložia do vyššie uvedeného strojového kódu. Rovnaký program by v ASM vyzeral takto:

ORG 100
LDA A
ADD B
STA C
HLT
DEC 83
DEC –2
DEC 0
END

Vidíme, že podoba je trochu ľudskejšia, ale nezasvätení ľudia stále vôbec netušia, ako program funguje (vrátane mňa).

3. generácia jazykov

Jazyky v tretej generácii konečne ponúkajú užívateľovi určitú abstrakciu toho, ako program vidí počítač. Zameriavajú sa totiž na to, ako program vidí človek. Naše čísla sú už vnímané ako premenné a zdrojový kód pripomína matematický zápis.

Sčítanie dvoch čísel by v jazyku C vyzeralo takto:

int main(void)
{
    int a, b, sum;
    a = 83;
    b = -2;
    sum = a + b;
    return 0;
}

Všetci asi tušíme, čo program robí: spočíta čísla 83 a -2 a výsledok uloží do premennej sum. Pri všetkých jazykoch tretej generácie je samozrejme výhodou vysoká čitateľnosť.

S ďalším vývojom išli jazyky ešte ďalej a priniesli objektovo orientované programovanie, ale o tom až neskôr.

Kategórie jazykov

Jazyky tretej generácie môžeme v zásade rozdeliť do troch kategórií.

1. Kompilované jazyky

Kompilované (neriadené) jazyky majú svoj zdrojový kód zapísaný v jazyku, ktorému ľudia dobre rozumejú. Zdrojový kód sa samozrejme musí preložiť do strojového kódu, aby ho bolo možné spustiť na procesore. Tento preklad zaisťuje prekladač (kompiler), ktorý preloží naraz celý program do stroj. kódu:

Kompilácie - Základná konštrukcia jazyka Python

Výhody kompilácie

Medzi hlavné výhody kompilácie patria:

  • Rýchlosť – Jediné spomalenie spočíva v jednorazovej kompilácii. Preložený program potom beží porovnateľne rýchlo, ako keby bol napísaný napr. v ASM.
  • Neprístupnosť zdroj. kódu – Program sa šíri už skompilovaný. Nie je ho teda možné jednoducho modifikovať, pokiaľ zároveň nevlastníte jeho zdrojový kód.
  • Jednoduché odhalenie chýb vo zdrojovom kódu – Ak zdrojový kód obsahuje chybu, celý proces kompilácie spadne. Kompilátor programátorovi potom oznámi, čo mu spôsobilo problém. To značne zjednodušuje vývoj.

Nevýhody kompilácie

Kompilácia so sebou samozrejme prináša niekoľko nevýhod:

  • Závislosť na platforme – Program je úplne závislý na platforme, teda na type procesora a operačnom systéme. Nemôžeme vziať skompilovaný program a preniesť ho na inú platformu bez toho, aby sme ho skompilovali na tejto novej platforme.
  • Nemožnosť editácie – Akonáhle sa program raz skompiluje do strojového kódu, nemožno ho editovať inak ako opätovnou kompiláciou.
  • Memory management – Vzhľadom na to, že počítač danému programu nerozumie a len mechanicky vykonáva inštrukcie, môžeme sa niekedy stretnúť s veľmi nepríjemnými chybami s pretečením pamäte. Kompilované jazyky nemusia mať automatickú správu pamäte a sú to jazyky nižšie (s nižším komfortom pre programátora). Behové chyby spôsobené najmä zlou správou pamäte sa kompiláciou neodhalia.

Príkladom kompilovaných jazykov sú napr. jazyk C, jeho objektový následník C++ alebo Pascal / Delphi.

2. Interpretované jazyky

Interpretácia sa snaží riešiť problém prenosnosti programov medzi rôznymi platformami. Prichádza tiež s vyšším komfortom pre programátora. Interpret funguje podobne ako kompiler, len neprekladá program celý naraz, ale iba to, čo je v danej chvíli potrebné. (Interpreter znamená v angličtine tlmočník, teda najskôr vypočuje jednu vetu hovorcu a tú potom preloží a vysloví. Preklad prebieha počas príhovoru, teda behu programu, po vetách/inštruk­ciách. Kompiler/prekladač preloží rozhovor celý naraz a potom ho celý prečíta.) Môžeme si predstaviť, že vyššie uvedený zdrojový kód by interpret čítal po jednotlivých riadkoch, tú časť by vždy skompiloval do strojového kódu a vykonal. Výsledok kompilácie by zahodil a presunul by sa na ďalší riadok. Možno vám to pripadá ako plytvanie výkonom procesora a je pravda, že tento spôsob behu programu tiež nie je práve najrýchlejší:

Interpret - Základná konštrukcia jazyka Python

Výhody interpretu

Aké môže mať teda tento postup výhody ? Je ich hneď niekoľko:

  • Prenositeľnosť – Program je plne prenositeľný. Pokiaľ existuje interpret pre danú platformu, pôjde tam zdrojový kód programu spustiť (a vývoj interpretu je jednoduchší ako vývoj kompilátora).
  • Jednoduchší vývoj – Vo vyšších jazykoch sme odtienení od správy pamäte, ktorú za nás robí tzv. garbage collector. Často ani nemusíme zadávať dátové typy. Máme tiež k dispozícii vysoko komfortné kolekcie a ďalšie štruktúry.
  • Stabilita – Vďaka tomu, že interpret kódu rozumie, predíde chybám, ktoré by skompilovaný program inak pokojne vykonal. Beh interpretovaných programov je teda určite bezpečnejší. Umožňuje tiež zaujímavú vlastnosť, tzv. reflexiu, kedy program za behu skúma sám seba (o tom si tiež povieme neskôr).
  • Jednoduchá editácia – Program môžeme vyvíjať po častiach a nahrávať na cieľové umiestnenie. Vďaka tomu, že sa nemusí kompilovať, ho môžeme jednoducho editovať „za behu“.

Nevýhody interpretu

Interpret má však tri zásadné nevýhody:

  • Rýchlosť – Interpretácia môže byť často veľmi pomalá a program tak plne nevyužíva výkon počítača.
  • Často ťažké hľadanie chýb – Kvôli kompilácii za behu sa chyby v kóde objavia, až keď je kód spustený. To môže byť niekedy veľmi nepríjemné.
  • Zraniteľnosť – Pretože sa program šíri v podobe zdrojového kódu, každý do neho môže zasahovať, alebo dokonca kradnúť jeho časti.

Príkladom interpretovaného jazyka je práve Python alebo napr. PHP.

3. Jazyky s virtuálnym strojom

Napadlo vás, čo by sa stalo, keby sa oba dva vyššie spomenuté spôsoby spojili? Ak áno, gratulujem, vynašli ste virtuálny stroj. Jedná sa o najmodernejšiu podobu jazyka, ktorá je v súčasnej dobe tiež najrozšírenejšou a najlepšou voľbou pre vývoj väčšiny aplikácií. Do tejto kategórie patrí napríklad Java alebo C#.

Zdrojový kód je najskôr preložený do tzv. medzikódu. Ide v podstate o strojový (binárny) kód, ktorý má ale o poznanie jednoduchšiu inštrukčnú sadu a priamo podporuje objektové programovanie. Tento medzikód je potom vďaka jednoduchosti relatívne rýchlo interpretovateľný tzv. virtuálnym strojom. Výsledkom je strojový kód pre náš procesor:

Virtuálny stroj - Základná konštrukcia jazyka Python

Výhody virtuálneho stroja

Určite ste trochu vydesení, ale verte, že sme v podstate odstránili nevýhody interpretu i kompilera a môžeme využívať mnohé z ich výhod:

  • Odhalenie chýb v zdrojovom kóde – Vďaka kompilácii do medzikódu jednoducho odhalíme chyby v zdrojovom kóde.
  • Stabilita – Vďaka tomu, že interpret kódu rozumie, zastaví nás pred vykonaním nebezpečnej operácie a na chybu upozorní. Môžeme tiež vykonávať reflexiu (aj keď pre medzikód, ale od toho sme väčšinou odtienení).
  • Jednoduchý vývoj – Máme k dispozícii hi-tech dátové štruktúry a knižnice, správu pamäte za nás vykonáva garbage collector.
  • Slušná rýchlosť – Rýchlosť sa pri virtuálnom stroji pohybuje medzi interpretom a kompilerom. Virtuálny stroj už výsledky svojej práce po použití nezahadzuje, ale dokáže ich cachovať, sám sa teda optimalizuje pri početnejších výpočtoch a môže dosahovať až rýchlosť kompilera. Štart programu býva pomalší, pretože stroj prekladá spoločne využívané knižnice.
  • Málo zraniteľný kód – Aplikácia sa šíri ako zdrojový kód v medzikóde, nie je teda úplne jednoducho ľudsky čitateľná.
  • Prenositeľnosť – Asi je jasné, že hotový program pobeží na každom železe, na ktorom sa nachádza virtuálny stroj.

Python

Python je dynamicky interpretovaný jazyk, kód sa teda prekladá až za behu, čím sa prípadné chyby prejavia až pri spustení. Výhodou je, že jazyk je vďaka tomuto prístupu jednoduchší.

Python 2 a 3

Začiatočníkom môže pripadať mätúce, že existujú dve podporované verzie Pythona:

  • Python 2
  • Python 3

Vývojári pozmenili pre Python 3 syntax. Asi najväčším rozdielom v tejto verzii je používanie zátvoriek pri volaní funkcií. Táto zmena spôsobila, že mnoho užívateľov zostalo pri verzii 2. Existuje preto mnoho knižníc napísaných pre Python 2, ktoré stále čakajú na portovanie do Pythonu 3.

Python verzia 3 je však modernejší! V predvolenom nastavení používa Unicode a obsahuje mnoho ďalších vylepšení. Často sa odporúča začať práve s Pythonom 3. Vracať sa k verzii 2 má zmysel snáď len kvôli nutnosti použiť z nejakého dôvodu platformu alebo knižnice dostupné iba pre Python 2.

Teraz vieme, čo to Python je a na čo sa používa.

V budúcej lekcii, PyCharm a prvá konzolová aplikácia v Pythone, si ukážeme prácu s prostredím PyCharm a vytvoríme si svoj prvý program.


 

Všetky články v sekcii
Základná konštrukcia jazyka Python
Preskočiť článok
(neodporúčame)
PyCharm a prvá konzolová aplikácia v Pythone
Článok pre vás napísal gcx11
Avatar
Užívateľské hodnotenie:
108 hlasov
(^_^)
Aktivity