Šta je novo?

Kako da postanem dobar Web programer / dizajner

Treba tu i neki grafički dizajner.

Sent from my Nexus 6P using Tapatalk
 
Zanima me ako neko ovde radi kao freelancer, koji su najbolji sajtovi za freelancing?

Sent from my SM-J500H using Tapatalk
 
Evo ovako i ja da se javim, pratim temu vec duze vreme a jos duze zelim da se posvetim ovom vrstu posla tj prvo ucenja i onda i konkretnije kad skupim dovoljno znanja, iako ovde ucenju nikad kraja. :)
Moje pitanje se odnosi na sledece, posto se susretao nisam do sada sa programiranjem tj krecem od nule...odakle poceti? Znam da su mnogi postavljali ova pitanja, ali mene pre svega zanima jednog dana da razvijam aplikacije (andorid,iOS) uz to da bih onda kako napredujem naginjao na game development-u.
Zato pre sveg pitanje odakle poceti...citao sam u poslednje vreme da je Javascript "prava" stvar i svestan sam da bi mi bilo korisno da to naucim. Zato pre svega, da li je to zaista ono sto mi treba i odakle bih trebao da pocnem ako planiram da jednog dana izradjujem mobilne aplikacije/igrice? Znam da su to siroko obuhvatna polja ali eto cisto da imam neke smernice. I ako bih isao u game development pretpostavljam da mi je C++ isto neophodan?

I kad se vec raspitujem, takodje bi mi trebala kratka smernica sto se kupovine kompjutera odnosno laptopa tice koji bi mi obavljao posao na duze staze? Ici na Macbook Pro (plus parallels) ili Win? To mi je zapravo i najbitnija stavka ako zelim da se posvetim ucenju ovog zanata. :D
Unapred hvala.

Gesendet von meinem LG-D802 mit Tapatalk
 
Javascript je jezik weba, C/C++ su jezici za pisanje sistemskog softvera (kernel, biblioteke, drajveri) i softvera koji je veoma performantan, Python pokriva web i aplikacije, Java je jezik koji je opste prihvacen u firmama, C# je isto sto i Java samo Microsoft stoji iza njega (.NET platforma), Objective C je jezik koji promovise Apple i koristi se za razvoj aplikacija na Apple plaformim, funkcionalni jezici (takozvani ML tip jezika) se koriste na fakultetima, istrazivackim labaratorijama itd. Tu su neki novi jezici koji resavaju neke od problema koje su imali stari. Swift je zamena za Objective C, Rust je zamena za C/C++, Nim/Nimrod je miks izmedju Java i Javascripta, Scala je miks izmedju ML jezika i Java, Vala je isto sto i Swift samo namenjeno razvoju Gnome aplikacija (Linux). Zajednicko za nove jezike je slaba podrska, posto ih mali broj ljudi koristi podrska u vidu IDE alata, biblioteka, debuggera, kompajlera je tanka.

Programski jezici se dele na jezike nizeg nivoa i viseg nivoa. Nizi nivo su masinski jezik ili kod (sekvence nula i jedinica) i prvi nivo apstrakcije iznad masinskog koda, takozvani assembly iliti asembler. Sintaksa asemblera su malo ulepsane operacije koje vrsi centralni procesor nad glavnom memorijom. Znaci tu je kod koji oznacava operaciju kao i memorijske adrese nad kojima se vrsi manipulacija.

Programski jezici viseg nivoa prevode komande u ljudima koliko toliko razumljivu sintaksu. Jos jedan nivo apstrakcije u odnosu na asembler. To su vec pravi jezici, koji lice onim govornim. Najpoznatiji je C. Osobina C programskog jezika je sto nudi potpunu kontrolu nad memorijom, sto znaci da je rad sa memorijom manualnog tipa. C je proceduralni jezik, kao i Pascal i prethodnici sto znaci da se kod izvrsava onim redom kojim je napisan.

