недеља, 26. август 2018.

Uvod u Python programski jezik


Verovatno se svi posetioci moga bloga pitaju, šta je sad ovo; pa ti si C# programer; otkud baš sad da se interesuješ za Python programski jezik. Izgleda da u poslovnom svetu poznavanje jednog programskog jezika nije odavno dovoljno. Ako pogledate autore mnogih informatičkih knjiga, uočićete da iza njih stoji poznavanje mnogih programski jezika. Prvo je krenulo od toga da sam se zainteresovao za Visual Studio Code i .Net Core, ali to je probudilo neka moja prijatna sećanja kad sam se bavio hakerisanjem i Linux operativnim sistemima. Zato sam izbrisao celi hard disk sa svog novog laptopa koji je imao instaliran Windows 10 Professional operativan sistem i umesto njega instalirao Kali Linux. Tada mi se otvorio celi novi svet radoznalosti i novi mogućnosti. Naravno, to ne znači da se odričem C# programskog jezika, ostalo je još mnogo toga da se nauči i odradi na ovom blogu, ali vreme je i da se okrenemo drugim programskim jezicima. Ali zašto baš Python programski jezik? Bavićemo se mi i drugim programskim jezicima; ali na Python sam naleteo tražeći programski jezik koji se najčešće koristi na Linux operativnim sistemima. Onda sam otkrio nešto o čemu nisam ni sanjao. Sintaksa i lakoća učenja Python programskog jezika; čak i na spram C# programskog jezika je neverovatna. Python programski jezik se najviše uči u mnogim američkim školama, često je proglašavan omiljenim programskim jezikom godine, koriste ga mnoge svetske kompanije poput Facebook, Samsung, Google, YouTube, Yahoo i druge. Sa Python programskim jezikom jednostavno možete automatizovati mnoge poslove, koristi se i za desktop i za Internet aplikacije dok snjime možete programirati i robote ili ga koristiti zajedno sa drugim programskim jezicima. Bitno je navesti da je on besplatan i da za ovaj programski jezik nisu potrebne nikakve licence.  


( Naziv Python programskog jezika je nastao od Monty Python aktera ) 

Za razliku od C# programskog jezika, Python programski jezik je programski jezik visokog nivoa koji se interpretira. To u prevodu znači da se ne pretvara u mašinski kod i zbog toga radi nešto sporije i ne sakriva vaš kod. Međutim, postoje alati koji mogu vaš program pisan u Python programskom jeziku kompajlirati u bitove i otkloniti ove nedostatke ako vam je baš to neophodno. Autor ovog programskog jezika je Gvido van Rosum iz Holandije koji ga je kreirao još krajem 80-tihPython programski jezik podržava imperativni, objektno orjentisani stil programiranja i isporučuje se interpretatorom i veoma razvijenom standardnom bibliotekom modula. Podržava skoro sve operativne sisteme; u većini Linux operativni sistema dolazi instaliran, možete odmah da programirate u terminalu i trenutno aktuelna verzija je 3.7. Velika je razlika i nekompatibilnost između verzije 3.7 i 2.7 i zato se potrudite da uvek imate instaliranu 3.x verziju. Za učenje Python programskog jezika možete da koristite mnogo programskih okruženja jer je izuzetno podržan dok vaše programe možete pisati i u bilo kojem tekstualnom editoru. Izbor je samo na vama. Naziv Python za ovaj programski jezik ne potiče od naziva zmije, već od grupe Monty Python; aktere istoimene britanske humorističke serije. Zato Python programere često nazivaju Pythonistas.  

Šta da instaliram da bi programirao u Python programskom jeziku?

Prva stvar, čestitamo ukoliko ste doneli odluku da se upustite u učenje Python programskog jezika. Ukoliko ste u mogućnosti, najbolje bi bilo da koristite Linux operativni sistem; međutim ukoliko nemate nameru da se bavite i Linux operativnim sistemom, onda je instalacija Python programskog jezika za Windows operativni sistem jednostavnija. Jednostavno posetite zvaničnu prezentaciju Python programskog jezika ovde; skinite instalacioni fajl i instalirajte Python 3.7 za Windows operativni sistem. Jednostavna instalacija će odraditi sve za vas. Posle jednostavno možete koristiti IDLE ( Python 3.7 32-bit) ili isti za 64-bit; ili jednostavno otvorite Command Prompt i ukucajte Python; i spremni ste za programiranje.


( IDLE (Python 3.7 32-bit) instaliran na Windows 10 Professional )

Međutim, ukoliko ste se odlučili da koristite i Linux operativni sistem, onda su tu stvari nešto komplikovanije. U zavisnosti koju distribuciju Linux operativnog sistema koristite, prvo proverite šta već imate instalirano. Najbolje pogledajte sledeći video. Ja koristim Kali Linux distribuciju, ali postupak je verovatno sličan i za druge Linux distribucije. Ukoliko i vi želite da instalirate hakersku Kali Linux distribuciju na vaš laptop; pogledajte prvo ovaj video; zatim sledeći.


