Izbor uređivača teksta (Editora)

5.2 Izbor uređivača teksta (Editora) 

Problem: Uh, evo, izigrao sam se, ali, mogu ti priznati da je ovo veliki smor! Ja samo kucam neke gluposti, ovaj tvoj „interreaktivni trompt“ odgovori i... Zar je to to? Evo, zatvorio sam prozor i, ajd objasni mi – gde je to što sam kucao, ha? Ti TO nazivaš programiranje?
Odgovor: Naravno da TO ne zovem programiranjem! To nazivam prvim koracima ka programiranju! I, donekle si u pravu - ne možeš (a još manje želiš) da pišeš neki program u interaktivni prompt svaki put kada želiš da ga pokrenš, to bi naprosto bilo suludo. Zamisli kada bi svi morali da pišu i kuckaju pola dana da bi otvorili neku stranicu na internetu, a zatim još pola dana kako bi otvorili neku drugu.... Navika je da korisnik klikne na prečicu ili pokrene iz terminala neki program, i da zatim on radi nešto, prikaže nešto ili šta već.
Zbog toga bi bilo pametno da svoj program sačuvamo u datoteci (fajlu, ako ti je lakše da shvatiš šta sam rekao) kako bi mogao da ga pokrećem neograničeni broj puta. 
I sad kreće priča koja je najmanje vezana za Python i programiranje, više bi se mogla svesti pod pojam „opšta kultura“. 
Da ne bih ulazio preterano u neke tehničke detalje, a da bi objasnio neke stvari, moram malo da spustim loptu na zemlju i deganžiram je visoko, visoko (eh... s***e, ode preko prečke...).
Tvoj računar je kao neko malo dete. Ne vidi svet onako kako ga ti vidiš, već vidi svet onako kako mu je to – neko kazao. Ako se sećaš objašnjenja da računar razume samo brojeve 0 i 1 (ako se ne sećaš, vrati se malo unazad), možda se pitaš kako mu je „neko kazao“? Pa jednostavno, sve što mu je neko kazao se nalazi u fajlovima (datotekama) . I ne samo to – računar ceo svet „vidi“ kao te fajlove i datoteke! Tvoja kamera – za računar je datoteka, slika je – datoteka, film je datoteka, hard disk je – datoteka, miš, tastatura – pogodi šta je? Pa, obična datoteka!
Kada pališ računar (jadnik se budi iz sna, i prvi zrak sunca mu obasja lice, ovaj.... bolje rečeno, pustiš mu malko struju u krevet :P ) prvo mesto na koje, onako bunovan, pogleda je – aha ova datoteka mi govori gde mi je glava, (ups, opet ja, ovaj htedoh reći...) gde mi je operativni sistem, zatim prateći smernicu iz te datoteke ode do druge, koja mu kaže – aha, evo, ovde ti je grafička karta, monitor, ovde ti je tastatura, hard disk, ovde ti je taskbar, ovde je ovo, ovde je ono, a potom on (a nije popio ni kafu! Zadivljujuće kakva vrednica!) optrči sve te datoteke čekajući da se nešto u njima promeni (da dobije neku komandu) pa da radi nešto korisno. E sad... Logično je da te datoteke budu na nekom mestu koje je konstantno prisutno, i kome može brzo da pristupi. Gde je to? Pa u radnoj memoriji (RAM)! Ali, ono nije konstantno prisutno, već kad isključujemo nestane sve iz njega (kao kod našeg programa, kada smo izašli iz interaktivnog prompta – sve je nestalo). Onda, gde ćemo? Da te pitam, gde ti čuvaš filmove, muziku? Pa na Hard Disku, naravno! E, tamo i tvoj siroti računar drži sve važne podatke.
Čekaj, kažeš fajlovi? Ali ja kada kliknem na ikonicu svog hard diska, računar mi ne otvori nikakav fajl, već mi otvori pregled šta se tamo nalazi!
Da, zato što taj tvoj postupak izgleda ovako (gledajući iz perspektive računara):
  • Došlo je do promene u fajlu koji kontroliše miša (koji je input tj ulazni uređaj, i zato tvoj računar konstantno njega posmatra)
  • Promena me upućuje da treba da idem na fajl neke ikone...
  • Fajl ikone mi govori da treba da idem na fajl sadržaja Hard Diska
  • Fajl sadržine Hard Diska sadrži odrednice ka svim fajlovima na tom hard disku, aha...
  • Šta dođavola, JA da radim sa tim?
  • Korisnik je kliknuo na to, pošto meni to ne treba, hajde da mu prikažem....
  • Ček da se setim koji fajl je zadužen za prikazivanje sadržaja....
  • Nemam pojma... Pogubljen sam....
  • Joj... Pa za to služi promenljiva PATH.... Ona će mi kaže..... Odoh da je posetim... (promenljiva je isto – datoteka)
  • Aha... (budući da ti je računar opremljen mrcinom zvanom Windows, ali i za druge manje-više važi sličan scenario) treba da idem do explorer.exe-a... Evo, brzo... trčim....
  • De si fajlu Explorer? Šta ima? „Šta oćeš, majmune?“,  - Hoću da prikažem nešto.... „Jao, evo, idi do fajla monitora i promeni ga da izgleda ovako...“ - OK, hvala, vidimo se.... „Jok, za par sekundi idem u štrajk, ako me posetiš pisaće ti na vratima not responding, jer sam umoran od života... Ćao i doviđenja....“
  • Trk do fajla monitora, koji  jedva čeka da mu se nešto zanimljivo desi u životu, promeni ga, bez da se ovaj pobuni (fin neki dasa, reče da je fajl grafičke zadužen, al eto učiniće ti uslugu i otići će do nje, ali avaj, zar ne primećuješ da su njih dvoje – ljubavnici?)
  • Budući da je fajl monitora fajl za output tj fajl izlaznog uređaja (grafičke kartice), on uzrokuje promenu na uređaju koji je prikačen za računar, te korisnik, tj ti, koji si zatražio tu radnju, dobijaš i prikaz (rezultat komande)