Odredjeni segment u memoriji (hardveru) se naziva objekat. Svaki taj segment ima adresu. Pisanje koda se svodi na manipulaciju objektima. Svako kreiranje nekog patterna je kreiranje objekta. Pattern moze biti mnogo toga, od deklaracije varijable (deklaracija varijable je proces stvaranja i dodeljivanja vrednosti nekoj promenljivoj) do nekakvog skupa od dve ili vise promenljivih, do citavih funkcija. Manipulisati sa objektima u C-u mozes po imenu ili po referenci (adresi). Tu dolazimo do problema programskog jezika C, jer sa jednim objektom moze manipulisati vise puta u istom programu. Ako ti napises kod tako da se dati objekat obrise pre nego sto je on potreban negde drugo tu nastaje problem. Sto bi se reklo, upucao si se u nogu. To se resava na vise nacina, a jedini nacin kojim je moguce pisati slozene programe je brojanje referenci, cime se koliko toliko automatizuje manipulacija memorijom (drugi pristupi su iskljucivo manuelni i jako zamorni za odrzavanje slozene kod baze). Medjutim ti posto neces uciti C tebe to ne zanima a iskreno, ta oblast prevazilazi moju strucnost. Znam par nacina ali tu se pravi razlika izmedju eksperta C jezika i onog sto ga kao poznaje.

Da bi se to resilo smisljen je novi pristup, takozvana objektno orijentisana paradigma u programiranju. Da bi se lakse manipulisalo sa objektima uvedeni su novi koncepti. Medju njima je najbitniji koncept klase. Sta je klasa? Klasa je potpuna definicija objekta. Sta to znaci? Zamisli jabuku. Ti o jabuci sve znas. Znas kog je oblika, koje je boje, kakvog je ukusa, kada raste, koliko joj treba da sazre itd. To tvoje znanje je potpuna definicija jabuke. Objekat je ona jabuka koja se nalazi ispred tebe, koju mozes pojesti. Ona moze biti neke boje, nekog oblika, odredjenog ukusa ali potpada pod ono sto znas da je jabuka. Zato se u OOP jezicima ne kreira svaki objekat redom kada je potreban vec postoji odredjena organizacija tih objekata. Prvo treba unapred da znas sa kojim tipom objekata tvoj program manipulisati. Onda napises klase tih objekata zasebno a kreiras ih u okviru metoda (zasebno izdvojeni deo programa gde se pise ono sto program treba zapravo da radi) tako sto pozoves klasu objekat i kreiras novu instancu tj. dati objekat koji ti treba.

Zasto je ovo korisno? Mnogo je lakse baratati sa velikom kod bazom koja sadrzi ogroman broj objekata i pokazivaca na njih u memoriji jer su organizovani. Nisu razbacani svuda po programu i ne moramo ih juriti kroz neretko slabo citljivi kod koji je neko aljkav pisao. Samim tim se sansa za bagove smanjuje. Medjutim bitno je i zbog manipulacije sa memorijom. Java kao jedan od najpoznatijih predstavnika OOP jezika ima nesto sto se zove Garbage kolektor a to je rutina koja automatizuje upravljanje memorijom, da se ne bi morao programer bakcati time. Garbage kolektor radi isto sto radi programer u C-u, vodi racuna o objektima, njihovom trajanju i refencama. Koliko je meni poznato Java koristi dva nivoa apstrakcije objekata tj. pokazivac na pokazivac u memoriji cime se minimizuje sansa da se objekat obrise pre nego sto je neophodan u drugom delu programa. Jer se brise samo prvi pokazivac a drugi ostaje tj. objekat je i dalje tu. Iako je ovo jako bezbedan pristup on uvodi poprilican overhead tj. ima veliki udarac na performanse izvrsavanja programa. Zato Java programi jedu memoriju u odnosu na C programe.

Ono sto je jos bitno da znas da se jezici dele na: statically typed i dinamically typed. Sta to znaci? Statically typed znaci da se varijable deklarisu pri kompajliranju dok dinamically typed znaci da se deklarisu pri runtime-u (izvrsavanju). Sta sam ja sad rekao?

Postoji nekoliko nacina koji se sintaksa programskog jezika prevodi u jezik razumljiv kompjuteru (masinski kod). Prvi je kompajliranje tj. prevodjenje sintakse u procesorske komande sto dalje kompjuter prevodi u nule i jedinice. To radi program koji se zove parser, on parsira liniju po liniju koda i tumaci sintaksu. Kompajliranjem se dobijaju odredjeni fajlovi koji se posle pokrecu ili se koriste za dalje pakovanje. Kompajliranje trosi vreme programera dok onaj koji izvrsava kod dobija gotov proizvod koji radi najbrze moguce.

Drugi nacin je interpretiranje koda tokom izvrsavanja. To radi program koji se zove interpreter. To je mnogo sporiji nacin izvrsavanja koda jer u realnom vremenu prevodimo sintaksu u komande i masinski kod.

Java koristi just-in-time pristup. To znaci da se interpretiranje koda i kompajliranje desava tokom izvrsavanja. Nekada je cini mi se Java samo interpretirala kod sto je bilo jako sporo. Posto se sada on kompajlira pri pokretanju to radi puno brze. Medjutim jos to nije kao prekompajlirani kod.