( Linux - 6. How to Install PyCharm Community Edition to Kali Linux )

Mogu li ja kao C# programer da programiram sa Python programskim jezikom u VS ili VSC?

Razumljivo je da kao C# programer ste vezani za Microsoft Visual Studio .Net programsko okruženje. I meni je teško i zamisliti neko drugo. Ali moja želja za promenama i radoznalost smatraju da je PyCharmKali Linux jako interesantno okruženje za Python programiranje. Naravno, najlakše je podesiti Python za Microsoft Visual Studio .Net programsko okruženje. Jednostavno, otvorite Control Panel, zatim Programs and Features, kliknete desnim tasterom miša na Microsoft Visual Studio Community 2017; ili već koju ediciju posedujete. Kliknite u padajućem meniju Change i pokrenete Visual Studio Instaler. Da bi se isti pokrenuo, tražiće od vas da uradite Update. Kliknite na dugme Update; čekirajte Python development i sa vaše desne strane izaberite opcije koje želite da uključite u Python programski jezik. Kliknite na dugme Modify i sačekajte da se sve instalira i možete koristiti Microsoft Visual Studio .Net  da programirate u Python programskom jeziku. Prilikom kreiranja Python aplikacija, Microsoft Visual Studio .Net će vam ponuditi mnoge Python šablone.


( Instalacija Python-a u Microsoft Visual Studio .Net okruženju )

Što se tiče Visual Studio Code-a, instalacija je malo komplikovanija. Pretpostavljam ako koristite Visual Studio Code da ga imate instaliranog na vašem Linux operativnom sistemu. Ukoliko ga još niste instalirali, da bi ste sebe poštedeli velikih problema i vremena najbolje pogledajte ovaj video. Ukoliko imate instaliran Visual Studio Code, možete pogledati sledeći video kako se podešava Python u Visual Studio Code  programskom okruženju.


( Linux - 8. How to Set up Python in Visual Studio Code )

Pravimo naš prvi program u Python-u

Ukoliko ste doneli odluku u kom programskom okruženju ćete učiti Python programski jezik i ukoliko ste instalirali i podesili sve što vam je potrebno za programiranje možemo početi. Imajte u vidu da ja koristim PyCharm i Kali Linux distribuciju i nadam se da će te se prilagoditi drugačijem okruženju od vašeg, iako bi ja voleo da koristite isto. Sve u svemu kod je isti. Vi možete odmah i u terminalu ili Command Prompt-u  pisati i izvršavati Python komande, na primer:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 3 + 7 * 12
87
>>> 

Međutim, ja želim da sačuvate vaše programe, da možete uvek da se podsetite nekog primera kad vam je potreban ili jednostavno da pronađete ovaj post na blogu kada vaši primeri vam nisu pri ruci. Zato kreirajte novi fajl sa egzistencijom *.py i nazovite ga first_program.py. Uobičajena je praksa kada pravite Python programe da napišete naziv vašeg programa, autora i datum kad ste započeli projekat. Ponekad programeri ostavljaju i svoju email adresu u slučaju da je potrebno kontaktirati autora. Zato naš program započinjemo multi-linijskim komentarom.

""" first_program
       Manuel Radovanovic
       26-avg-2018 """

Naravno ovde treba da bude vaše ime i posebno obratite pažnju da u datumu koristite slova u mesecu da nebi dolazilo do zabune. Ovakav datum 08/05/18  bi mogao zbuniti programere koji će posle vas održavati vašu aplikaciju jer se ne zna da li je ovo 8 maj 2018 ili 5 avgust 2018. Često možete videti da programeri sve više pišu datume i na ovakav način 2018-08-05. Možete vi pogledati i vaš fajl kad je kreiran i od koga i kako se zove u terminalu, kao što možete i automatizovati da se ovakav komentar uvek sam ispiše prilikom kreiranja svakog  novog *.py fajla. Ali zato stvarno nema potrebe, već sledite praksu. Napišite sledeći multi-linijski komentar:

""" This is multi-line comment.
       Python developers use rarely multi-line comments.
       Python always ignore space and the comment lines. """
  
Na osnovu ovog komentara možete zaključiti da se multi-linijski komentari prave sa tri navodnika “““ i sa istim se završavaju. Python u svakom slučaju ignoriše komentare ali i sav prazan prostor između komandi. Komentar možete da napišete i ovako:

' this can use for comment but I do not recommend it. '

ili

" this can use for comment but I don't recommend it too. "

U svakom slučaju ovo vam ne preporučujem jer i pored toga što će Python ignorisati ovakav red, komentarisanje na ovakav način će definitivno zbuniti programere jer asociraju na string vrednost. Možete pomisliti, pa šta to je samo neki mali bez veze programčić, ali treba da se učite disciplini od početka jer možete imati velike komplikacije kada budete radili sa hiljadama linija koda. Sticanje odličnih navika je velika propozicija za uspeh. Ovo je pravilan način da pišete komentar i njega će te najčešće susretati:

