Svako 5-6 pitanje koje sam dobijao na email ili FB stranicu bloga bilo je preporuka za programski jezik koji bi čovek trebao da uči…a kako ni sam nisam programer (iako je u ne-IT narodu sistemaš i programer isto) pozvao sam u pomoć ljude koji prate FB stranicu ovog bloga i u programerskim su vodama.

Time4VPS Hosting
Time4VPS Hosting
Time4VPS Hosting
Uglavnom, evo jednog od poslednjih pitanja:Vidim da si guru u IT svetu i da si voljan da pomogneš drugima, pa hteo bih da te zamolim za par saveta. Imam neko osnovno znanje o kompjuterima a sad bih se bacio na programiranje. Koliko sam čačkao po forumima vidim da je C++ najteži ali su i programeri koji znaju c++ dosta cenjeni te me ta činjenica da je najteži jako vuče da počnem baš od c++-a. Uvek sam voleo izazove. Dakle zanima me šta bi još osim samog programskog jezika trebalo da učim, ili preporuči neku knjigu. Interesuje me tvoj savet jer ako mogu da sudim po tvom blogu vidim da nisi nadmen tip i pun sebe koji bi me sputavao.

Pre dalje priče da razjasnimo nešto – ne da nisam IT guru nego nisam ni blizu, da sam voljan da pomognem drugima nisam – nekad sam bio….više ne, i ne možete suditi ništa o meni ili bilo kome na osnovu blebetanja na blogu.

Evo odgovora zajednice sa FB stranice bloga, ja ću samo malo da ih isformatiram i preformulišem i eventualno ‘konvertujem’ u ekavicu kako bi bilo jednoznačno. Ponavljam, nisam programer ne mogu lično tvrditi da je dolenapisano istinito ili ne….tako je prozborila zajednica koja prati Facebook stranicu ovog bloga i ja joj verujem na reč.

C++ je daleko od najtežeg – ko želi da se poigra terminom ‘najteži’ neka proba LISP, Haskell i C. Savet je da prvo kreneš da učiš osnovne koncepte programiranja. Meni su tu pomogli najviše – papir, olovka i crtanje blok dijagrama. Nakon toga sam te zadatke ‘prepisivao’ u C programski jezik (mada je jezik nebitan ako si ove osnovne koncepte dobro savladao). Ja koliko znam C je teži od C++, a po meni je asembler najteži od svih koje sam ajmo reć učio, python ti nije lagan kao što kažu, samo što ima sintaksu koja ti omogućava lakši rad, preferiram python ponajviše radi ; i {}, a opet neki ljudi koje znam kažu da im je bolje da ima {}, s čim lakše prate tok koda. Assambler je, uzgred rečeno i plaćeniji od većine navedenog što ćeš pročitati ovde.

C++ je poceo nedavno slabiti sada trenutno jača java script i c# tako se uhvati onoga šta će se koristiti u budućnosti. C# i java postaju main jezici za igre dok je php i java script za web.

Prvo svakako treba savladati osnove. Algoritmi i osnove OOP. Dalje, osnove SQL upita (UVEK će trebati). Nakon više od 30 godina rada u struci mogu samo sledeće da preporučim: nije bitan programski jezik, najbolji je onaj koji koristiš i koji će da „stavi lebac na astal“. Ako imaš ideju koju treba realizovati algoritam je osnova (u mom slučaju – papir i olovka, ja sam old school) a sve ostalo je samo tehnika. Ta osnova će pomoći da sebi vremenom olakšaš posao, praveći sopstvene dll-ove na primer. Ja sam imala sreću da sam učila od najboljih. Solidna osnova koju sam tada usvojila je jedini razlog zbog koga sam uspela da opstanem u ovom poslu sve ove godine. NIKADA ne treba zaboraviti da se svaki software pravi za potrebe korisnika, KORISNIK (zadovoljan ili ne) je najbolji konsultant. I na kraju, treba biti spreman na učenje do kraja života.

Nikad nije bio bitan jezik, od algoritama se kreće uvek. Svaki jezik se lako savlada ako postoji dobra i efikasna ideja za rešenje.

Python za početak, jer ne dozvoljava aljkavost, a jako je čitljiv i pregledan – odnosno ukoliko ne želiš da brineš za posao narednih 50 godina – Python i C su najbolja kombinacija.