JavaScript je dinamically typed jezik. To obicno znaci da kompajlera nema nego pri interpretiranju neka rutina programskog jezika pogadja koji si tip varijable koristio. Zasto ne bi deklarisali mi sami varijable? Zato sto je kodiranje brze kada samo pisemo a = 10 nego const a = 10. Glupost ali primila se.

Medjutim, JavaScript je vremenom napredovao od skripting jezika koji se interpetira i kao takav je nepogodan za bilo koju ozbiljniju primenu do jezika kojim se pisu slozene web aplikacije danasnjice. Kako to? Pa neko je napisao ono sto ima java, runtime. To omogucuje just-in-time izvrsavanje JavaScript koda. Taj alat tj. runtime se zove Node.js i to je deo JavaScript frejmvorka koji se koristi da bi se standardizovalo i doneklo olaksalo pisanje aplikacija.

Sve ovo imas na netu, u knjigama, tutorijalima, lekcijama, kursevima itd. Ja sam to napisao na srpskom da znas u sta se upustas. Deluje strasno ali nije, bitno je da naucis osnove da ne bi kasnije dolazio u situaciju da nesto ne razumes jer ne znas kako to radi. Najgore je nauciti neki frejmvork a ne programiranje i sam jezik kao sto ljudi uce Angular. Pa onda oni promene u verziji 2 sve zivo jer verzija jedan nije valjala a ti moras da ucis ponovo. Eto u toj verziji dva su ubacili nesto sto se zove TypeScript, sto je pogadjas, statically typed verzija JavaScripta.

Edit: Windows je najbolja platforma za razvoj .NET aplikacija i C/C++ aplikacija. Za sve ostalo ili Mac ili Linux, zavisno sta radis.

Edit2: @n1tro je oboleo od teskog oblika Apple fanbojitisa i on ce ti reci da ucis Swift. Sto mozda i nije toliko lose resenje posto korisnika ima puno sto garantuje ubrzani razvoj alata. Ali to nije to. Za sada je JavaScript jos uvek defakto jezik weba.
 
Poslednja izmena:
n1tr0 je realan i ne boluje od nikakvog fanboyitisa, a preporucio bi mu da se prvo pozabavi malo algoritmima i samom logikom, kao i da malo prosiri znanje i razumevanje engleskog jezika (ako vec nije) nezavisno od programskog jezika.


Sent from my iPhone using Tapatalk
 
Jel može neko da mi malo detaljnije objasni šta tačno znači / podrazumeva se pod "DevOps"? :)
 
Jel znas sta je Agile? To je, ugrubo receno, veoma iterativni nacin razvoja softvera. Postave se odredjeni rokovi za odredjene faze i to se postuje, nebitno koliko se uradi posla u tom vremenskom periodu. Build se spakuje, posalje svima u firmi, ide na testiranje, monitoring itd. Tako za svaku verziju tj. iteraciju u razvoju. Nema nekih ciljeva koje treba postici u smislu nove funkcionalnosti, vec je ideja da se razvojni tim uvede rutina i posao ubrza. Na kraju bi taj tim trebao biti u stanju da mnogo brze razvija softver i dodaje nove funkcionalnosti jer se vreme za obavljanje odredjenih zadataka smanjuje sa svakom novom iteracijom.

DevOps u takvom sistemu je grupa ljudi zaduzena da saradjuje sa svima kod pakovanja builda i slanja (deployment). Oni koriste odredjene alate, pripremaju kod, prave buildove, vrse rana testiranja, pakuju, salju na dalja testiranja, podeavaju sistem koji sve to omogucuje i automatizuje. Alati su VM, VCS, kontejneri (Docker), razni alati koji vrse merenja itd.
 
Hvala puno na slikovitom odgovoru!

Dužan sam ti cheers !
 
Da li je neko od vas ucio Reax/Reduct?
Poceo sam se zanimati oko toga, neki govore da ce se sve vise korostiti u buducnosti.
 
Sta je tacno buducnost to se jos ne zna, ali pravac je vec odredjen. To je prelazak na izvrsavanje native koda na webu, sa interpretiranih jezika kao sto je Javascript. Da li ce to biti neki frejmvork izgradjen oko Swifta, WebAssembly ili nesto trece, to se u ovom momentu jos ne zna. Ono sto se zna jeste da su web aplikacije sve kompleksnije i zahtevnije a alati koji se trenutno koriste za razvoj tih aplikacija nisu dorasli zadatku. Cilj je da se omoguci direktna komunikacija sa hardverom iz browsera, sa weba, bez previse slojeva koji usporavaju celu stvar. Da performanse programa pokrenutog u browseru bude sto blize moguce programu koji pokreces u fullscreen modu (neka video igra na primer).