# this is the most used way to comment

Sad kad ste naučili kako se pišu komentari u Python programskom jeziku, možete videti kako se nešto štampa na konzoli ili terminalu. Otkucajte sledeći izraz:

# print some strings
print('This is my first application in Python.')

Znači za ispis stringova na konzoli ili terminalu se koristi naredba print sa zagradama i polunavodnicima . U ranijim verzijama Python programskog jezika vam nisu bile potrebne male zagrade ali sada je to obavezno. Takođe za ispis na konzolu ili terminal stringova možete koristiti i navodnike .

# you can use and "" instead of '' too
print("I'm so excited to learn a new programming language.")

Možete pokrenuti vaš program i videti kako to izgleda:

This is my first application in Python.
I'm so excited to learn a new programming language.

Da bi vaši programi bili pregledni morate se pobrinuti za njihovu čitljivost. To se postiže umetanjem praznog reda gde ima logike da prazan red stoji. Unesite sledeći kod:

# make empty line
print()

Videli smo kako se stringovi ispisuju na ekran, ali pogledajmo sada kako se uzima neki unos od korisnika tipa string:

# take some string input from user
print('What is your first name?')
fname = input() # you don't declare variables in Python, but only defined it

Kao što vidite komentar može da stoji i sa desne strane nekog izraza. Ali ono što je ovde još interesantno mi uopšte nismo ni deklarisali promenjivu, što ne biste mogli uraditi u C# i mnogim drugim programskim jezicima. Znači u Python programskom jeziku se promenjive ne deklarišu ali se moraju definisati, što znači uvek se mora dodeliti neka vrednost promenjivoj ili će izazvati grešku. Unesite sledeće izraze takođe:

print('What is your last name?')
lname = input() # Python is case-sensitive language

Ovde obratite pažnju da je Python case-sensitive programski jezik što znači da fname ili fName ili FNAME ili FName ili Fname nisu ista promenjiva. Sve su različite jer Python  razlikuje mala i velika slova.  

Pogledajmo sada kako se spajaju dve string promenjive:

# tie two strings together
name = fname + ' ' + lname

# print the string variable
print()
print('Nice to meet you ' + name + '.')
  
Pokrenite sada aplikaciju da vidite kako izgleda. Vaši rezultati će zavisiti od vašeg unosa podataka.

This is my first application in Python.
I'm so excited to learn a new programming language.

What is your first name?
Manuel
What is your last name?
Radovanovic

Nice to meet you Manuel Radovanovic.

Kao što možete pretpostaviti, string promenjiva ima svoje string metode i za razliku od C# programskog jezika; ima ih mnogo više. Otkucajte sledeći kod i obratite pažnju na string metodu len koja je tipa integer i vraća broj karaktera u stringu. Druga metoda str pretvara bilo koji broj u string. U Python programskom jeziku nije potrebno da broj pretvarate u string da bi se ispisao na ekranu izuzev ako nameravate da mu dodajete druge string karaktere kao što je ovde slučaj:

# use some string method in Python
print()
print('Your first name has ' + str(len(fname)) + ' characters.')
print('Your last name has ' + str(len(lname)) + ' characters.')

# adds integer values
characters = len(fname) + len(lname)

# print integer value
print('Your full name has ' + str(characters) + ' charaters.')

Pokrenite ponovo program i proverite kako ovo sabiranje funkcioniše.

This is my first application in Python.
I'm so excited to learn a new programming language.

What is your first name?
Manuel
What is your last name?
Radovanovic

Nice to meet you Manuel Radovanovic.

Your first name has 6 characters.
Your last name has 11 characters.
Your full name has 17 charaters.

Završimo ovaj program sa još jednom bitnom karakteristikom, a to je kako da pretvorimo string u integer ili pogledajte kako se uzima podatak od korisnika da umesto string bude integer koji se kasnije koristi u računskim operacijama. Upišite sledeći kod i završite program.

# take some integer from user
print()
byear = int(input('What year you were born? '))

# count ages
byear = 2018 - byear

# print integer value
print()
print('You had about ' + str(byear) + ' years when you wrote this program.')

Kao što vidite string se pretvara u integer funkcijom int. Ovo su najosnovnije stvari u Python programskom jeziku. Samo sa jednim malim programom naučili ste mnogo stvari u Python-u . Pokušajte ovaj isti kod ispisati u C# programskom jeziku i videćete sami koja je razlika. Pokrenite vaš program i rezultati bi trebali biti slični zbog različitog unosa podataka.

This is my first application in Python.
I'm so excited to learn a new programming language.

What is your first name?
Manuel
What is your last name?
Radovanovic

Nice to meet you Manuel Radovanovic.

Your first name has 6 characters.
Your last name has 11 characters.
Your full name has 17 charaters.

What year you were born? 1975

You had about 43 years when you wrote this program.

Kako se ovaj mali program kreirao možete pogledati i na video.


( Python - 1. Create Your First Program in Python )