Prvi korak da postanete dobar programer i napišete svaki program koji želite, od poslovnog software-a, pa sve do igara, jeste da počnete da razmišljate kao programer.

Kako?

Sve kompleksne stvari se mogu opisati na jednostavan način, tako da Vam dajemo jedan praktičan primer.

Zamislite da je računar Vaš lični robot. I da ste tom robotu rekli da ode do radnje da kupi namirnice.

Vaš robot ima glavu, telo, noge, ruke. Može da priča. Zna da sluša. Sposoban je da uradi sve šta mu se kaže. Veoma je brz. Može da zapamti ogromnu količinu podataka.

robotAli, nije mnogo pametan. U stvari, uopšte ne zna da samostalno razmišlja.

Ako želite da ode do radnje, morate mu sve opisati na najdetaljniji način. Takođe, morate razmisliti o svim situacijama koje mogu da iskrsnu i objasniti mu kako da reaguje.

Hajde da vidimo kako…

Prišli ste svom robotu, rekli mu da ode u radnju da kupi namirnice i predali spisak. Već u startu, ako Vaš robot zna da hoda, otvara vrata, pronalazi lokacije, prelazi ulice (a da ga kola ne pregaze), to je samo zato što ga je neko već isprogramirao da to zna da radi.

Hajde da pretpostavimo da Vaš robot ima te osnovne programe.

Šta se dešava dalje? Najverovatnije, izašao je i nije se vratio. Tada, spustili ste se do prodavnice i videli robota kako stoji ispred gondole sa povrćem. Na spisku piše da kupi paradajz, ali u prodavnici trenutno nemaju paradajz. Vaš robot ne zna šta da uradi u vezi sa tim i zato stoji. Ukočeno. U odeljenju sa povrćem.

Zato programirate novo uputstvo za robota: Ako nema artikla u jednoj prodavnici, pronaći ga u drugoj prodavnici. Hm… Kad malo razmislite, ni to nije dovoljno. Robot neće znati sam da traži prodavnice. Zato dodajete: Evo spiska svih prodavnica u kojima treba da kupuješ. Ako artikla nema ni u jednoj od tih prodavnica, vrati se kući bez obzira što nisi kupio traženi artikal.

Eto. Sredili ste taj mali detalj i robot je spreman.

Sutra ste ga ponovo poslali u kupovinu. Ali, da se ne radujemo prerano.  Robot se opet nije vratio. Nema ga već tri sata.

Izašli ste napolje, počeli da obilazite radnje i videli Vašeg robota kako proverava da li svakog artikla sa spiska ima u svakoj radnji. Zašto to radi? Zato što mu niste rekli da ako nađe artikal, ne treba više da ga traži u ostalim radnjama.

Ups. Nazad na programiranje. Dodali ste i to uputstvo. I sutra ponovo pustili robota u svet. U dva sata po podne, robot se još nije vratio.

Šta je sada? Izašli ste da ga pronažete i naravno, eto Vašeg robota u radnji. Stoji ukočen za kasom. Feta sir je poskupeo za 20 dinara a Vaš robot nema dovoljno novca da plati. I ne zna šta da uradi u vezi sa tim. Vadite 20 dinara iz džepa da doplatite sir, a kod kuće robota programirate da ako slučajno nema dovoljno novca, da izbaci odgovarajući broj artikala iz korpe, plati ostatak, i da se vrati kući.

Rešeno. Sada je sve u redu.

Hajde da vidimo. Sutra je novi dan i Vašeg robota ste ponovo poslali u prodavnicu.

Sve izgleda da funkcioniše.

I to nekoliko dana. Robot redovno donosi namirnice. Ali, nešto fali. Već danima Vam ne donosi masline. Prvo ste pomislili da ih nema u radnjama, ali sada se već pitate.

Proveravate spisak artikala koji dajete robotu i eto, ima ih na spisku. Ops. Samo trenutak. Ne piše masline nego maslinke. Kao što daltonista ne prepoznaje boje, računar ne prepoznaje reči ako mu precizno nije objašnjeno šta svaka reč znači. Greška u jednom slovu stvara potpuno drugu reč i Vaš robot je posmatra kao poseban artikal.

Eto. Kao što vidite, proces kreiranja svih opcija vezanih za željenu akciju je duži nego što izgleda nekome ko se ne bavi programiranjem.

A programi rade kada su napisani precizno. Do slova.

Zato, veština programiranja je veština razvoja specifičnog načina razmišljanja. Razmišljanja o svim alternativama, opcijama, mogućnostima vezanim za određene akcije. Razmišljanja o svim situacijama u kojima mođe da dođe do zastoja programa. I onda, davanju preciznih uputstava programu kako da reaguje.

Programerima je taj proces zanimljiv. Uzbudljiv. Razlog zbog kog uživaju u svojoj veštini. Pošto Vas programiranje privlači, ovaj proces će verovatno biti fascinantan i Vama.

Da li ste spremni da postanete stručnjak u programiranju?