Ja radim mobile development tj. Android dev i mogu ti reci da cim zavrsim igru koju radim gledacu da je portujem na neku bleeding edge web platformu koja u tom momentu bude aktuelna. Jer smatram da nece mobile apps jos dugo biti aktuelne kao danas. Google ima planove da napravi merge izmedju Androida i ChromeOS a to ce upravo ici kroz Chrome. Java aplikacije su vec sada podrzane u Chrome kroz jedan od podsistema. U takvom stanju stvari webapp je gradjanin prvog reda a java podrska je tu da odrzava kompatibilnost sa legacy aplikacijama. Sve se seli na web.

Edit: Nije Reax/Reduct vec React.js i Redux.js. To nije buducnost vec sadasnjost.
 
Poslednja izmena:
U pravu si, moja greska.

Skroz mi je mocna stvar oko tog android developmenta, ali me nikada nije privlacilo da sam probam...

Studiram jos, za sada se drzim html-a, css-a, js i php.
 
Sve se seli na web.
Onda ću ja da se selim na selo :D Probao sam Office (MS, Google, Libre), Onshape, neke SAP module... i tačno ću da prestanem da se bavim ovim poslom ako dođe do toga da svaki ozbiljan program završi u browser-u. Ni mail i IM ne koristim iz browsera, a kamoli nešto ozbiljnije.

Sve to mi je potpuno suludo danas kada čak i telefoni imaju dovoljno jak hardver da izguraju sve home/office programe, a o PC-u da i ne govorimo.
 
Poslednja izmena:
Kako stvari stoje i sta se lagano namece uskoro cemo nazad u eru terminala.
Ko ce pratiti onoliku shumu racunara i podataka po svetu, lakse ovako, stavi ti rodjace sve kod nas na server, a mi cemo ti to cuvati i imati laksi uvid u sve to sto radis. win win situacija. :d
 
G@W web nece u skorijoj buducnosti zameniti native i tu nema nikakve dileme. Pogledaj samo za bilo kakve animacije, ne daj boze igrice CPU/GPU usage i koliko se greju i sve ce ti biti jasno...


Sent from my iPhone using Tapatalk
 
Prelazno resenje: http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html
Dugorocno resenje: http://webassembly.org/docs/high-level-goals/

wasm je trenutno u beti u vecini popularnih browsera, demo sto imaju na sajtu radi odlicno u FF na primer. Medjutim, prave stvari tek dolaze: http://webassembly.org/docs/future-features/

Ne vidim zasto bi native mobile aplikacije bile bolje resenje u pogledu performansi u odnosu na wasm. Za sada je wasm fokusiran na c/c++ ali mislim da ce vrlo brzo podrska da se prosiri na next gen jezike kao sto su swift i rust.

Mislim da moze i sada da se zbudzi preko llvm toolchaina. Doduse to je zbudzevina, kao sto je namestiti app napisanu u Rust da se pokrene u Androidu kao app budzevina. Probao sam i radi ali ne mozes nista pametno napraviti sa tim a da napravis app sa klasicnim Android GUI-jem je PITA. U sustini ista stvar kao rad sa C++ samo jos korak vise. Doduse mene C/C++ ne zanimaju (treba raditi bar deset godina ozbiljno u ovim jezicima da bi se ovladalo njima), zato i gledam Swift/Rust kao potencijalnu zamenu za Javu na mobilnom i JavaScript na webu.
 
Kako stvari stoje i sta se lagano namece uskoro cemo nazad u eru terminala.
Ko ce pratiti onoliku shumu racunara i podataka po svetu, lakse ovako, stavi ti rodjace sve kod nas na server, a mi cemo ti to cuvati i imati laksi uvid u sve to sto radis. win win situacija. :d

A pa mi smo u toj fazi odavno ;)
 
Pa nije jos sve u potpunosti na serveru, ali bice sa dolaskom novih tehnologija. Ove kompleksne stvari, igre, veliki programi itd. To ce takodje na web. Cak i jedan Fortran je dobio web framework...