Sve ovo što je napisano iznad ne treba da shvatiš bukvalno, samo sam uprostio i izkarikirao stvarno stanje stvari (znači jeste tako 100%, ali i nije, jer ima tu nešto mnogo, mnogo više).
Zašto je sve to onda napisano – pa da bi se dobila kakva – takva predstava za šta je sve fajl (datoteka) bitna, a kao što vidiš, veoma je bitna.
Da bih te još više zbunio (ako nisi od ranije upoznat sa ovim pojmovima) moram ti kazati da kada kažem fajl, tebi verovatno padne na pamet nešto što možeš da pročitaš ili vidiš, osetiš SVOJIM čulima. No, postoje i binarni fajlovi, koje ne možeš da „shvatiš“ sa stanovišta ljudske percepcije, i koji su u stvari baš namenjeni operativnom sistemu (jer on i „komunicira“ preko njih) za već neki potreban rad.
Kao što sam već napomenuo – ti binarni fajlovi nastaju kompajliranjem. Znači... Programer piše program (kod) u neki fajl (koji se može pročitati, i ako „umeš da pričaš“ jezik u kome je pisan, možeš ga i razumeti) a zatim pokreće program koji se zove kompajler (otkud to.... neko je bio maštovit pri davanju imena...), i taj program prevodi tekst iz fajla u binarni oblik, karakterističan i namenjen isključivo za određeni operativni sistem.
Čekaj, prevodi TEKST?
Da... Rekao sam da ako „umeš da pričaš“, tj znaš jezik, npr C, C++ itd. Zato se taj fajl zove izvorni (sorce) fajl
I sada, zaboravih šta sam hteo reći.... Šalim se, naravno. Cela ova priča tebi, kao nekom ko želi da programira u Pythonu, nije ni bitna!
Iz cele ove priče, bitna je ona reč – fajl! Tvoj program koji budeš pisao je dovoljno da sačuvaš u fajlu, i da ne brineš ni o čemu drugom, jer će za sve ostalo da se pobrine Python! Ono što tebe treba da brine je: kako (i sa čim) da napišeš taj fajl?
Da bi kreirao izvorne fajlove (nadalje ću ih zvati programi), potreban ti je neki program - tekstualni editor, koji ti dozvoljava da u njemu kucaš neki tekst, a zatim ga sačuvaš. I to je prilično skroman zahtev, ali sasvim dovoljan za sve potrebe, ali (da je baba imala... da li bi bila deda, ili bi i dalje bila  baba, samo sa „naprednim mogućnostima“?)....
Dobar editor će olakšati tvoj život. A može ti znatno i uštedeti vreme potrebno za rešavanje problema. Izbor editora kojeg ćeš koristiti je od ključnog značaja. Trebalo bi da izaberete editor kao što bi odabrao auto koji bi želeo da kupiš – prema svojim potrebama. Dobar editor treba da ti pomogne da lakše pišeš programe, kao što automobil čini putovanje udobnijim i pomaže ti da sigurno i brzo stigneš na svoj cilj.
Budući da si početnik, i da verovatno, nemaš pojma šta to sem pisanja i čuvanja može da ti pomogne u pisanju programa, evo par naznaka i ideja: jedan od osnovnih zahteva koje treba da očekuješ od editora je isticanje sintakse, tj bojenje različitih delova programa u zavisnosti od programskog jezika, tako da možeš vizuelno da ispratiš tok programa i da momentalno uočiš potencijalne greške.
Ovo automatski znači da ako koristiš Windows, ne treba da koristiš Notepad (mada u krajnjem slučaju, ukoliko nemate instalirano ništa drugo, ili ako volite sado-mazo masažu svog mozga može i on) - jer je, jednostavno -  loš izbor, ne postoji isticanje sintakse i, što je najvažnije – teško je pratiti uvlačenje teksta (indentaciju), koja je nama veoma važna, što ćeš videti kasnije. Dobri editori poput npr. Komodo Edit-a će se  automatski brinuti o tome umesto tebe. Možete koristiti i Notepad ++ ili slično (ne bih da reklamiram ničiji proizvod na ovom mestu, ukoliko neko ima neki super-editor kome treba reklama, neka ima na umu da nisam gadljiv na pare, za 1000 evrića ću ga ovde opisati, hehehe), a ukoliko ste zbunjeni, čitajte dalje, jer, kao i uvek, Python ima spremljeno prijatno iznenađenje za tebe.
(Snimak ekrana koji pokazuje rad u Komodo editu 8 na Ubuntu linux-u).

