NOVINKA: Kurz kybernetickej bezpečnosti teraz už od 0 €. Staň sa žiadaným profesionálom. Zisti viac:
NOVINKA: Staň sa dátovým analytikom od 0 € a získaj istotu práce, lepší plat a nové kariérne možnosti. Viac informácií:

1. diel - Úvod do Pythonu

Vitajte pri prvej lekcii populárneho online kurzu programovacieho jazyka Python. Programovať sa budeme učiť postupne od úplných základov 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.

Kurz reflektuje moderný prístup k programovaniu, ktorého súčasťou sú aj AI nástroje. Ukážeme si, ako ich pri vývoji využívať ako praktických pomocníkov pri hľadaní riešení, vysvetľovaní chýb aj písaní kódu. Pamätajme, že AI nie je náhrada za vlastné premýšľanie, je to podpora, ktorá pomáha pracovať efektívnejšie.

Fialové AI boxy v kurze obsahujú doplňujúce tipy a ukážky práce s AI. Nemusíte si ich pamätať, majú vám hlavne pomôcť lepšie pochopiť, ako AI pri programovaní využiť.

Kompletné kurzy programovania v Pythone - Základné konštrukcie 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, pozrime 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, ktorý sčíta 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štrukcie jazyka Python

2. generácia jazykov – Assembler

Assembler (skrátene ASM) nie je o nič jednoduchší ako strojový kód, ale je ľudsky čitateľný.

Maskot Richie - Základné konštrukcie jazyka Python

Ahoj, ja som Richie, maskot ITnetwork. Nižšie sa nachádza prvá "informácia navyše" v tomto kurze. Ak študuješ kurz cez Úrad práce a máš naň obmedzený čas (pracuješ, máš rodinu), tieto informácie preskoč. Nijako to neovplyvní tvoju úspešnosť na skúške, môžeš si ich v pokoji prečítať neskôr. Naopak, ak máš dostatok času, tieto praktické informácie si rozklikni. Ak lekciu počúvaš ako prednášku, zaškrtni alebo odškrtni možnosť Čítať informácie navyše.

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 nezainteresovaní ľ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 dvoch 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č (kompilátor), ktorý preloží naraz celý program do stroj. kódu:

Kompilácie - Základné konštrukcie jazyka Python

Hlavnou výhodou kompilácie je rýchlosť výsledného programu, ktorý beží podobne rýchlo ako program v strojovom kóde. Naopak nevýhodou je neprenositeľnosť programu. Nemôžeme program skompilovaný pre Windows spustiť na macOS.

Ak vás zaujímajú konkrétne výhody a nevýhody kompilácie bližšie, zhrňme si ich nižšie.

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ť, ak zároveň nevlastníte jeho zdrojový kód.
  • Jednoduché odhalenie chýb v zdrojovom kóde – Ak zdrojový kód obsahuje chybu, celý proces kompilácie spadne. Kompilátor programátorovi potom oznámi, čo 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. Interpreter funguje podobne ako kompilátor, 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. Kompilátor/pre­kladač preloží rozhovor celý naraz a potom ho celý prečíta.) Môžeme si predstaviť, že vyššie uvedený zdrojový kód by interpreter čí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štrukcie jazyka Python

Hlavnou výhodou je prenositeľnosť medzi operačnými systémami a procesormi, ten istý program môžeme spustiť na macOS, Windows alebo Android. Interpretované jazyky sú tiež typicky jednoduchšie. Nevýhodou je potom nižšia rýchlosť programu.

Ak vás zaujímajú konkrétne výhody a nevýhody interpretácie bližšie, zhrňme si ich nižšie.

Výhody interpretera

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

  • Prenositeľnosť – Program je plne prenositeľný. Pokiaľ existuje interpreter pre danú platformu, bude sa tam dať zdrojový kód programu spustiť (a vývoj interpretera je jednoduchší ako vývoj kompilátora).
  • Jednoduchší vývoj – Vo vyšších jazykoch sme odbremenení od správy pamäte, ktorú za nás robí tzv. garbage collector. Často tiež nemusíme ani zadávať dátové typy a máme k dispozícii vysoko komfortné kolekcie a ďalšie štruktúry.
  • Stabilita – Vďaka tomu, že interpreter 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 interpretera

Interpreter 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.

Prístupy kompilátora a interpretera je možné spojiť a na tomto princípe fungujú jazyky s tzv. virtuálnym strojom. Python však nie je jedným z nich. Ak vás táto problematika zaujala, môžete sa pozrieť na princípy fungovania jazyka Java.

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 sa môžu stretnúť s dvoma hlavnými verziami Pythonu:

  • Python 2
  • Python 3

Vývojári pre Python 3 pozmenili 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 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 Python je a na čo sa používa.

Zhrnutie lekcie

Python je moderný programovací jazyk, v ktorom sa budeme učiť od úplných základov až po pokročilejšie témy, ako sú objekty, databázy alebo webové aplikácie. Programovacie jazyky sa vyvíjali od strojového kódu cez assembler až k čitateľnejším jazykom tretej generácie. Python patrí medzi interpretované jazyky, takže sa jeho kód spracováva až pri behu programu. Vďaka tomu je prenositeľný a pohodlný na vývoj, ale býva pomalší a niektoré chyby sa môžu prejaviť až pri spustení.

V nasledujúcej lekcii, Využitie umelej inteligencie pri štúdiu programovania, sa pozrieme na využitie umelej inteligencie pri štúdiu programovania.


 

Všetky články v sekcii
Základné konštrukcie jazyka Python
Preskočiť článok
(neodporúčame)
Využitie umelej inteligencie pri štúdiu programovania
Článok pre vás napísal gcx11
Avatar
Užívateľské hodnotenie:
338 hlasov
(^_^)
Aktivity