Onako laicki, rekao bi da se na kraju puta gubi razlika izmedju klijenta i servera. Prvo ce sve na server, uz nesto malo procesuiranja na klijentu, zavisno od potreba i kompleksnosti aplikacije. Posle klijenti se vezu i i odradjuju posao servera. Dok su ukljuceni naravno. Kada se ugase izbacimo ih iz sistema i preraspodelimo posao citavog sistema na aktivni broj kompjutera u mrezi. Tu se vise ne zna ko je klijent a ko server. Peer2peer sharing vec radi po ovom principu, veoma uspesno.
 
Poslednja izmena:

Prilozi

  • 6a71092b-b4ad-4816-bf41-6289c627662e-original.png
    6a71092b-b4ad-4816-bf41-6289c627662e-original.png
    103.4 KB · Pregleda: 262
Zna li neko neku dobru knjigu na Srpskom vezano za Python za download? Nista ne uspevam da nadjem. Ako ko zna, moze link u PP

Sent from my SM-J500H using Tapatalk
 
Ili bolje pitanje, da li uciti 2.x ili 3.x Python?
 
To ti je isto pitanje kao "da li uciti Angular ili Angular 2?". Python3 je buducnost, kako kazu. Ali sta ako firma gde trazis posao koristi Python2? Odrzavanje kompatibilnosti po svaku cenu je veliki problem ove nase industrije. Uciti Python na srpskom... nece se to dobro zavrsiti. Nijedna knjiga ne daje odgovore na sva pitanja, kada prodjes knjigu ostavljen si da trazis dalje po netu. Iz mog iskustva, na srpskom internetu je tesko naci odgovor na pitanja vezana za programiranje. Makar ta pitanja imala jednostavan odgovor.

Ja sam na faksu ucio Javu. Vremenom je Java rasla, sad je to nesto kompleksniji jezik nego sto je nekada bio. I dalje je jednostavan u osnovi. Ali ako hoces da optimizujes kod da radi sto bolje, onda ti treba odredjeno znanje ili da si bistar ko pcelica pa sve sam provalis. To znanje stices u radu sa drugima ili ako radis sam pitajuci za pomoc na internetu, citajuci literaturu, dokumentaciju, tutorijale kopajuci za odgovorima. Nista od toga nema na srpskom.

C++ je tek posebna prica, sa tim sam poceo pre neke dve godine. Prvih par nedelja sam vise provodio vremena ispravljajuci greske koje mi je kompajler izbacivao (znanje Jave te nece pripremiti za C++), posle sam se saplitao na svakom malo kompleksnijem problemu. Sam sebi iskopam jamu, sto kazu. Pa sam skontao kako se radi sa memorijom, da vodim racuna da mi varijabla ne iscezne a pokazivac ostane. Kako radi koja funkcija tj. algoritam (ako znam kako radi recimo malloc onda znam performanse i sta ne treba da radim). To se mozda uci na ETF-u ili RAF-u ali ja to nisam pohadjao. To iz knjige na srpskom da naucis, malo teze. Neke stvari da, ali ima toliko toga za nauciti. Jos sam teski nub kada je C++ u pitanju.
 
Poslednja izmena:
Zna li neko neku dobru knjigu na Srpskom vezano za Python za download? Nista ne uspevam da nadjem. Ako ko zna, moze link u PP

Sent from my SM-J500H using Tapatalk

Moj savet ti je nikada ne trazi srpsku literaturu jer uglavnom je losije napisana (posto je cesto prevedena), a i ako savladas strucni engleski otvorio si za sebe nepresusni izvor besplatnog znanja :)


Sent from my iPhone using Tapatalk
 
To ti je isto pitanje kao "da li uciti Angular ili Angular 2?". Python3 je buducnost, kako kazu. Ali sta ako firma gde trazis posao koristi Python2? Odrzavanje kompatibilnosti po svaku cenu je veliki problem ove nase industrije. Uciti Python na srpskom... nece se to dobro zavrsiti. Nijedna knjiga ne daje odgovore na sva pitanja, kada prodjes knjigu ostavljen si da trazis dalje po netu. Iz mog iskustva, na srpskom internetu je tesko naci odgovor na pitanja vezana za programiranje. Makar ta pitanja imala jednostavan odgovor.

Nisi me razumeo, ucim pajton vec 2-3 meseca, upoznat sam sa jezikom, ucim preko interneta, citam sa sajtova i gledam tutorijale, naravno na Engleskom. Knjige na srpskom mi trebaju da skinem par, pogledam koja mi deluje najbolje pa da je kupim jer bih cisto voleo da imam na polici :)

Sent from my SM-J500H using Tapatalk
 
Poslednja izmena:
Nazad
Vrh Dno