Uzmi bilo koji programski jezik i dobro ga savladaj. Savladaj i sql… Zatim se primi konkretnog posla. Uzmi raditi najjednostavniju aplikaciju za posao koji radi netko od tebi bliskih. Nauči kako taj posao funkcioniše i pokušaj ga unaprediti pomoću računala i programiranja, jer, samo znanje bilo kojeg programskog jezika nije dovoljno. Traži se iskustvo. Iskustvo steći tako da radiš nešto… Napravi evidenciju lokalnog sportskog kluba… Nekad su programeri učili programiranje tako da su radili programe za video klubove… bitno je taj prvi posao raditi besplatno, jer to je prilika da se nesto nauči… Kasnije poslovi dolaze sami… Bitno je shvatiti da se programiranje ne uči na tečaju nego kroz rad… Treba puno raditi da bi se postalo programerom. Za početak to znači najčesće besplatan rad i zahvali svakom ko ti pruži priliku kao početniku, jer to je put sa puno dječjih bolesti do odrastanja u zrelog programera… Jezici s kojima sam ja počinjao i mediji sa kojima sam radio i strojevi i procesorske snage su se menjale kroz 30 godina rada. Iskustvo je danas najveća vrijednost.

PHP, JS ili mozda čak Java za početak. Manse C++, pošto je ponuda poslova kod nas očajna za C++…a java i C# su sadašnjost – ako želiš da vidiš šta je budućnost kreni da učiš JavaScript. JavaScript je dobar za web app development, a i traži se na veliko (ima frameworkove za praktički sve) tako da s time će vjerojatno najbrže naći posao (preporuka knjige – Professional JavaScript for Web Developers, dobra je za početnike, jer se lako čita i dobri su primjeri). Treba dodati da je JavaScript vrlo loš jezik. Mislim da će se s tim složiti ko god se bavi ozbiljnim programiranjem. No, činjenica je da je i pored toga tražen. A i brzo se uči. Možeš odmah u browseru da kreneš ne trebaju ti nikakve specijalne instalacije.

Ja radim u C++-u i iako nije to posebno težak jezik, može biti puno za početnike, čisto zato jer uključuje puno toga što se mora naučiti kako bi se napravilo nešto konkretno, da i ne spominjem niz biblioteka koje su must za određene stvari. Lakše je početi s nečim jednostavnijim, vidjeti kako to otprilike izgleda, a onda kasnije eksperimentirati i pronaći -svoj- jezik koji se može početi usavršavati. P.S: U slučaju da ovaj želi u game dev biznis, zbog čega mu je možda C++ najzanimljiviji (malo se i traži van industrije), tada preporučam jezik Lua (preporuka knjige – Programming in Lua). P.P.S.: Opet ja o video igrama (jer sam game dev pa valjda moram tako) – ‘EVE online’ je napravljen u Pythonu, a Minecraft u Javi, čisto par primjera da se zna da C++ nije apsolutno nužan za igre.

Odlučiti se za granu IT industrije koja te zanima i krenuti sa vanila jezicima koji se tamo koriste, u slučaju Web-a (jbg, u web-u sam pa samo za njega mogu da navedem primer) to bi bilo: HTML i HTML5 (nisu programski jezici ali su neophodni), CSS3 (ne ulaziti previše osim ako želiš da postaneš jak koder = dizajner ti da psd i ti po njemu praviš statičnu web stranu sa minimumom JS-a, pa posle frontendovci to prave da ima upotrebnu vrednost i dinamiku), PHP i JavaScript (u daljem tekstu JS). JS raditi bar 30 dana vanilla ES5 pa dodati jQuery (u daljem tekstu JQ) i polako učiti ES6, raditi sa JQ bar 2 meseca. NE MEŠATI ES5 i ES6!!. Za PHP ne učiti nikakav framework pre nego što stekneš potpuno razumevanje i proceduralnog i objektnog PHP-a i najbitnije, NIKAKO ih ne mešati u jednom projektu.

Za lakši i ispravniji rad sa PHP-om treba naučiti i kako funkcioniše .htaccess fajl. Pogledati REST on je sada standard za kreiranje API-ja – apiji su php strane koje generišu xml ili json i služe da se frontu (js-u) dostave podaci koji su na serveru, odnosno da slanjem parametara na taj link sa fronta Ajax pozivom (JS), server (PHP) sačuva nesto u bazi, izbriše iz nje i sl ili izvrši neku logiku i da povratnu informaciju, recimo pročita fajl kome nije moguće pristupiti direktno kroz url. Kada se savladaju osnove PHP-a onda istražiti OWASP i skontati koliko bušne projekte si pravio, izgubiti volju za životom i obećati da nećeš više nikad, nakon svega ovoga ozbiljno odrađenog, možeš se prijaviti kao jak junior na bilo koj konkurs. Ako zaista savladaš JS i JQ, bilo koj framework (Angular, React, Bootstrap, Vue.js i dalje, ima ih tona, ali ovo su najtraženiji) ćeš moći da savladaš za mesec dana i manje. Isto važi i za PHP i njegove framework-ove (Falcon, Symphony, CakePHP, Laravel…)

Originalni link ka ovim preporukama sa FB je ovde i tu možete videti ko je sve učestvovao u ovoj diskusiji.