Ukoliko se spremate za intervjue za pozicije developera, sigurno ste čuli da u pojedinim kompanijama zapitkuju o algoritmima, njihovoj vremenskoj i prostornoj složenosti, a da ne pominjem (big) O notaciju. Sve to zvuči strašno početnicima, kažu da ima i neke matematike. Za početak, hajde da sažmemo osnove algoritama.
Na pomisao o algoritmima, mnogi će se prisetiti blok dijagrama algoritama iz srednje škole, čuvenih rombova, trapeza i pravougaonika povezanim strelicama. Ili će reći da je to sam program. Nijedan od ovih odgovora nije potpuno tačan.
Algoritam je mnogo stariji i apstraktniji pojam. Algoritam se može definisati kao niz koraka za rešavanje problema. Dakle, ako nam se pokvari veš mašina, redosled operacija koji dovodi do popravke je algoritam. Recept za spremanje omiljenog jela (ako je precizno definisan) je takođe algoritam. Naravno, neki algoritmi se koriste u kontekstu softverskog inženjerstva, rešavaju probleme iz te oblasti, pa imaju i svoje implementacije u vidu programa koji se izvršava na konkretnom hardveru.
E sad, kad smo odredili šta su algoritmi, red je da kažemo čemu oni uopšte služe. Zašto bismo se oslonili na recept za spremanje omiljenog jela? Ili programski implementirali postojeći algoritam umesto da smislimo svoje rešenje?
Navešćemo nekoliko osnovnih razloga:
- Smanjenje mentalnog opterećenja. U modernom svetu, stalno moramo o nečemu da mislimo, planiramo, predviđamo… Sjajno je ako neke probleme možemo da rešimo bez preteranog razmišljanja. Na primer, da ne procenjujemo koliko soli ide u naše omiljeno jelo nego da pročitamo u receptu da je u pitanju pola kašičice. Ili da ne razmatramo sve granične slučajeve, “šta-ako” nego da jednostavno pretočimo postojeći algoritam u programski kod.
- Garancija kvaliteta. Želimo da napravimo ukusno jelo. Ili ispravan program. Ako samostalno eksperimentišemo u kuhinji, možda previdimo nešto, zaboravimo da začinimo i jelo ne ispadne idealno. Svi grešimo. Rešavanjem već rešenih problema u najboljem slučaju dobijamo isto rešenje kao praćenjem algoritma. U svim drugim slučajevima, dobijamo bagove i zaboravljene granične slučajeve.
- Garancija efikasnosti. Želimo da jelo spremamo minimalno koliko je potrebno. I da potrošimo minimum sastojaka a da ukus ispadne “kao što je baka spremala”. U kontekstu programa, imperativ je da do rešenja dođemo što brže. Sjajna stvar je što se može proceniti u koliko operacija se neki program može završiti i još važnije, ako se količina podataka na ulazu poveća, kako će to uticati na celokupno izvršavanje programa.
Tu dolazimo do (big) O notacije, o kojoj ćemo pisati u posebnom postu.
Otkrijte tajne algoritama sa kursom FTN Informatike
Ako ste ikada osećali da su koncepti poput algoritama, njihove vremenske i prostorne složenosti, ili (big) O notacije previše zastrašujući, imamo savršeno rešenje za vas. FTN Informatika organizuje novu kurs u seriji “Osnove programiranja“, u okviru kojeg se detaljno izučava sposobnost programiranja osnovnih algoritamskih struktura. Ovaj kurs je dizajniran da demistifikuje složene koncepte i učini ih pristupačnim i razumljivim svima, bez obzira na prethodno iskustvo.
Bilo da ste potpuni početnik ili već imate neko predznanje i želite da unapredite svoje veštine, ovaj kurs će vam omogućiti da steknete čvrste osnove i samopouzdanje potrebno za razumevanje i primenu algoritama u praksi. Ne propustite priliku da započnete svoje putovanje u svet programiranja već 20. maja 2024. Saznajte više i prijavite se na FTN Informatika – Osnove programiranja.