Korisnici Linux-a imaju mnogo više sreće, nego korisnici Windowsa – jednostavno gotovo svi Editori imaju Syntax highlighting a napomenuću samo neke npr. Kate ili moj omiljeni Gedit.
(Snimak ekrana koji pokazuje rad u GEDIT-u na Ubuntu Linux-u)
No, ukoliko se nađeš u „neobranom grožđu“ i ne znaš gde da se okreneš – prilikom instalacije Pythona, njegovi tvorci su se pobrinuli da ti poklone jedan IDE koji se naziva – IDLE (po Eriku Idle-u, jednim od slavnih Pajtonovaca!). On je uvek pri ruci i jednostavan je za korišćenje – pokreneš ga i tu ti je odmah Python shell, a kada odeš na File – New Window, otvara ti se jednostavan tekst editor koji poseduje sve potrebne osobine za pisanje Python programa!
(Snimak ekrana koji prikazuje rad u IDLE-u, na operativnom sistemu Windows 7)

Iskreno, ukoliko si korisnik nekog drugog operativnog sistema sem Windowsa, iako je IDLE tu (uvek pri ruci), smatram da je bolje koristiti npr. Komodo edit, ili neki drugi editor, a za pokretanje programa koristiti shell operativnog sistema, jer direktan kontakt sa „problemom“  je dobar za tvoj napredak i učenje. Tako, na primer, dok pišem ovaj tutorijal, otvoreni programi su mi: terminal (za „lansiranje“ Pythona), Gedit (za pisanje programa) i LibreOffice (za pisanje tutorijala). Slično očekujem i od tebe!
Ali, ukoliko si korisnik Windows sistema dolazimo do krajnje neinteresantnog problema – podrška za unikod oznake u cmd-u ili PowerShell-u nije dobra, pa ti je zbog toga moj savet da koristiš IDLE, u kojem imaš Python prompt i text editor koji podržavaju „internacionalni“ UTF-8 standard. Dovoljno je, u njegovom editoru teksta, napisati program, sačuvati ga na željeno mesto, a zatim kliknuti na run – run module (ili pritisnuti taster F5 na tastaturi) i program će da se pokrene u shell-u! Ukoliko nisi zadovoljan sa njim, možeš potražiti na internetu neki tekst editor sa ugrađenim shellom koji podržava i naše oznake, na primer Komodo, ali pokretanje programa iz njega nije tema mog tutorijala)
I, da te udavim još malo za kraj. Postoji jedno nepisano pravilo – tekst editori su dobri, ali postoji tačka u kojoj gube – to je tačka u kojoj radiš sa mnogo ljudi na nekom projektu, ili ti je program dugačak i razbacan po modulima (naučićeš kasnije šta je to), pa u tom slučaju je pametnije koristiti neki IDE, da sebe uštediš nepotrebnih muka (IDE je inače naziv Integrated Development Environment iliti Integrisano okruženje za programiranje, sve ti je tu, na dohvat ruke.... Ali zahteva vreme da se „navikneš“ i naučiš sam rad u njemu! Zato ih u početku izbegni, ali kako vreme prolazi, možeš početi sa nekim, dovoljno je da ih potražiš na internetu). 
Huh, umorih se oko obične priče šta treba da izabereš, poenta je u tome da izabereš nešto jednostavno i moćno – da ne bi izgubio mnogo vremena da naučiš da rukuješ samim editorom, umesto da to vreme upotrebiš za učenje Pythona. I, kada ti neko preporuči Vim ili Emacs, verovatno ti ne misli ništa loše, ali u ovom trenutku – ne, to nije za tebe. Kada postignemo cilj, tada ti možeš da počneš da koristiš šta hoćeš, i da eksperimentišeš sa svim i svačim.

5.1 Korišćenje
interaktivnog prompta
Indeks 5.3 Kreiranje
izvorne datoteke

Коментари

Popularno

Tehnički problemi (i ostala tehnička čudesa) u najavi (i u bliskoj istoriji)

Izvršavanje Python programa

Vredela si svakoga stiha

Kreiranje izvorne datoteke

Prevelika očekivanja

Strip o Brus Liju?

Matematički izrazi (ekspresije) u naše programu

Parametri i argumenti funkcija