[ Nedeljko @ 18.08.2012. 20:16 ] @
Pitao me je jedan drugar kako da uputi nećaka. Razmišljao sam na datu temu i došao do sledećeg plana:

0. Prvo se moraju znati engleski jezik i nešto malo matematike (aritmetika realnih i celih brojeva zaključno sa delenjem celih brojeva sa ostatkom).
1. Savladati osnove programiranja. Znači, C sa osnovnim algoritmima (čitaj K&R), strukturna paradigma (svođenje složenih problema na prostije i modularnost) i sposobnost da se svaki algoritam koji se zna sprovesti "na ruke" zna isprogramirati u C-u. Diplomski rad je strukturni program u C-u koji za dati graf unet iz ulazne datoteke ispituje da li je Ojlerov, ako nije kaže da nije, a ako jeste nalazi bar jedan Ojlerov put i rezultat ispisuje na standardnom izlazu i u datoteci.
2. Objektno orjentisana paradigma u jeziku C++, Java, C# ili nekom drugom po izboru sa dizajn paternima.
3. GUI programiranje da se malo dane dušom od teških stvari.
4. Osnove XML-a, parsiranje formata koji nisu XML, tekstualnih i binarnih (npr. bmp).
5. Niti, deljena memorija, komunikacija između procesa, bazeni poruka, privilegije i atributi nad fajlovima, događaji (valjda se to zove sistemsko programiranje, nemam pojma).
6. Veb (prvo HTML i CSS, a onda dinamički veb).
7. SQL i takve baze podataka.

E, onda ga dalje ne treba upućivati, jer će sam videti šta ga zanima i krenuti dublje u nekom pravcu.

Ne računajući korak 0, mislim da je dalkeko najteži korak 1, pa 2, pa 7, a da su ostali koraci laki.

Šta mislite o ovome?
[ pexxi92 @ 18.08.2012. 20:26 ] @
Uglavnom se slazem. Naravno napomenuo bih da je ovo za programera (zanatliju , tehnicara...), mora se praviti razlika izmedju tog zanimanja i zanimanja poput Computer Engineer, Computer Scientist, Software Engineer itd... Za njih ovo nije put.
[ Nedeljko @ 18.08.2012. 20:32 ] @
A koji je za njih put? Ako se neko opredeli za oblast koja zahteva matematiku, naučiće šta mu treba.

Doduše, pitanje i jeste bilo za zanatliju.
[ the_tosic @ 18.08.2012. 20:32 ] @
Moje misljenje je da je 5 dosta teze za savladavanje nego 3,4,6,7, jer zahteva veliku promenu razmisljanja. Naravno ako se ne gleda samo pisanje i citanje soketa...
[ pexxi92 @ 18.08.2012. 20:38 ] @
Pa znas ipak smatram da nije isto sistematsko formalno obrazovanje i povremeno cackanje i ucenje na svoju ruku. Recimo neko ko bi se bavio AI-em, Computer vision-om, Machine Learning-om, Computer Graphics itd... Sve su to oblasti gde treba dosta vise formalnog i teorijskog znanja. Za njih je put jasan - fakultet iz oblasti koja ih interesuje. Znaci nemoj pogresno da me shvatis, ja se apsolutno slazem da je ono gre sto si napisao put za programera, ali da programer nije isto sto i inzenjer ili naucnik. Formalno obrazovanje nista ne moze adekvatno da zameni, da je tako vodeci svetski univerziteti bi vec odavno propali.
[ pexxi92 @ 18.08.2012. 20:43 ] @
Takodje ovo deluje kao da je napisano za aplikativnog programera. Ako neko zeli da se bavi programiranjem mikrokontrolera ili nekim paralelnim sistemima itd, neko kog uopste ne zanimaju baze nemora da ih uci znaci prvih par koraka je ok ali posle svako moze da ide na stranu na koju zeli ako ce vec da bude zanatlija neka uci sql onda kada mu zatreba , tj. ako ce ceo zivot da programira mikrokontrolere ne znam zasto bi mu trebao sql, xml, niti pa cak ni OOP.
[ Nedeljko @ 18.08.2012. 21:08 ] @
Mikrokontrolere u svakom slučaju ne programiraju programeri, već elektroničari. Pisanje malih programa nije nikakvo programiranje.
[ pexxi92 @ 19.08.2012. 12:29 ] @
Ok slazem se da ce to uglavnom raditi elektronicari samo sam naveo kao primer neceg drugog od aplikativnog programera.
Odgovori ti meni na prethodni post.
[ the_tosic @ 19.08.2012. 12:38 ] @
Ok pexi, da tebi dodje neki prosecan klinac 12-18 godina. (Dakle ne neko ko treba da krene na fax itd). Sta bi mu ti rekao?

Meni je ovo skroz odgovarajuce. Mozda bih samo gui stavio pre patterna jer konzola zna brzo da smori ako nemas interesantnih zadataka.
[ pexxi92 @ 19.08.2012. 13:30 ] @
Pa i reko sam da je odgovarajuce ako zeli da postane aplikativni programer.
Ako zeli da bude inzenjer ili Computer Scientist onda je to nesto drugo.
[ burex @ 19.08.2012. 13:31 ] @
Citat:
Mikrokontrolere u svakom slučaju ne programiraju programeri, već elektroničari. Pisanje malih programa nije nikakvo programiranje.

Treba biti malo više snalažljiv i imati malo više iskustva u programiranju od prosečnog programera da bi se iskoristili veoma ograničeni memorijski i procesorski resursi. Ne služi uvek mikrokontroler da pali 3 lampice i 1 relej.
[ Nedeljko @ 19.08.2012. 14:57 ] @
pexxi92

Ti si mlad, još uvek na početku, koliko vidim dobro učiš, ali tek treba da napraviš karijeru. Može neko da misli da će da pravi video igre i da ga baze ne zanimaju, ali životni putevi su krivudavi. Ne znaš kada će ti šta zatrebati. Nije čudno što te studije teraju da učiš svašta, a ne idu samo jenom linijom u jednom pravcu. Itekako se neka širina na kraju isplati.

I drugo, računarski naučnik i programer su potpuno odvojene stvari. Za bavljenje naukom možeš čak i da ne znaš nijedan programski jezik. Izračunaš složenost do na "veliko o" i štampaš rad. Naravno, svi oni znaju to da iskodiraju u bar jednom jeziku da bi isprobali nešto gde račun nije podesan (recimo, algoritam nije u opštem slučaju zaustavljiv, a kada jeste, vreme može biti proizvoljno dugo).
[ Boyka @ 19.08.2012. 17:06 ] @
Citat:
Nedeljko:
pexxi92

Ti si mlad, još uvek na početku, koliko vidim dobro učiš, ali tek treba da napraviš karijeru. Može neko da misli da će da pravi video igre i da ga baze ne zanimaju, ali životni putevi su krivudavi. Ne znaš kada će ti šta zatrebati. Nije čudno što te studije teraju da učiš svašta, a ne idu samo jenom linijom u jednom pravcu. Itekako se neka širina na kraju isplati.

I drugo, računarski naučnik i programer su potpuno odvojene stvari. Za bavljenje naukom možeš čak i da ne znaš nijedan programski jezik. Izračunaš složenost do na "veliko o" i štampaš rad. Naravno, svi oni znaju to da iskodiraju u bar jednom jeziku da bi isprobali nešto gde račun nije podesan (recimo, algoritam nije u opštem slučaju zaustavljiv, a kada jeste, vreme može biti proizvoljno dugo).


I u igrama baze trebaju, pogotovo na web miltiplayer igrama...
[ pexxi92 @ 19.08.2012. 17:25 ] @
Nedeljko
ti i dalje mene ne razumes, ja samo ocu da odvojim stvari. Neko ko zavrsi fakultet ce svakako svaku temu obraditi a neko ko je zanatlija ce uciti sta mu treba i kad mu treba.
[ Nedeljko @ 19.08.2012. 18:48 ] @
Ej, Boyka, oladi.

pexxi92,

Ne može zanatlija da uči zanat kad naiđe mušterija. To ne ide tako. Ljudi koji su kvalitetni programeri sa fakultetom ili bez njega imaju širinu u programiranju.
[ kkedacic @ 19.08.2012. 19:16 ] @
ASM, arhitektura CPU-a, branchanje, latencije, upravljanje memorijom to nista ne?
[ Shadowed @ 19.08.2012. 19:48 ] @
Citat:
pexxi92: Neko ko zavrsi fakultet..


"Neko ko zavrsi fakultet" ne znaci ama bas nista osim da je eventualno uporan. Bitno je ono sto nauci tokom pohadjanja tog fakulteta. Sreo sam ja gomilu njih koji su zavrsili fakultet i ne umeju vola prstom ubosti.
[ Nedeljko @ 19.08.2012. 21:06 ] @
Citat:
kkedacic: ASM, arhitektura CPU-a, branchanje, latencije, upravljanje memorijom to nista ne?

ASM i CPU arhitektura mogu ako se opredeli za to. Ne mislim da to spada u obaveznu osnovu. Pod "sistemskim programiranjem" sam naveo komunikaciju između procesa, gde osim komunikacije preko bazena poruka u deljenoj memoriji spadaju i sinhroni i asihnhroni pozivi ručno implementirani preko soketa. Optimizacija svega toga je dublji nivo ako se opredeli za to. To ne spada u osnove. Ako si pod "upravljanjem memorijom" mislio na alokatore i kasnije GC, slažem se da je korisno znati to okvirno. Preko toga ne spada u osnove.
Citat:
Shadowed: "Neko ko zavrsi fakultet" ne znaci ama bas nista osim da je eventualno uporan. Bitno je ono sto nauci tokom pohadjanja tog fakulteta. Sreo sam ja gomilu njih koji su zavrsili fakultet i ne umeju vola prstom ubosti.

Sreo sam i ja. No, tu se radi o razlici između studiranja i aktivnog studiranja.
[ flighter_022 @ 19.08.2012. 21:54 ] @
Secam se drugara iz srednje, vukovac (plakao kada je jednom dobio 4), a na vezbama iz elektro tehnike nije znao da spoji instrumente. Na kraju je otisao na tehnicku vojnu akademiju u Zagrebu (Jos je postojala YU).
[ pexxi92 @ 19.08.2012. 23:06 ] @
Shadowed nemoj da izvlacis stvari iz konteksta.

Nedeljko
naravno da nece da uci zanat kad naidje musterija, ali ce se opredeliti za tip zanata koji ce da uci. Ja sam naime samo hteo da kazem da nakon prvih par stavki moze da bude i drugacije granjanje u zavisnosti od interesovanja programera u usponu.
[ Ivan Dimkovic @ 19.08.2012. 23:25 ] @
@Nedeljko,

Primetio sam da jako cesto ljudi savetuju da se pocne sa proceduralnim jezikom, pa da se kasnije predje na OOP.

I obicno je to C pa C++ - nisam bas siguran da je to uvek dobra stvar. Ako se zakucas i previse naviknes na C, neke stvari ce ti zapravo teze ici u C++-u u poredjenju sa alternativom da se odmah uce osnove OOP-a.

Proceduralno programiranje je potencijalno stetno - posto ako neko previse navikne na C, moze zapoceti projekte sa proceduralnom paradigmom, a onda u pola projekta ima da rodi mecku da to prepravi u OOP posto ce ukapirati da je kod nemoguc za odrzavanje i prosirivanje.

Da ne bude zabune da sam OOP naci, ja sam poceo uciti programiranje sa asemblerom - ali iskreno, osim u vrlo specificnim okolnostima, mislim da je proceduralno programiranje vise stetno nego korisno, posto ce u 99% slucajeva kod koji napises biti reuse-ovan i prosirivan. Jeste za OOP u pocetku potrebno vise vremena da se raspisu interfejsi, klase itd... ali se to posle visestruko isplati.

Proceduralno programiranje bih iskljucivo ostavio za kratke pomocne asemblerske rutine i sl... ako za tako necim ima potrebe uopste. U vecini slucajeva nema, osim u mission-critical ili multimedijalnim/gaming aplikacijama.
[ Nedeljko @ 19.08.2012. 23:58 ] @
Citat:
pexxi92: Shadowed nemoj da izvlacis stvari iz konteksta.

Nedeljko
naravno da nece da uci zanat kad naidje musterija, ali ce se opredeliti za tip zanata koji ce da uci. Ja sam naime samo hteo da kazem da nakon prvih par stavki moze da bude i drugacije granjanje u zavisnosti od interesovanja programera u usponu.

Shadowed je dao odličan komentar. Evo, Ivan Dimković nema fakultet, a kao da ih ima dva.

Specijalizacija za jednu oblast ne vodi na put na kome će se neko 'leba najesti. Kao što rekoh, život je krivudav. Nikad ne znaš šta će da ti treba, pa je vrlo važno imati širinu. To ćeš shvatiti posle n godina radnog iskustva.

Ivane,

Samo neka nauči C sa proceduralnom paradigmom. Poenta tog koraka nije u C-u, već u programerskom opismenjavanju - da zna da isprogramira svaki algoritam koji zna peške da sprovede i da zna glavne algoritme. To je najteže i ne treba mu u toj fazi tovariti još tereta na samar. I ovo mu je previše.
[ burex @ 20.08.2012. 01:39 ] @
@Ivan Dimkovic
Znaš kako, i to je subjektivno. Pre par meseci sam čitao jedan lep članak koji je bio mali rant za loše prikazivanje OOP-a za početnike, pretežno se misli na ono tipično "class Životinje" pa "class kuce" pa "class mace" pa "int kolikoImaGodina()" i sl. koji ne opisuje kvalitetno osnovne principe OOPa i ono najbitnije - "zašto je to dobro" i "šta to zapravo radi". Možda i postoji neki dobar primer za apsolutne početnike u programiranju, ali ja ih još nisam našao, i lično sam kao mutav blejao u klase kuca, maca i životinja dok nisam shvatio da zapravo pravim male zatvorene sisteme koji imaju svoje "dugmiće" sa razlogom. Znali su i moji drugari da nalupaju neku klasu na kontrolnom zadatku iz programiranja za videoteku, ali nisu imali pojma kako to radi, zašto je to dobro i kako se to zapravo implementira. Dakle, za sebe smatram da je bilo dobro što sam prvo znao koncepte proceduralnog programiranja, ali to ne mora da bude pravilo.

Tu onda dolazi pitanje apstrakcije, naravno da je ponekad poželjna... pisanje razumljivog koda umesto ASM, ili pisanje ASM koda umesto binarnih opcodeova, ili pisanje binarnih opcodeova umesto ručnog graviranja binarnih brojeva u pločice :), ali glavno pitanje je - koliko treba štititi svežeg programera od ružne i komplikovane pozadine koja trči iza njegove hello world aplikacije? Imamo već jednu temu gde dečko tvrdi da zna C# (kako ono beše ide: "I know kung fu"... "Show me"), i na kraju ispada da je samo zagrebao površinu. Da li je bio pogrešan pristup škole koja ga je učila ovome? Ili se već podrazumeva da se prvo radi na jednom početničkom nivou sa garbage-collection jezicima, pa se onda zalazi u "dubine" memorije, pa se tek kasnije nastavlja napredniji razvoj?

Za početak, možda ne bi bilo loš ovakav koncept (interpretirani jezik, vidim samo jedva malo nekog kvazi OOPa umesto main funkcije):
http://www.khanacademy.org/cs


Citat:
Nedeljko:
Shadowed je dao odličan komentar. Evo, Ivan Dimković nema fakultet, a kao da ih ima dva.

Uglavnom kada me neko pita da li "fakultet vredi", odgovorim sa nekom mojom glupom izrekom: Da bi video koliko je studiranje nepotrebno, moraš prvo da studiraš... To naravno ne znači da je studiranje nepotrebno, već da ne daje svo znanje ovog sveta koje većina osoba kod nas smatra da treba da daje, i to poprilično proizilazi iz tvog potpisa "Ko zna da ne zna - najveći je.".
[ atelago @ 20.08.2012. 09:09 ] @
Citat:
Nedeljko:  Evo, Ivan Dimković nema fakultet, a kao da ih ima dva.

Interesantna jezička konstrukcija a još interesantnija procena količine fakulteta!
[ Nedeljko @ 20.08.2012. 09:15 ] @
Citat:
burex: Uglavnom kada me neko pita da li "fakultet vredi", odgovorim sa nekom mojom glupom izrekom: Da bi video koliko je studiranje nepotrebno, moraš prvo da studiraš... To naravno ne znači da je studiranje nepotrebno, već da ne daje svo znanje ovog sveta koje većina osoba kod nas smatra da treba da daje, i to poprilično proizilazi iz tvog potpisa "Ko zna da ne zna - najveći je.".

Fakulteti su itekako potrebni. Sve se može naučiti i bez njih, ali je to mnogo teži način. Ko kuburi sa fakultetom, ni bez njega neće postati stručnjak. Tesla nije kuburio sa studijama, već je uvideo da ih prevazilazi.

E, sad, da bi neko ko završi fakultet imao relevantna znanja, neophodno je da na pravilan način pristupi studijama. Ne da otaljava ispite, nego da vidi nešto što mu se sviđa i da to dalje produbljuje, a da mu fakultet pokazuje pravce mogućeg usavršavanja. E, to je onda aktivno studiranje.
[ Ivan Dimkovic @ 20.08.2012. 12:08 ] @
Citat:
Nedeljko
Shadowed je dao odličan komentar. Evo, Ivan Dimković nema fakultet, a kao da ih ima dva.


Uh, hvala na komplimentu ali sumnjam da posedujem i pribliznu kolicinu znanja.

Citat:

Specijalizacija za jednu oblast ne vodi na put na kome će se neko 'leba najesti. Kao što rekoh, život je krivudav. Nikad ne znaš šta će da ti treba, pa je vrlo važno imati širinu. To ćeš shvatiti posle n godina radnog iskustva.


Upravo. Specijalizacija, recimo za neki programski jezik ili framework ce donositi hleb na stolu neko vreme, ali svaki programski jezik / framework / API / ... ce jednom zastareti.

To ne znaci da je specijalizacija losa - daleko od toga, ali nije pametno cak ni specijalistima da prestanu da budu u toku sa alternativama i novim stvarima u svetu ICT-a, iz prostog razloga sto su promene u IT industriji po pravilu disruptivne i tesko predvidljive... Neki "glupi framework" moze vrlo lako postati kljucni alat u zavisnosti od strategije i uspeha autora istog.

Citat:

Ivane,

Samo neka nauči C sa proceduralnom paradigmom. Poenta tog koraka nije u C-u, već u programerskom opismenjavanju - da zna da isprogramira svaki algoritam koji zna peške da sprovede i da zna glavne algoritme. To je najteže i ne treba mu u toj fazi tovariti još tereta na samar. I ovo mu je previše.


Da se nadovezem na ovo i burex-ov post: mislim da je kljucna stvar razumevanje, tj. adekvatno usvajanje gradiva gde je rezultat dobro razumevanje materije.

Drugim recima, moze se poceti sa asemblerom, basic-om, C-om, C++-om ali nista to ne vredi ako se gradivo ne savlada i nagruva napamet, kao u burex-ovom primeru. Takva osoba ce biti sposobna da pise kod, ali na zalost - softver je pun takvog koda, pogotovu Internet servisi, i probleme koju takvi developeri/sw. inzenjeri prave posle neko mora da krpi ili, jos gore, takav kod ostane i korisnici moraju da zive sa bagovima ili losim performansama :(

Cisto prirodno gledano, proceduralni kod bi trebalo da se uci pre objektnog bas kao sto je Nedeljko naveo, posto je objektni kod nastao kasnije, i zapravo se oslanja na proceduralni kod "ispod haube". Moj primer je bio samo da to moze da ima lose posledice, ali slazem se da je sustina tih losih posledica zapravo los rezultat u savladavanju gradiva - a ne nesto specificno samo za proceduralno programiranje, te da pocetak sa objektnim programiranjem ne bi nuzno resio taj problem.

Bas kao sto je neko lose savladao proceduralno programiranje i drzi se uvek toga cak i kada je kontraproduktivno, tako neko moze lose savladati OOP, bas kao u burex-ovom primeru, pa ce se drzati nekih konstrukata koji nisu optimalni.

Citat:

burex: Uglavnom kada me neko pita da li "fakultet vredi", odgovorim sa nekom mojom glupom izrekom: Da bi video koliko je studiranje nepotrebno, moraš prvo da studiraš... To naravno ne znači da je studiranje nepotrebno, već da ne daje svo znanje ovog sveta koje većina osoba kod nas smatra da treba da daje, i to poprilično proizilazi iz tvog potpisa "Ko zna da ne zna - najveći je.".


IMHO, studije su dobar nacin za obrazovanje zato sto su lepo upakovane u proizvod. Proizvod je, na primer, dobijanje znanja i zvanja za profesije "Softverski inzenjer", "Computer Scientist" (kako se to zove na srpskom, sorry?) itd...

I taj "upakovani" proizvod sadrzi sve sto je potrebno da bi neko postao bas to. Pokusacu da objasnim to sa malo duzim postom - koji ce mnogima biti "navodjenje ociglednog", ali verujem da ce biti koristan mladim ljudima koji nisu jos sigurni sta hoce a imaju interes za neku od ICT disciplina:

--

Termin "upakovan proizvod" znaci da je odabir kurikuluma je baziran na iskustvu strucnjaka u toj bransi i, bar u teoriji, sadrzi optimum gradiva za dobijanje odredjenog zvanja. Plus: angazovani su profesionalci koji ce obucavati i voditi studente u procesu usvajanja znanja koje je sadrzano u materijalu unutar kurikuluma.

Ovo gore znaci da je potrebno "samo" da se taj kurikulum prati i savlada, od studenta se "samo" trazi da ulozi svoj licni trud i savlada gradivo a to se proverava na ispitima. Provera znanja na ispitima znaci da postoji i komponenta testiranja da li je konkretno gradivo usvojeno. U kreiranje tih ispita je, takodje, ulozeno vreme strucnjaka koji su ispitne zadatke kreirali sa ciljem da uspeh u resavanju tih ispitnih pitanja/zadataka bude vrlo dobar indikator konkretne kolicine savladanog gradiva.

Drugim recima, bar u teoriji*, studije su efikasan nacin da neko postane skolovan za odredjeno zvanje. Studije, takodje, omogucavaju i da neko odabere naucnu karijeru tj. da mu sama profesija bude nauka.

Da li to znaci da su studije jedini nacin da neko postane strucnjak? Za oblast ICT-a to definitivno nije slucaj. Moguce je postici to isto i bez formalne institucije, ali onda individua koja odabere taj nacin mora da sama organizuje:

a) Odabir gradiva i prioritete
b) Literaturu i materijal za odabrano gradivo
c) Nacin provere svog znanja ukljucujuci i vezbe/testove koji ce se koristiti za samu proveru usvojenog znanja

Ako je neko dovoljno organizovan i samokritican i zna kako da odabere relevantno i potrebno gradivo (ili, bar, da nadje konkretne sadrzaje adekvatnih kurikuluma za dobijanje konkretnog zvanja), moguce je da sam sebe obrazuje i da kvalitet toga potencijalno bude cak i veci od neke konkretne obrazovne institucije. Ali, kao sto se vidi, za to je potrebno da individua poseduje odredjene sposobnosti koje nisu neophodne za pohadjanje i savladavanje kurseva u formalnim obrazovnim institucijama.

Takodje, bez formalne institucije je sama individua odgovorna za to da sadrzaj gradiva bude adekvatan. Isto tako, u slucaju da postoje nejasne stvari (a to je neizbezno), nalazenje odgovora na nejasnoce ce, takodje, biti iskljucivo posao te individue. Eventualno, za vecinu stvari u ICT-u je moguce pronaci odgovor u adekvatnoj literaturi (knjigama, online izvorima - web sajtovima, radovima, kodu itd...), ali za to je potrebno uloziti komparativno vise vremena u poredjenju sa postavljanjem pitanja profesoru. Sa druge strane, to moze biti dobro posto u tom procesu individua nauci da sama pronalazi relevantne podatke a ne da dobija stvari "na tanjiru", ali sve to ima svoju cenu u neophodnom ulaganju dodatnog vremena i truda u poredjenju sa formalnim studijama.

Dakle, potrebno je vise resursa i posedovanje dodatnih sposobnosti kako bi se postiglo ekvivalentno obrazovanje u kucnoj reziji. Sto znaci: nije nemoguce, ali nije ni nesto sto moze da izvede svaka osoba koja bi, inace, bila kvalifikovana za pohadjanje kursa u formalnoj obrazovnoj instituciji.

To takodje znaci da, ukoliko ta osoba nema te dodatne sposobnosti i resurse, lako moze da se desi da ne postigne zeljeni cilj, tj. da bude neadekvatno obrazovana (jos gora varijanta je da misli da je dovoljno obrazovana - a nije). Moguce je, naravno i obrnuto - da ta osoba na kraju usvoji vise znanja za isto vreme koliko bi trebalo uloziti za dobijanje formalnog zvanja na fakultetu.

Uratko: sve ovo gore napisano je objasnjenje za savet koji cu dati mladim ljudima koji pred sobom imaju ovu dilemu: dobro razmislite da li imate neophodne sposobnosti / kvalitete da sami sebe obrazujete. Dajte sebi iskren odgovor - posto od laganja samog sebe gubite samo vi. Ukoliko je odgovor pozitivan, pred vama ce biti vrlo zanimljiv ali i naporan period. Ukoliko je odgovor negativan, ili niste sigurni - odaberite "laksi" nacin, upisite studije: u tom slucaju "sve" sto morate da uradite je "samo" da ulozite trud i paznju u sledecih 3-4-5... godina. To je daleko od "lakog" ali je bar sigurno, tj. rezultat je garantovan ako se dovoljno potrudite (podrazumeva se da ste bar prosecno inteligentni**, sve iznad toga je plus - ali ne i zamena za neophodan trud).

--

* "Bar u teoriji" je navedeno zbog toga sto, kao sto svi znamo, postoje obrazovne institucije koje ne zasluzuju da se tako zovu, razni "instant" fakulteti koji nisu nista bitno vise od obicne stamparije za diplome. Sve sto je napisano gore se odnosi samo na adekvatne tj. kvalitetne obrazovne institucije

** Pretpostavljam da je moguce postati bar minimalno osposobljen za zvanje u ICT struci sa blago ispod-prosecnom inteligencijom, ali ce kolicina truda koji je neohodno uloziti vrlo verovatno biti bitno veca u poredjenju sa prosecno ili iznad-prosecno inteligentnom osobom (u drugom slucaju ce razlika u neophodnom trudu biti verovatno jos veca). Zapravo, sama inteligencija je verovatno i najmanje bitan faktor u poredjenju sa trudom i interesovanjem


[Ovu poruku je menjao Ivan Dimkovic dana 20.08.2012. u 13:31 GMT+1]
[ Shadowed @ 20.08.2012. 13:06 ] @
Citat:
Ivan Dimkovic: @Nedeljko,

Primetio sam da jako cesto ljudi savetuju da se pocne sa proceduralnim jezikom, pa da se kasnije predje na OOP.

I obicno je to C pa C++ - nisam bas siguran da je to uvek dobra stvar. Ako se zakucas i previse naviknes na C, neke stvari ce ti zapravo teze ici u C++-u u poredjenju sa alternativom da se odmah uce osnove OOP-a.

Proceduralno programiranje je potencijalno stetno - posto ako neko previse navikne na C, moze zapoceti projekte sa proceduralnom paradigmom, a onda u pola projekta ima da rodi mecku da to prepravi u OOP posto ce ukapirati da je kod nemoguc za odrzavanje i prosirivanje.

Da ne bude zabune da sam OOP naci, ja sam poceo uciti programiranje sa asemblerom - ali iskreno, osim u vrlo specificnim okolnostima, mislim da je proceduralno programiranje vise stetno nego korisno, posto ce u 99% slucajeva kod koji napises biti reuse-ovan i prosirivan. Jeste za OOP u pocetku potrebno vise vremena da se raspisu interfejsi, klase itd... ali se to posle visestruko isplati.

Proceduralno programiranje bih iskljucivo ostavio za kratke pomocne asemblerske rutine i sl... ako za tako necim ima potrebe uopste. U vecini slucajeva nema, osim u mission-critical ili multimedijalnim/gaming aplikacijama.



Mislim da bi se problem na koji ukazujes javljao ako se dugo zadrzi na proceduralnom programiranju. Ako bi se proceduralno ucilo kao uvod u OOP, koji ce posluziti da se shvate osnovne konstrukcije u programiranju (grananje, petlje i sl.) a kad je to sve jasno i utvrdjeno odmah nastavi dalje, mislim da ne bi bilo problema i to je nacin koji bih i ja predlozio.
[ Nedeljko @ 20.08.2012. 13:35 ] @
Citat:
Ivan Dimkovic: Uh, hvala na komplimentu ali sumnjam da posedujem i pribliznu kolicinu znanja.

Sumnjaš zato što nisi na studijama video gomilu studenata i kvalitete prosečnog.
Citat:
Ivan Dimkovic: To je daleko od "lakog" ali je bar sigurno, tj. rezultat je garantovan ako se dovoljno potrudite (podrazumeva se da ste bar prosecno inteligentni**, sve iznad toga je plus - ali ne i zamena za neophodan trud).

** Pretpostavljam da je moguce postati bar minimalno osposobljen za zvanje u ICT struci sa blago ispod-prosecnom inteligencijom, ali ce kolicina truda koji je neohodno uloziti vrlo verovatno biti bitno veca u poredjenju sa prosecno ili iznad-prosecno inteligentnom osobom (u drugom slucaju ce razlika u neophodnom trudu biti verovatno jos veca). Zapravo, sama inteligencija je verovatno i najmanje bitan faktor u poredjenju sa trudom i interesovanjem

Što znači da nisi bio u vojsci, čim imaš takvo mišljenje o prosečnoj inteligenciji. Nedavno je ispred moje zgrade buljuk komšija raspravljao o tome da li je 14x17 više ili manje od 100. Samo sam ja bio siguran u tačan odgovor.
[ Chobicus @ 20.08.2012. 15:28 ] @
Norvig ima zanimljive savete kako postati programer: Teach Yourself Programming in Ten Years

"Get interested in programming, and do some because it is fun....
Talk with other programmers...
If you want, put in four years at a college (or more at a graduate school). This will give you access to some jobs that require credentials...
Work on projects with other programmers...
Work on projects after other programmers...
Learn at least a half dozen programming languages...
..."
U tekstu su navedeni i razlozi.
Mislim da bez engleskog jezika teško može da se napreduje.
[ DusanSukovic @ 20.08.2012. 16:05 ] @
Citat:
Chobicus:
Mislim da bez engleskog jezika teško može da se napreduje.


A to je neka natprosecno teska stvar? :) Ako je vec neko spreman da ulozi 10 godina da bi bio ekspert, sigurno ce uloziti max 6 meseci intenzivnog kursa ili ucenja kod kuce da bi razumeo engleski jezik..
[ burex @ 20.08.2012. 16:22 ] @
Jeste. Učenje novog jezika jeste teška stvar. Ne kažem da je natprosečna u odnosu na ostale jezike, ali nije nešto što nije teško. To što neko može posle osnovne škole da pročita neki članak na Engleskom jeziku pa da otprilike zaključi šta je pisac hteo da kaže je jedna stvar, ali da detaljno shvati o čemu se tu radi pa da zatim ume da pošalje elokventan odgovor na tu temu je druga stvar. Imao sam priliku da vidim gomilu onih što na CV-u stavljaju znanje engleskog jezika 5, a da su razgovetni na sistemu "hau du ju du?". Sa prosečnim znanjem Engleskog jezika ne znam koliko se može daleko stići u ovom domenu, ali oni koji imaju naprednije znanje mnogo lakše zalaze na Wikipediju i mogu da čitaju stručne knjige na Engleskom jeziku. Srpskohrvatsko govorno područje nema puno da ponudi u domenu novih tehnologija, a ono što ima se uglavnom svodi na prevode stranih dešavanja, izdanja i članaka, što ponekad zna da proizvode frustrirajuće, pa i komične rezultate. (loš miks srpskog jezika sa gomilom stranih izraza, ili još gori miks srpskog jezika sa prevedenim stranim stručnim izrazima - "nalepi sadržaj predloška na radnu površinu", npr.)

Edit (pošto si dodao rečenicu više):
Citat:
sigurno ce uloziti max 6 meseci intenzivnog kursa

Optimisto :)
[ pexxi92 @ 20.08.2012. 18:25 ] @
Nedeljko ne znam da li ti uopste procitas moj komentar pre nego sto odgovoris. Znaci ja nisam nigde rekao da neko ko ima fakultet automatski zna bolje, nego da ce on imati sistematsku obradu gradiva i da je to daleko laksi i normalniji nacin obrazovanja.
Takodje nisam rekao specijalizovati jednu oblast i to je to. Znaci ponavljam: nakon prvih par koraka koje si naveo sledeci koraci ne moraju ici tim redom vec se mogu granati na razlicite nacine. Samo sam hteo da kazem da ne gledam na put kao na listu vec kao na stablo ;)
[ Nedeljko @ 20.08.2012. 20:23 ] @
Baze se moraju znati, OOP se mora znati, GUI se mora znati, sistemsko programiranje se isto mora znati, čitanje i pisanje datoteka u raznim formatima se mora znati, veb se mora znati. Sve to je obavezno. Redosled možda može da se promeni, ali da neko uči nešto od toga kada mu zatreba i ako mu zatreba, to ne.
[ Stijak @ 21.08.2012. 13:50 ] @
Pretjerujete. Znam neke osnovne stvari o htmlu, znam kako da pošaljem post ili get zahtjev serveru i dobijem sadržaj u svojoj aplikaciji. Zašto bi mi sada trebao php, javascript ako mi web nije na listi interesovanja? U timu imam web programere - i ukoliko nam treba neka interakcija - zajedno se dogovorimo i to odradimo... Ne znaju ni oni Javu ili android APIje onoliko koliko ih ja znam...

Ja sam prvo naučio Javu - pa se onda spuštao preko C++a na C, usput učivši malo i neke druge jezike sa drugačijim paradigmama (Python, Scheme, Assembler) ali tu nisam ulazio u dubinu -već da mi pomognu u shvatanju nekih suštinskih stvari.



A i ne slažem se oko poretka. Na Stanfordu - fakultetu čiji se CS program smatra drugim na svijetu (poslije MITa i koji je iznedrio firme kao što su Google, linkedin, Netflix, Paypall, Yahoo) se programiranje počinje nekim grafičkim "programskim jezikom" (Karel the robot) - reprezentacijom robota na šahovskoj tabli sa kojim upravljaš sa nekoliko najosnovnijih komandi (move(), turnLeft() leaveFlag(), pickFlag()...), pa se sa tim "jezikom" kasnije čine čuda, računaju se integrali, traži se algoritam izlaska iz lavirinta (depth first vs. breadth-first), vrše se sortiranja. Poslije toga ide java - pa onda C++, pa se onda poslije silazi na proceduralne jezike... I nije stanford usamljen i MIT i većina vrhunskih CS programa ide tim putem.

Kad su objašnjavali zašto koriste Kerel - objašnjenje je bilo da im je cilj da studenti od početka uče da su algoritmi mnogo bitniji od sintakse - pa nisu hteli studente početnike da zatrpavaju sintaksom i da u svemu tome zaborave na poentu i učenje algoritama. Kada se osnovni algoritmi prihvate i uvidi koliko je programiranje zabavno - koliko je ispunjujuće kada kombinujući osnovne algoritme riješiš neki problem koji na početku izgleda teško - onda se može preči i na jezike sa više sintakse.

To nekako mogu da potvrdim i iz ličnog iskustva. Moji pokušaji da u mladosti naučim programske jezike iz početka su propadali jer me je sintaksa udavila i pre nego sam bio u stanju da uradim išta iole interesantno - pogrešno sam zaključio da je programiranje puno dosadnog kucanja besmislenih stvari da bi se uradilo i nešto najjednostavije. Kada sam krenuo od Jave i u roku od koji mjesec pravio već poprilično kompleksne aplikacije - pravo je zadovoljstvo bilo kasnije se spuštati u C da bi vidio inner working i skontao stvari kao šta je tačno hashmap i kako je implementirana i kako je brža za upite od treemap :)
[ pexxi92 @ 21.08.2012. 18:40 ] @
Odlicno receno, recimo na MIT-u se prvo radi u Scheme koji je funkcionalni jezik. Naravno da ako necu da se bavim php-om nemoram da pogledam dok ne dodje vreme. Ok je da se znaju osnovni principi ali jednostavno nije logicno da se svako specijalizje za sve.
[ Nedeljko @ 21.08.2012. 19:19 ] @
Ono što sam napisao nije specijalizacija nizašta, već predstavlja osnovu iz nekoliko oblasti, posle čega će sam znati šta će da specijalizuje. Štagod specijalizovao, širina mu treba. A ako si mislio da ne znaš npr. veb, nego ne znam šta, u programiranju se nećeš 'leba najesti. Pogledaj konkurse za posao. Za najveći broj pozicija je potrebno znati više oblasti.
[ Stijak @ 22.08.2012. 00:59 ] @
Ja još nisam vidio oglas gdje traže i web programiranje i "klasično" programiranje (što ne znači da ne postoje). Obično se traže povezane stvari npr. php i JavaScript ili Java i C++, Android i iOS. Mada sam ja našao posao samo sa relativno OK znanjem Jave i Android APIja i površnim znanjem još par jezika... Naravno - ne bježim od toga da širim svoje znanje kroz projekte koji imaju neke dodirne tačke sa tim i već to i radim - ali mi je bio cilj da prvo nadjem posao - a ne da me roditelji plaćaju da se godinama usavršavam "u širinu"...

I za 2-3 godine možeš naučiti npr. javu, android, Spring, hibernate, osnove baza, (ili sličan web put ukoliko si zainteresovan za Web programiranje) zagrebati malo ostale jezike čisto da imaš uvid u razne paradigme koje se koriste (npr ovaj Stanfordov kurs ima za cilj baš to - http://www.youtube.com/watch?v=Ps8jOj7diA0) i sa tim mislim da daleko veće šanse da nadješ posao nego ukoliko to isto vrijeme potrošiš da stekneš jednako znanje u svim programskim jezicima...

Kod nas i nemamo pravog CS programa na državnim fakultetima (na papiru - program privatnog računarskog fakulteta izgleda OK, ali ne znam kako je u praksi) - a opet se svi drže programa informatike na PMFu ili na računarstva na ETFu. Umjesto da vam uzor budu MIT, Stanford pa da kažete ljudima - učite kako tamo ljudi uče - vi predlažete ta neka počinjanja sa C i slično što se još samo kod nas tako radi... Dobro je - bar se malo mjenja situacija - jer ljudi više ne preporučuju pascal za početak, ha ha ha.
[ Goran Rakić @ 22.08.2012. 01:07 ] @
Citat:
pexxi92:
Odlicno receno, recimo na MIT-u se prvo radi u Scheme koji je funkcionalni jezik.


Prešli su na Python u 6.001, mada nastavak i dalje stoji.
[ Nedeljko @ 22.08.2012. 02:11 ] @
Python spada u jezike koji su laki za učenje, baš kao i C, s tim da je prednost C-a što više savremenih popularnih jezika nasleđuju njegovu sintaksu.
[ djordjeno @ 22.08.2012. 12:17 ] @
@Stijak

Koliko znam i kod nas se na fakultetima prvo pokazuju (crtaju) samo algoritmi, tj bez konkrente implementacije.
Istina, to se radi kratko na uvodnim predavanjima i vezbama. Ocigledno premalo u poredjenju sa MIT i CS...

[ Nedeljko @ 22.08.2012. 13:35 ] @
C je osim toga blizak mašini, tako da daje okvirnu predstavu o tome kako računar radi.
[ pexxi92 @ 22.08.2012. 20:41 ] @
Nedo bog nekom univerzitetu da mu Nedeljko pise plan i program.
[ Nedeljko @ 22.08.2012. 20:53 ] @
E, vidiš, na studijama te teraju da učiš svašta. To tvoje "šta će mi veb, kad ja hoću asembler" fore ne prolaze. Studije ti uvek daju neku širinu jer, kao što kažem, život je krivudav, pa ako zaš samo jednu stvar da radiš, nećeš se 'leba najesti.
[ pexxi92 @ 22.08.2012. 23:07 ] @
Znaci gresis na tolko mnogo nivoa.
Prvo ako neko ide na studije sta ce mu tvoj savet i spisak sta i kojim putem da uci. Ima strucne ljude koji ce ga kroz to provesti ne sekiraj se mnogo.
Dalje na bilo kom iole normalnom univerzitetu sam biras predmete tako da mogu da se edukujem iz cega god hocu.
A ne vidim ni da si se ti od programiranja "leba najeo".
[ Nedeljko @ 22.08.2012. 23:19 ] @
Od čega sam se ja 'leba najeo, a od čega nisam, nije tvoje da ulaziš u to i ne znam odakle ti takve procene. Počeo si da budeš bezobrazan.

Ni na jednom ozbiljnom univerzitetu nemaš punu slobodu izbora predmeta, već postoje obavezni predmeti i izborni predmeti. Na Zapadu je princip da u toku studija imaš više izbornih predmeta, nego obaveznih, ali obavezni itekako postoje. Svaki, ali svaki ozbiljan univerzitet ti daje širinu i to nisam izmislio ja, nego čike koje su nadležne za to. Naravno, nešto se specijalizuje. Podsećaš me na izumitelje usmerenog srednjeg obrazovanje sa smerovima "izrađivač petopolnih kablva tipova A i B". Stvarno je postojao takav smer.
[ pexxi92 @ 22.08.2012. 23:21 ] @
A kad sam ja reko da ne daje sirinu. Uzmi i citiraj moj post kad sam ja naveo da iskljucivo ne treba imati sirinu vec samo jedno jedino. Ajde to uradi.
[ Nedeljko @ 22.08.2012. 23:32 ] @
Pa, evo šta si napisao:
Citat:
pexxi92: Takodje ovo deluje kao da je napisano za aplikativnog programera. Ako neko zeli da se bavi programiranjem mikrokontrolera ili nekim paralelnim sistemima itd, neko kog uopste ne zanimaju baze nemora da ih uci znaci prvih par koraka je ok ali posle svako moze da ide na stranu na koju zeli ako ce vec da bude zanatlija neka uci sql onda kada mu zatreba , tj. ako ce ceo zivot da programira mikrokontrolere ne znam zasto bi mu trebao sql, xml, niti pa cak ni OOP.

Savremeni programer mora da zna i osnovne algoritme i da implementira svaki algoritam koji zna da sprovede na ruke (dobro, to je uvek bilo i ostaće tako) i SQL i XML i parsiranje formata koji nisu XML i OOP i sve što sam nabrojao, jer ne zna šta ga čeka u životu.

Ja nisam znao kako da protumačim podvučeno, nego da treba da uči SQL kad naiđe mušterija ili kad izađe takav konkurs. Onda si ti napisao
Citat:
pexxi92: naravno da nece da uci zanat kad naidje musterija, ali ce se opredeliti za tip zanata koji ce da uci. Ja sam naime samo hteo da kazem da nakon prvih par stavki moze da bude i drugacije granjanje u zavisnosti od interesovanja programera u usponu.

Dakle, opredeliće se za tip zanata, tako što mu ne trebaju baze i XML. E, pa na takav "tip zanata" se ne može osloniti u životu. Ono što sam naveo je ta osnova. Posle ide grananje, oš 3D grafiku, oš informacione sisteme, oš nosql baze, oš sistemsko programiranje u dubinu...

A sad ti navedi kako si izveo zaključke o tome od čega se ja leba nisam najeo, obzirom da na forumu nigde nisam pisao o tome čime se bavim.
[ Stijak @ 22.08.2012. 23:49 ] @
Dobro nedeljko - jer ti misliš da si ti pametniji od svih tih genijalaca na MITu, Stanfordu i ostalim vrhunskim CS fakultetima zajedno? Pored toga što počinju od algoritama i viših jezika - većina ispita su im izborni i ne tjeraju te da učiš sve jezike - već ono što te zanima i ono što misliš da će ti koristiti uz osnove nekih obaveznih jezika.

Citat:
C je osim toga blizak mašini, tako da daje okvirnu predstavu o tome kako računar radi.

To je baš razlog zašto ga ne treba prvog učiti. Onda bi po toj logici još pre trebalo da se uči ansembler - pa onda umjesto da razmišljaš o nekom lijepom algoritmu da elegantno riješiš fin zadatak - ubijaš se razmišljanjem šta u koji registar učitati i kojim redosledom osnovne operacije na tome uraditi, gdje jumpovati i slično... Ljudi razmišljaju poprilično drugačije - i ukoliko direktno upravljamo kompjuterskom arhitekturom - to nam samo stoji na putu da na efikasniji način svoje ideje pretočimo u kod.

Za razumjevanje kako računar radi dobro je da imaš osnovnu predstavu i razumiješ O notaciju - a za ono malo slučajeva real-time programiranja, kodiranja codec-a i slično - tu ćeš svakako morati da učiš low level jezike.
[ Nedeljko @ 23.08.2012. 00:14 ] @
Ne, ja samo mislim da su genijalci kao što si ti vrlo loše obavešteni o tim univerzitetima. Ko je rekao da treba učiti sve jezike? Imaš li ti ikakvu predstavu o tome koliko ima programskih jezika? Šta, na MIT-u te ne nauče baze? Kako da ne. A što se tiče toga da je većina ispita obavezna, to sam i ja rekao, ali obavezni predmeti postoje. Vidi šta je sve obavezno na tim univerzitetima, pa onda soli pamet o tim univerzitetima.
[ Nedeljko @ 23.08.2012. 00:20 ] @
Kada sam otvorio temu, hteo sam da čujem tuđa argumentovana mišljenja, a ne etikete, prepucavanja i pravljenja nekoga budalom.
[ Goran Rakić @ 23.08.2012. 00:38 ] @
Meni se ipak čini na prvi pogled da programi na MIT ili Stanfordu daju veću slobodu [1] [2], ali istovremeno obavezuju na širinu.

Za temu ove diskusije to nije toliko bitno jer ovde pitanje glasi kako postati programer. Tu bismo prvo morali da se dogovorimo šta je to programer. Svako ima sopstveni put i interesovanja, pa se meni cela diskusija čini besmislena.

http://cs.stanford.edu/degrees/undergrad/ProgramSheets.shtml
http://web.mit.edu/catalog/degre.engin.ch6.html
[ Nedeljko @ 23.08.2012. 08:32 ] @
A ako te neko pita da ga uputiš? Šta onda?
[ Chobicus @ 23.08.2012. 10:02 ] @
Odgovor na pitanje "Kako postati programer" zavisi od toga kako definišeš reč "programer". Nedeljko je dao svoju definiciju u 7-8 tačaka.

Par primera:

1. Prijatelj radi u Belgiji u velikoj firmi koja zapošljava veliki broj programera. Ima mnogo kolega koji su u svojim 40tim zaključili da je programiranje zanimljivo i traženo. Završili možda par kurseva i programiraju nešto "nekritično". Zaposleni su na pozicijama gde se traži malo znanja, ali određenog znanja i ta znanja su im pružili specifični kursevi. Ne znaju kako izgleda procesor, pipeline, adresiranje memorije, čitanje sa diska, algoritme, C, parsiranje, threading, events, sql... ali može se reći da programiraju.

2. Drugi prijatelj zna sve gore navedene pojmove. Zna kako rade. Programirao je u JAVA-i, C-u, asembleru...Neko vreme je u silikonskoj dolini programirao neke uređaje koji će da se pojave za možda 10ak godina u masovnoj proizvodnji. Može se reći da programira.

3. Firma prodaje software koji bi trebalo da je ozbiljan jednoj ozbiljnoj ustanovi u mom gradu. Naslagali su forme u accessu, povezali ih sa tabelama, napravili reporting i čini mi se da lepo žive od takvog i sličnog SWa koji prodaju. Mislim da nikad ni na čemu nisu pokrenuli "compile". Može se reći da programiraju.

Ako definišemo da je "programer"<=>"onaj koji programira mašinu da bi olakšala nekome svakodnevni posao" sve osobe navedene u primerima su programeri.

Što se tiče Nedeljkove definicije:
Citat:

0. Prvo se moraju znati engleski jezik i nešto malo matematike (aritmetika realnih i celih brojeva zaključno sa delenjem celih brojeva sa ostatkom).

Ok
Citat:

1. Savladati osnove programiranja. Znači, C sa osnovnim algoritmima (čitaj K&R), strukturna paradigma (svođenje složenih problema na prostije i modularnost) i sposobnost da se svaki algoritam koji se zna sprovesti "na ruke" zna isprogramirati u C-u. Diplomski rad je strukturni program u C-u koji za dati graf unet iz ulazne datoteke ispituje da li je Ojlerov, ako nije kaže da nije, a ako jeste nalazi bar jedan Ojlerov put i rezultat ispisuje na standardnom izlazu i u datoteci.

C baš i nije za početnike. Python koji je i MIT uveo u svoj 6001. class je nekako prijatniji.
Besplatne knjige greenteapressa How to Think Like a Computer Scientist su prilično čitljive.
Stari 6001. class je gurao po Structure and Interpretation of Computer Programs.
Citat:

2. Objektno orjentisana paradigma u jeziku C++, Java, C# ili nekom drugom po izboru sa dizajn paternima.

PLz no design patterns, plz...
Zanimljiv tekst sa kojim se slažem u vezi sa patternima Rethinking Design Patterns by Jeff Atwood osnivača Stack Exchange-a.
"Do you really want a junior developer using patterns everywhere? It's about as safe as encouraging them to "experiment" with a gas-powered chainsaw. The best way to learn to write simple code is to write simple code! Patterns, like all forms of compexity, should be avoided until they are absolutely necessary. That's the first thing beginners need to learn. Not the last thing."
Citat:

3. GUI programiranje da se malo dane dušom od teških stvari.
4. Osnove XML-a, parsiranje formata koji nisu XML, tekstualnih i binarnih (npr. bmp).
5. Niti, deljena memorija, komunikacija između procesa, bazeni poruka, privilegije i atributi nad fajlovima, događaji (valjda se to zove sistemsko programiranje, nemam pojma).

A možda mu nikad u životu neće trebati. Možemo da kažemo i da će mu trebati. Ali gde se zaustaviti? Znanje o procesorskim registrima, kešu, pipeline-u, predstavljanju podataka u memoriji, IO, interruptima, TLBu, kompajlerima... bi pomoglo kod gore navedenih pojmova.
Citat:

6. Veb (prvo HTML i CSS, a onda dinamički veb).

Ako će da radi frontend.
Citat:

7. SQL i takve baze podataka.

Osnovno znanje je bitno.

my2c
[ Nedeljko @ 23.08.2012. 10:32 ] @
Hvala, ovo je bilo konstruktivno, s tim da nisi dao svoj predlog. Ono što sam napisao je bila neka moja vizija, a voleo bih da čujem tvoju alternativu.

A što se tiče onih ljudi pod 1, pa ne znam da li se na to može osloniti neko ko planira da uči programiranje da bi jednog dana živeo od toga.
[ the_tosic @ 23.08.2012. 10:36 ] @
Citat:
Chobicus:
Citat:

6. Veb (prvo HTML i CSS, a onda dinamički veb).

Ako će da radi frontend.


Zapravo html nije lose znati zbog drugih stvari. Npr zbog skupljanja podataka s web-a.

A inace mogao bi neko od ljudi koji se ne slazu s Nedeljkom da kaze sta bi on rekao nekom neupucenom klincu (12-18god) da nauci? AL onako lepo da navede ko u prvom postu ;)
[ Chobicus @ 23.08.2012. 16:20 ] @
Citat:
Nedeljko: Hvala, ovo je bilo konstruktivno, s tim da nisi dao svoj predlog. Ono što sam napisao je bila neka moja vizija, a voleo bih da čujem tvoju alternativu.

A što se tiče onih ljudi pod 1, pa ne znam da li se na to može osloniti neko ko planira da uči programiranje da bi jednog dana živeo od toga.


Pretpostavka 1: nećak se izuzetno zanima za programiranje.

- trebalo bi mu obezbediti pristup internetu ako ga nema
- kurseve engleskog jezika ako ne zna
- pokazati mu kako pronaći informaciju na netu
- uputiti ga na stackoverflow, forume, mailing liste, besplatna izdanja dobrih knjiga(ranije sam naveo par)...
- pokazati mu code.google, github i kako da ih koristi.
Možda zajedno da dođete do ideje o nekom programu sa kojim bi mogao da krene (komšija pekar vodi knjige ručno, neka igrica, yamb, podmornice...). Ne pada mi sad na pamet ništa dovoljno prosto a poučno :)
Ako je p1 tačna i nećak zna engleski i ima pristup netu trebalo bi da ima gotove programe u nekom jeziku.
Bar
Code:
10 print "Nedeljko" 
20 goto 10

:)

Citat:
Pitao me je jedan drugar kako da uputi nećaka...
...
E, onda ga dalje ne treba upućivati, jer će sam videti šta ga zanima i krenuti dublje u nekom pravcu.

Pretpostavka 2: nećaka programiranje i ne zanima preterano. Mlad je i prijatelj misli zbog trenutne situacije na tržištu i nećakovih zanimanja da bi programiranje bilo prava profesija.
Sa decom a i sa većinom ljudi mora da se radi "head fake" :)
- sigurno voli igrice
- u LUA može da piše neki glupi plugin za WOW, možda se zainteresuje pa plugin preraste u nešto ozbiljnije
- ima knjiga koje kroz pravljenje jednostavne igre uče programiranje
- i uvom slučaju, ako se zainteresuje, važi sve ranije navedeno kao za p1

Naposletku (mislim da sam prvi put napisao naposletku ikada prim.auth.) ako se zainteresuje i obezbedi mu se net, engleski, možda i školovanje...šta može da ga zaustavi?!?
Klasičan snowballing :)
Spisak stvari koje kao programer mora da zna se menjaju svaki dan.
Timeline:cobol, fortran, sql, c, c++, java, c#, nosql, scala, clojure, cloud, aws, bigdata, heroku, android, ios ...neštoČimeĆeKlinciDaNasNervirajuZaParGodina
Neal Ford ima extra predavanje o tome:
Smithying in the 21st Century


[ kkedacic @ 23.08.2012. 16:48 ] @
Kad smo kod pretpostavki, bili ste pricali nesto o programima na MiT-u itd. Ogromna je predpostavka da im programi valjaju i da cisto kopiranje programa moze dati iste rezultate. Mozda im je program cisto sra**, ali sljaka zbog opreme i kvalitetnih profesora? Mozda je zbog predznanja? A mozda je u sumi?

I da @Nedjeljko poanta svakog stupnja obrazovanja je da se uci detaljnije uze podrucje, a ne sire; od osnovne skole do PhD, oduvjek je tako bilo i biti ce.
[ Nedeljko @ 23.08.2012. 19:56 ] @
Prepisivanje programa ne proizvodi iste rezultate. Nemaju oni vrhunski kadar badava.
Citat:
kkedacic: I da @Nedjeljko poanta svakog stupnja obrazovanja je da se uci detaljnije uze podrucje, a ne sire; od osnovne skole do PhD, oduvjek je tako bilo i biti ce.

Sa ovim se potpuno slažem. To je razlog što u mojoj koncepciji nema istorije, geografije, likovnog... već se dublje i detaljnije uči progtramiranje. No, ni to ne ide do u beskraj, već do neke granice, posle koje treba sam da izabere neku oblast programiranja i da to produbi i nauči detaljnije.

Chobicus,

Hvala na predlogu.
[ peromalosutra @ 23.08.2012. 22:50 ] @
Sto se tice preduslova za buduceg programera, mislim da bi to bili poznavanje engleskog jezika, makar na tom nivou da se mogu pratiti neki pocetni tutoriali i knjige. Od licnih osobina svakako pomaze posjedovanje interesovanja za to kako stvari rade, neke prirodne radoznalosti, sklonosti ka prirodnim naukama i matematici.

Korak 1:
Programiranje bi trebalo poceti sa nekim jezikom koji ne prezentuje mnogo detalja u pocetku, vec ima veci nivo apstrakcije. Ja sam pocinjao sa Pascalom koji je u tu svrhu i razvijen, danas vidim da ljudi preporucuju Python.

Korak 2:
Nakon razumijevanja osnovnih koncepata (petlji, kontrolnih struktura, pojmova varijabli, nizova, matrica), pisanja konzolnih programcica tipa vjesala, te nakon sto se buduci programer osjeca lagodno i osjeti prvu navalu samopouzdanja, trebalo bi preci na C i ponoviti to sve. Paralelno sa prelaskom na C, prelaziti poznatije algoritme i strukture podataka, te naravno sve to implementirati u C-u. Ucestvovanje na takmicenjima iz informatike (formalnim ili on-line) je odlican nacin za motivaciju ka ovakvom pristupu.

Korak 3:
Nakon C-a, preci na C++ sa naglaskom na OOP. Preci razne OOP koncepte i upotrijebiti ih na konkretnim primjerima. Napisati par konkretnijih programa i mozda poceti koristiti neke dodatne biblioteke da se razbije monotonija komandne linije. Npr. SDL + programiranje nekih jednostavnijih igrica moze biti zadovoljavajuca motivacija.

Korak 4:
Nema razloga za prestanak usavrsavanja na polju C++ i pratecih biblioteka (QT, itd) koje ce dati dodatne mogucnosti nasem buducem programeru, ali dobro je prosiriti opseg znanja i u ovom koraku mozda preci na Javu. Zbog mnostva biblioteka, a uz vec savladane OOP koncepte, ubrzo ce biti moguce napraviti i neke kompleksnije programe, koji mogu imati i konkretnu upotrebu. To daje novu dimenziju programiranju kojim se do sada bavilo cisto akademski. Svakako obraditi GUI / event driven, klijent server koncepte itd.

Dalje nema smisla govoriti u koracima, jer zavisi od sklonosti osobe sta joj se vise svidja i sta ce prvo poceti da radi. Ono sto bi svakako trebalo da se zna su:
- Dublje poznavanje arhitekture racunara, uz kraci izlet u ASM
- Relacione baze podataka, projektovanje baza i informacionih sistema generalno, SQL sintaksa
- Web programiranje i razna suma tehnologija koja se tu koristi, klijent side (HTML, CSS, JS, Ajax), te neki od server side jezika (PHP ili JSP)
- Koncepti Unix like sistema, permisije, rad s korisnicima, fajl sistemi, itd
- Osnovne stvari iz matematike koje bi mogle da budu cesce koristene, kao sto su grafovi, statistika, diskretna i numericka matematika

Vjerovatno sam dosta stvari i propustio.

Nakon sto se sve ovo predje, vjerovatno ce osoba da identifikuje sta joj je zanimljivo i nastavi dalje u tom pravcu. Prednost fakulteta je sto se sve gore navedeno (i mnogo vise) upravo ovako sistematicno i radi. Sve je naravno moguce postici i u sopstvenoj reziji, ali za to je potrebno dosta discipline i samopozrtvovanosti. Fakultet vec to sve ima sazvakano.

Dobitna kombinacija je vjerovatno fakultet iz podrucja IT-a + aktivan rad mimo fakulteta, da li kao part time posao, ili kao angazovanje na nekim svojim projektima.






[ pexxi92 @ 24.08.2012. 15:31 ] @
Kao sto mozes videti Nedelljo vecina ljudi se slaze samnom.
[ Nedeljko @ 24.08.2012. 17:06 ] @
Kao što ne vidiš peksi, većina ljudi ima različita mišljenja.
[ DusanSukovic @ 24.08.2012. 18:48 ] @
Citat:
Chobicus:
Norvig ima zanimljive savete kako postati programer: Teach Yourself Programming in Ten Years



Iz knjige "The Art of Designing Embedded Systems" autora Jack G. Ganssle:

Citat:

Any Idiot Can Write Code
In their studies of programmer productivity, Tom DeMarco and Tim
Lister found that all things being equal, programmers with a mere
6 months of experience typically perform as well as those with a year, a
decade, or more.
As we developers age we get more experience-but usually the same
experience, repeated time after time. As our careers progress we justify our
escalating salaries by our perceived increasing wisdom and effectiveness.
Yet the data suggests that the value ofexperience is a myth.



;)



[ Goran Rakić @ 24.08.2012. 21:30 ] @
Šta autorima znači "perform"?
[ Nedeljko @ 24.08.2012. 22:24 ] @
Obavi, odradi.
[ Goran Rakić @ 24.08.2012. 23:10 ] @
Obavi kao "iskodira po datoj specifikaciji u tehnologiji u kojoj se specijalizovao", obavi kao "iskodira po datoj specifikaciji potencijalno u potpuno novoj tehnologiji" ili obavi kao "osmisli i implementira"? Koji je obim tog zadatka koji se obavlja? Pitam konkretno za knjigu koju je Dušan citirao pošto meni na prvi pogled tvrdnja deluje sasvim nerazumno.
[ pisac @ 25.08.2012. 01:50 ] @
Glede prvog posta (što bi rekli braća Hrvati):

Citat:

...
2. Objektno orjentisana paradigma u jeziku C++, Java, C# ili nekom drugom po izboru sa dizajn paternima.
3. GUI programiranje da se malo dane dušom od teških stvari.
...
5. Niti, deljena memorija, komunikacija između procesa, bazeni poruka, privilegije i atributi nad fajlovima, događaji (valjda se to zove sistemsko programiranje, nemam pojma).
...


Mene zanima neka dobra a jednostavna literatura za lagan start, namenjena onima koji bi više da uče uz praktične primere nego uz suvoparno tehničko i jezičko teoretisanje i baljezganje.

Zna li neko da preporuči?
[ DusanSukovic @ 25.08.2012. 02:16 ] @
Citat:
pisac:
Glede prvog posta (što bi rekli braća Hrvati):

Citat:

...
2. Objektno orjentisana paradigma u jeziku C++, Java, C# ili nekom drugom po izboru sa dizajn paternima.
3. GUI programiranje da se malo dane dušom od teških stvari.
...
5. Niti, deljena memorija, komunikacija između procesa, bazeni poruka, privilegije i atributi nad fajlovima, događaji (valjda se to zove sistemsko programiranje, nemam pojma).
...


Mene zanima neka dobra a jednostavna literatura za lagan start, namenjena onima koji bi više da uče uz praktične primere nego uz suvoparno tehničko i jezičko teoretisanje i baljezganje.

Zna li neko da preporuči?



Ja sam ucio na studijama Javu iz ove knjige:

http://www.amazon.co.uk/Java-P...&qid=1345857026&sr=1-3


Nema bas sve ovo sto si naveo, ali je napisano prakticno i idiot free za pocetnika, knjiga je dozivela deveto izdanje kod Prentice Halla...












[Ovu poruku je menjao DusanSukovic dana 25.08.2012. u 03:43 GMT+1]
[ Nedeljko @ 25.08.2012. 09:15 ] @
pisac

Mislim da ti ove stvari jednostavno ne leže. Mojne se ljutiš, ali za tvoje dobro mislim da je bolje da se baviš nečim drugim. Svo to "baljezganje" je potrebno. Ako te smara, jednostavno nisi za to.
[ DusanSukovic @ 25.08.2012. 09:59 ] @
Citat:
Nedeljko:
pisac

Mislim da ti ove stvari jednostavno ne leže. Mojne se ljutiš, ali za tvoje dobro mislim da je bolje da se baviš nečim drugim. Svo to "baljezganje" je potrebno. Ako te smara, jednostavno nisi za to.



Sve zavisi kako se stvar prezentira :)
[ Nedeljko @ 25.08.2012. 11:31 ] @
Bez tog "suvoparnog tehničkog i jezičkog teoretisanja i baljezganja" nema ni programiranja. Koji god jezik da učiš, moraš da ga naučiš da bi nešto radio u njemu, a on je potpuno formalan. Ne zadovoljiš li sintaksu 100%, program neće raditi.
[ pisac @ 25.08.2012. 11:43 ] @
Citat:
Nedeljko: Svo to "baljezganje" je potrebno. Ako te smara, jednostavno nisi za to.


Baljezganje i teoretisanje je meni suvišno i samo me smara. Jedan primer sa konkretnim objašnjenjem vredi više nego hiljadu suvoparnih baljezganja i teoretisanja.

Navešću jedan banalan ali efektan primer: Relacione baze podataka (i SQL) sam naučio igrajući se sa aksesom pre više od decenije. Sasvim prirodno svodim sve baze na osnovne tabele i relacije među njima.

S druge strane, "svođenje baze na drugu/treću normalnu formu" ili kako se to već zove, je obično baljezganje i teoretisanje o nečemu što je inače "native" sasvim razumljivo/shvatljivo i neverovatno prosto. Bar onima koji imaju tri čiste. Onaj ko čita to svođenje će da se prepadne i smori pre nego što uopšte i počne da shvata da je u pitanju banalna budalaština.

Tako da, nije cilj literatura da bude "idiot friendly" nego baš suprotno, da ne tupi suvišne i suvoparne gluposti na akademskom nivou nego pređe na konkretno uz konkretne primere.
[ Nedeljko @ 25.08.2012. 11:51 ] @
Ako nećeš da budeš profesionalac, svakako nije neophodno da znaš kako stvari rade ispod haube. Međutim, ako hoćeš da budeš profesilonalac, onda bi trebalo. Sa druge strane, SQL kao i svaki jezik ima svoju sintaksu koja se mora 100% zadovoljiti inače program neće raditi. Tu nema mrdanja.
[ masetrt @ 25.08.2012. 12:14 ] @
Citat:
pisac:
Citat:
Nedeljko: Svo to "baljezganje" je potrebno. Ako te smara, jednostavno nisi za to.


Baljezganje i teoretisanje je meni suvišno i samo me smara. Jedan primer sa konkretnim objašnjenjem vredi više nego hiljadu suvoparnih baljezganja i teoretisanja.

Navešću jedan banalan ali efektan primer: Relacione baze podataka (i SQL) sam naučio igrajući se sa aksesom pre više od decenije. Sasvim prirodno svodim sve baze na osnovne tabele i relacije među njima.

S druge strane, "svođenje baze na drugu/treću normalnu formu" ili kako se to već zove, je obično baljezganje i teoretisanje o nečemu što je inače "native" sasvim razumljivo/shvatljivo i neverovatno prosto. Bar onima koji imaju tri čiste. Onaj ko čita to svođenje će da se prepadne i smori pre nego što uopšte i počne da shvata da je u pitanju banalna budalaština.

Tako da, nije cilj literatura da bude "idiot friendly" nego baš suprotno, da ne tupi suvišne i suvoparne gluposti na akademskom nivou nego pređe na konkretno uz konkretne primere.



[ pisac @ 25.08.2012. 12:37 ] @
Citat:
Nedeljko: SQL kao i svaki jezik ima svoju sintaksu koja se mora 100% zadovoljiti inače program neće raditi. Tu nema mrdanja.


Naravno.

Ali to nema veze sa suvoparnim teoretisanjem o stvarima koje su u stvari prirodno razumljive onome koji ima tri (četri ili više) čiste. Ja razumem da neki ljudi ne moru da ukapiraju kako se razlaže baza na sastavne relacione tabele, a da drugi vole da naprave nauku od toga jer su u tom akademskom fazonu, ali oni neka teoretišu i polemišu u knjigama koje su namenjene njima a meni dajte akses i pustite me da se igram par nedelja

Znači, nešto jednostavno i konkretno sa rudimentarnim objašnjenima i efektnim primerima, je jedino što meni treba.
[ the_tosic @ 25.08.2012. 12:50 ] @
Pisac, izgooglas best (java/c++/c#/sta_god) book, nacices sigurno gomilu reviewa.
[ Ivan Dimkovic @ 25.08.2012. 12:53 ] @
Citat:
pisac
Baljezganje i teoretisanje je meni suvišno i samo me smara. Jedan primer sa konkretnim objašnjenjem vredi više nego hiljadu suvoparnih baljezganja i teoretisanja.


Na primeru flood-fill zadatka se jako lepo vidi da tebi elementarne stvari ocigledno nisu jasne.

Ako zaista zelis da ih naucis, uzmi lepo ovo:

http://www.amazon.com/Computer...ds=art+of+computer+programming

ili ovo:

http://www.amazon.com/Introduc...-Thomas-H-Cormen/dp/0262033844

Ako ti je ovo suvise tesko iz prve, prvo nadji neku knjigu tipa "Java za pocetnike", pa kad nju savladas vrati se na ovo gore.

Ako te ne zanima, i ako ti ovo gore izgleda kao "baljezganje i teoretisanje*", onda mojne slusas nikog ovde - matori prdezi smaraju, pusti... idi prckaj po tudjem kodu i tripuj se da zaista razumes sta se tu desava (mada, ako imas "srecu" da naletis na kod koju je pisao slican amater, vrlo verovatno neces moci nista da skontas - ali bez brige, to niko ne moze da skonta obicno :-).

Dobra vest je da tako moze da se danas cak i profesionalno zivi - jeste da ce kod napisan od takve individue biti uglavnom opste djubre kada se trazi nesto iole ozbiljnije, ali pola koda po Internetu je djubre, nista nece promeniti jos malo djubreta :-)

* oko teorije i baljezganja, ako ti ovo o cemu se ovde prica zvuci kao teorija i baljezganje, mogu samo da kazem da ti evidentno pojma nemas sta je prava teorija u informatici. Da je vidis, izgledalo bi ti kao neciji doktorski rad iz matematike.
[ DusanSukovic @ 25.08.2012. 13:06 ] @
Citat:
Ivan Dimkovic:
Citat:
pisac
Baljezganje i teoretisanje je meni suvišno i samo me smara. Jedan primer sa konkretnim objašnjenjem vredi više nego hiljadu suvoparnih baljezganja i teoretisanja.


http://www.amazon.com/Computer...ds=art+of+computer+programming



Zar je ova gomila Knutovih knjiga potrebna za pocetnika? ;)
[ Ivan Dimkovic @ 25.08.2012. 13:26 ] @
Pocetniku? Ne naravno.

Ali pisac trazi "sustinu" - e pa sustina je upravo u algoritmima koje ocigledno nije u stanju da prepozna u jednostavnom zadatku. Posto vrlo verovatno ne barata ni sa mnogim drugim klasicnim algoritmima nije lose da ima knjigu u kojoj je gomila algoritama objasnjena.

Vidis, normalan pocetnik zna da ne poznaje materiju i ici ce postepeno od elementarnih stvari ka kompleksnijim. Nisam siguran da je ovde bas to slucaj - pisac sigurno zna da pise kod, bar nekakav kod i siguran sam da poznaje elementarne konstrukte tipa grananje, petlje i sl.... Pa to mozemo preskociti - ono sto je piscu potrebno je kontanje malo apstraktnijih stvari od sintakse u programiranju.
[ Goran Rakić @ 25.08.2012. 13:41 ] @
Jesi li ti čitao TAOCP? Koji deo, dokle si stigao?

Cormen et al je bolja, ali opet nije za početnika. Početniku treba nešto gde će malo da klikće okolo, napravi nešto vidljivo, prirodno se sretne sa problemima kao što je ovaj flood-fill i šeprtljasto sam dođe do nekih postojećih algoritama ne znajući za njih. Ne kažem da nije moguće i drugačije, ali ovako je bilo meni i svima koje ja poznajem.
[ Ivan Dimkovic @ 25.08.2012. 13:57 ] @
TAOCP - prvu i delimicno trecu, na zalost nisam stigao dalje posto trazi vremena a programiranjem se vec duze vremena ne bavim profesionalno, tako da mi sada manje-vise stoji ceo set na polici :(

Slazem se da nije za pocetnika - bas kao i "Introduction to Algorithms" ali moj odgovor je bio upucen piscu, a ne kao generalni savet za pocetnike. Ja kao pocetnika vidim nekoga ko nije uopste nista programirao (ili nesto vrlo malo).

Pisac to vrlo verovatno nije.
[ Nedeljko @ 25.08.2012. 14:15 ] @
Citat:
pisac: drugi vole da naprave nauku od toga jer su u tom akademskom fazonu

Taj "fazon" je itekako potrreban

1. za one koji će praviti neki takav endžin,
2. za one koji hoće da izvuku što više iz nekog od postojećih.

E, sad, za one koji hoće samo da se igraju, nije potreban. No, to i dalje ne čini te akademske udžbenike baljezganjem. Izraz koji si upotrebio govori isključivo o tebi.

Ivane, ne reče li pisac u svom poslednjem postu da hoće samo da se igra sa aksesom, a ne da (bar za sada) radi nešto ozbiljno?

I ja mislim da je Cormen bolji od Knuta. Ne samo zato što je savremeniji, nego i zato što Cormen daje veću širinu.
[ Goran Rakić @ 25.08.2012. 14:16 ] @
Da se dopunim u komentaru.

@pisac, u pravu si. Kažeš da nakon igranja po Accessu sada umeš da napraviš model bilo koje baze i normalizuješ ga po potrebi. Verujem ti. Verujem isto tako da to "teoretisanje" koje ti smeta nije ništa drugo nego jezik na koji treba da se navikneš. Naravno postoje bolje i lošije knjige, neke podrazumevaju da poznaješ termine i način izražavanja, a neke će u uvodnim poglavljima ili dodatku da te više "drže za ruku". Kada savladaš tu prepreku u razumevanju otvoriće ti se svet potpuno nove literature, a svoje praktično znanje ćeš moći bolje da uobličiš i sigurno da naučiš puno novih stvari. Sledeći put kada se susretneš sa nekim novim modelom nećeš "lomiti glavu", već ćeš imati znanje spremno kao švajcarski nožić za tu priliku.

Nije ista literatura i za nekog ko relacione baze održava (operation management), dizajnira model podataka, tek koristi u programima ili literatura za nekog ko relacionu algebru proučava kao matematički model ili želi da nauči kako da napravi sopstveni motor relacione baze. Odaberi knjigu koja ti leži, ali ne ustručavaj se da zaviriš i u nešto šire od toga.
[ pisac @ 25.08.2012. 14:27 ] @
Citat:
Ivan Dimkovic: Na primeru flood-fill zadatka se jako lepo vidi da tebi elementarne stvari ocigledno nisu jasne.


A pod elementarnim stvarima podrazumevaš lingvističko/semantičko razumevanje postavke zadatka?

To definitivno nisu elementarne stvari u programiranju. Programiranjem se rešava problem a ne "zadatak". Problem se razlaže na sastavne delove i pravi algoritam koji taj problem rešava, a rešavanje zadatka uključuje lingvističko/semantičko razumevanje postavke zadatka, odnosno izdvajanje problema iz zadatka. Na tom "mom primeru" se ne vidi apsolutno ništa o znanju iz programiranja i algoritama, već samo da li se neko aktivno bavi rešavanjem (i razumevanjem) tuđih zadataka ili ne. Nerazumevanje postavke zadatka (u jednom trenutku vremena i prostora) ne znači nesposobnost rešavanja problema koji je dat u tom zadatku.

Drugim rečima, da je dotični zadatak drugačije napisan, bio bi shvaćen.

Ja se ne bih vraćao više na tu temu, jer je dosadno tupiti više o tome. Znanje iz alogoritama mi je, hvala na pitanju, odlično još iz osnovne škole (u kojoj se to tada nije ni učilo), što je potvrđeno ocenama tokom (višeg) školovanja, a i u praksi. Fali mi samo OOP, GUI, i dosta sistemskih stvari.

Sve se naravno može izguglati na guglu, ali sve što se tu izgugla je u stvari neko morao da pita i dobije odgovor, ili da napiše svoje iskustvo. Guglanje traži određeno vreme za testiranje i analizu rezultata tog guglanja. S toga je mnogo bolje ako neko već zna odgovor na (u ovom slučaju moje) pitanje, da ga podeli sa nama prisutnima umesto da pravi redirekciju na sveznajući google
[ Nedeljko @ 25.08.2012. 14:37 ] @
Da bi rešio nečiji problem, prvo moraš da ga razumeš. Ako ćeš da rešavaš samo svoje probleme, to je drugo. Međutim, kako ćeš bez znanja jezika (srpskog, engleskog, kojeg god) da čitaš bilo koju knjigu? To je osnovna pretpostavka svega i zato se u školama maternji jezik uči 12 godina - da bi umeo da se izražavaš i razumeš druge. To je osnova za sve ostalo.

Ako smatraš da se sve može izguglati, to dovoljno govori o tvojim shvatanjima programiranja i onda definitivno treba da batališ celu priču, osim naravno, ako zaista hoćeš samo da se igraš. No, znanje jezika je opet neophodno i za to.
[ Ivan Dimkovic @ 25.08.2012. 14:41 ] @
Citat:
pisac
To definitivno nisu elementarne stvari u programiranju. Programiranjem se rešava problem a ne "zadatak". Problem se razlaže na sastavne delove i pravi algoritam koji taj problem rešava, a rešavanje zadatka uključuje lingvističko/semantičko razumevanje postavke zadatka


Apsolutno netacno. Sto se moze lako videti u cinjenici da su drugi vrlo lako prepoznali problem.

Nemoj praviti filozofiju tj. "lingivisticko/semanticko razumevanje postavke zadatka" posto je to u ovom konkretnom slucaju sifra za... razumevanje srpskog. Sorry.

[ Shadowed @ 25.08.2012. 14:46 ] @
Da li vi zaista mislite da pisac ucestvuje na temi kako bi doprineo diskusiji? Covek je trolcina samo takva, samo sto se uglavnom drzao MZ-a u takvim situacijama. Odvlaci temu u takvom pracu da on bude u centru paznje kako bi se prepucavao; narocito kad zatekne na temi nekog koga inace "ne mirise" narocito.

@pisac, nemoj pitati, ne nameravam da ti obrazlazem i objasnjavam samo da bi se opet sve vrtelo oko tebe.
[ pisac @ 25.08.2012. 14:47 ] @
Citat:
Nedeljko: Ivane, ne reče li pisac u svom poslednjem postu da hoće samo da se igra sa aksesom, a ne da (bar za sada) radi nešto ozbiljno?


Igrom se stiču itekako ozbiljna znanja.

U svakom slučaju akses nije ni za kakvu ozbiljnu primenu, već upravo za igranje. I kao takav je odličan alat, i hvala mu mnogo što postoji. Pravljenjem tabelica i povezivanjem sa onim one-to-one one-to-many i drugim slikovitim relacijama, i gledanje proisteklog SQL koda iz kverija koji su napravljeni igranjem sa tabelicama i poljima, a onda menjanjem SLQ koda i gledanjem proisteklih izmena u grafičkom prikazu tabelica, sam naučio neopisivo korisne stvari.

Da sam prvo pročitao "svođenje baze na normalnu formu" naježio bih se i pobegao glavom bez obzira. U stvari, ja se i jesam ježio od tih baza dok nisam naleteo na lakoću igranja sa aksesom, i tek onda shvatio da je to vrlo zanimljivo i nimalo stašno područje.

Mene u stvari konkretno sada najviše zanima kako da počnem sa jednostavnim GUI aplikacijicama, za moje lične potrebe. Jedno vreme (pre više godina) sam se malo igrao sa Delfijem, ali nisam ukupno ni više od mesec dana potrošio pa me je nešto odvuklo tamo gde sam i sada (administracija, voip, i slično). U međuvremenu sam Windows batalio u potpunosti, tako da bi mi sada jako koristilo nešto što bi me lagano usmerilo ka Linux GUI svetu.

Onako, opušteno za početak, pa ako mi naleti potreba ili prilika za dubljim zalaženjem u materiju onda bih već postavio novo pitanje ili adekvatan gugl srč
[ pisac @ 25.08.2012. 14:51 ] @
Citat:
Ivan Dimkovic: Apsolutno netacno. Sto se moze lako videti u cinjenici da su drugi vrlo lako prepoznali problem.


Prepoznali su semantički izraz koji opisuje problem, i to zato što imaju neposrednog prethodnog iskustva sa sličnim semantičkim izrazima (aktivno su u rešavanju ili postavljanju zadataka pa znaju šta se otprilike očekuje) ili neposrednog i čestog dodira sa opisanim problemom (tj. time se aktivno bave, to im je u malom mozgu, pa ga lakše prepoznaju).

Ja ne znam kako drugačije da ti to objasnim. Ako si shvatio, shvatio si. Velika je razlika između nerazumevanja zadataka i nesposobnosti rešavanja problema.

Citat:
Nedeljko: Da bi rešio nečiji problem, prvo moraš da ga razumeš.


Naravno. Ali to nije zadatak. Kada rešavaš nečiji problem, onda pitaš lepo čoveka gde je problem i uz nekoliko iteracija dolazite do tačnog opisa problema, i okvirnog prvobitnog algoritma koji bi mogao da se primeni na rešavanje tog specifičnog problema.

[ Nedeljko @ 25.08.2012. 15:34 ] @
Nikako ne uspevam da shvatim fundamentalnu razliku između "zadatka" i "problema". Na engleskom se "zbirka zadataka" piše "collection of problems". "Problem" je na srpskom valjda isto što i teži zadatak. Ako neko ne razume lak zadatak, kako će da reši težak.
[ pisac @ 25.08.2012. 15:52 ] @
Ja ću sad i tebi i Dimkoviću privatnom porukom da objasnim tačnu razliku između razumevanja zadatka i rešavanja problema, i diskusiju možemo da nastavimo tamo. A ovde ako neko hoće da pomene kako laganu krenuti sa linux GUI, dobrodošao je.
[ Nedeljko @ 25.08.2012. 16:30 ] @
Oladi sa autogolovima oko onog zadatka. Ja sam na ovoj temi napisao jedan pogrešan kod, što su drugi primetili. Da li je to strašno? Nije. Svakome se desi. E, strašno bi bilo da sam krenuo da branim taj pogrešan kod umesto da se ispravim. O tome se radi.

Što se Linux GUI-ja tiče, ako si radio Delphi pod Windows-om, na Linux-u definitivno probaj Lazarus.
[ bookmaker @ 25.08.2012. 22:06 ] @
Možda se neko prepozna. :)

http://norvig.com/21-days.html
[ Nedeljko @ 26.08.2012. 00:31 ] @
Koji li je ovo put da se postavlja taj link?
[ bookmaker @ 26.08.2012. 10:13 ] @
Pa što ne uputi onda tog klinca na to ako si već teo da mu objasniš kako da postane programer. ;)

Ako si hteo da daš svoje viđenje onda je to OK, ali nema potrebe da izmišljamo "toplu vodu" i "bušan pesak" kad se već odavno zna šta i kako. Doduše, tvojim pristupom će taj put trajati minimum 15 godina, pa ako je klinac u osnovnoj školi onda je vreme da krene.

Šalu na stranu, dete (ako je reč o detetu) ne treba da ide tim putem. Rano je to za osobu toh uzrasta.
[ Nedeljko @ 26.08.2012. 11:52 ] @
Nisam znao za taj link dok ga pexxi92 nije postavio na ovoj temi. Onda je krenula lavina postavljanja tog linka.
[ Chobicus @ 26.08.2012. 14:11 ] @
Citat:
DusanSukovic:
Citat:
Chobicus:
Norvig ima zanimljive savete kako postati programer: Teach Yourself Programming in Ten Years



Iz knjige "The Art of Designing Embedded Systems" autora Jack G. Ganssle:

Citat:

Any Idiot Can Write Code
In their studies of programmer productivity, Tom DeMarco and Tim
Lister found that all things being equal, programmers with a mere
6 months of experience typically perform as well as those with a year, a
decade, or more.
As we developers age we get more experience-but usually the same
experience, repeated time after time. As our careers progress we justify our
escalating salaries by our perceived increasing wisdom and effectiveness.
Yet the data suggests that the value ofexperience is a myth.



;)





Tom DeMarco i Tim Lister uporedjuju produktivnost programera u zavisnosti od godina iskustva. Ne kazu da se postaje programer za 6 meseci.
[ Chobicus @ 26.08.2012. 14:14 ] @
Citat:
pisac:
Glede prvog posta (što bi rekli braća Hrvati):

Citat:

...
2. Objektno orjentisana paradigma u jeziku C++, Java, C# ili nekom drugom po izboru sa dizajn paternima.
3. GUI programiranje da se malo dane dušom od teških stvari.
...
5. Niti, deljena memorija, komunikacija između procesa, bazeni poruka, privilegije i atributi nad fajlovima, događaji (valjda se to zove sistemsko programiranje, nemam pojma).
...


Mene zanima neka dobra a jednostavna literatura za lagan start, namenjena onima koji bi više da uče uz praktične primere nego uz suvoparno tehničko i jezičko teoretisanje i baljezganje.

Zna li neko da preporuči?

Head First kolekcija je ok. Ima i mnogo slika ;)
[ Chojba @ 26.08.2012. 20:59 ] @
Citat:
Ivan Dimkovic:
Citat:
pisac
Baljezganje i teoretisanje je meni suvišno i samo me smara. Jedan primer sa konkretnim objašnjenjem vredi više nego hiljadu suvoparnih baljezganja i teoretisanja.


Na primeru flood-fill zadatka se jako lepo vidi da tebi elementarne stvari ocigledno nisu jasne.

Ako zaista zelis da ih naucis, uzmi lepo ovo:

http://www.amazon.com/Computer...ds=art+of+computer+programming


Knjige mi deluju jako interesantno, i cini mi se da pokrivaju MNOGO toga. Negde sam procitao review, i tamo kazu da se koristi assembler u primerima ? Da li je ovo istina ? Ako jeste, da li postoji nesto slicno(obimno i kvalitetno) sa primerima u nekom visem jeziku ? C/Pascal/Python/Java/C++ nebitno...
[ Nedeljko @ 26.08.2012. 21:26 ] @
Knut u primerima koristi asembler njegovog zamišljenog računara MIX, za koji je konceptualno opisao kako se može napraviti.
[ pexxi92 @ 27.08.2012. 08:23 ] @
Iako smatram da su Knutove knjige jako dobre ipak ih ne bi preporucio pocetniku. Ako je neko savladao osnove programiranja i zeli da zadje u svet algoritama smatram da je bolje krenuti sa Introduction to Algorithms.
[ dejanet @ 27.08.2012. 08:30 ] @
^ Mislim suprotno, pomenutu knjigu treba citati sto ranije, naravno ko ima afiniteta, npr. idealno izmedju 17-20 godine..
[ pexxi92 @ 28.08.2012. 08:38 ] @
Pa nisam ni pomenuo godine vec koliko neko zna. Neko moze biti pocetnik sa 13 a neko sa 23 godine. Svaku knjigu treba citati onda kada se poseduje dovoljno predznanja za nju.
[ dejanet @ 28.08.2012. 09:06 ] @
Ne verujem da klinci sa 13 godina znaju integrale, izvode, matricni racun, hi-kvadrat test itd... koje se u knuth-ovoj knjizi koriste na veliko.
Cak mislim da nije potrebno nikakvo programersko predznanje(mozda afinitet), dovoljno je solidno formalno matematicko obrazovanje, za citanje. Sa 17 neki klinci (npr. sa Matematicke gimnazije) imaju vise nego dovoljnog predznanja.

Znaci i dalje mislim da je najbolji moguci scenario citati ovakve knjige sto je ranije moguce, znaci pre nego se formira kao npr. programer u profesionalnom smislu, a sa svezim formalnim obrazovanjem.
[ nibugmail @ 29.08.2012. 13:24 ] @
Da li ste znali da Stanford University ima besplatne kurseve programiranja (computer science)?

http://see.stanford.edu/

Tu mozete da naucite i kako se koji termin kaze na engleskom, da upoznate druge studente on-line, i naucite i nesto o vestackoj inteligenciji, iPhone programiranju i sire.

Mislim da vam je mnogo bolje tamo da pisete diskusije jer cete mozda nekog zanimljovog i upoznati na chatu.
[ kkedacic @ 30.08.2012. 02:37 ] @
http://programmers.blogoverflo...oversial-programming-opinions/
[ fighterTL @ 30.08.2012. 12:28 ] @
Citat:
Chobicus:
Norvig ima zanimljive savete kako postati programer: Teach Yourself Programming in Ten Years

"Get interested in programming, and do some because it is fun....
Talk with other programmers...
If you want, put in four years at a college (or more at a graduate school). This will give you access to some jobs that require credentials...
Work on projects with other programmers...
Work on projects after other programmers...
Learn at least a half dozen programming languages...
..."
U tekstu su navedeni i razlozi.
Mislim da bez engleskog jezika teško može da se napreduje.


Ovo je tacno. Budimo realni, osloniti se na profesore na fakultetima je besmisleno. Na nasim fakultetima ne mozete nauciti dovoljno stvari koje su za primenu. Diplomu mozete koristiti da dobijete posao i to bi trebalo objasniti svakom ko se odluci da studira programiranje. Ja sam na racunarskim naukama i mogu vam reci da je plan i program izvanredan. MEDjUTIM... Postoji ogromna razlika u tezini matematickih predmeta u odnosu na programerske, informaticke i sl. Za tri godine imate 40 predmeta od cega je 12 matematickih. Poznajem mnogo ljudi koji godinama ne mogu da upisu narednu godinu samo zbog matematike. Atmosfera na fakultetu je, malo je reci, depresivna. Zbog toga se zapostavljaju one vazne stvari. Doslo se do toga da studenti procenjuju "tezinu profesora" i uce u skladu sa tim. Onda se zavrsi fax i shvatis da si proveo 5,6 godina da dobijes neki papir sa kojim mozes samo da sa hvalis roditeljima, drustvu i Zavodu za zaposljavanje.

Ne moze se tako... Ne kazem da taj fakultet ne koristi. Koristi. Dobijes smernice za sve. Ali neces postati strucan ni za sta.
Vecina ocekuje da ih profesori nauce svemu i da je njihovo sedenje u amfiteatru jedini trud koji moraju uloziti. A onda kada shvate da tako ne funkcionise uplase se. Batale. Stvaraju predstavu da je programiranje najteza moguca stvar za nauciti.

Mozda zvuci cudno, ali najvaznija stvar u ovom poslu je samopouzdanje. Mogucnosti je mnogo. Vrlo je interesantno. Ali se ne moze uciti sa strahom. Moras se motivisati. Kada te bude privlacilo da ucis sto vise, onda je to to. Zarada ce doci. Ali nece biti to neko uspesno ucenje ako je prvi motiv visoka plata.
[ Nedeljko @ 30.08.2012. 12:40 ] @
Fakulteti inače ne služe za otaljavanje, nego za aktivno studiranje, koje podrazumeva više od pohađanja nastave, izrade domaćih zadataka/seminarskih radova i polaganja ispita/kolokvijuma. To nema veze sa Srbijom, nego je svuda tako. Još kad fakultet izbaci stručnjaka, koga uopšte ne interesuje to što je učio, koji nikad nije ništa samoinicijativno radio... ma, idi.
[ damson74 @ 03.09.2012. 00:02 ] @
Mislim da fakultet treba da stvori radne navike. Da nauči čoveka da koristi literaturu i da ga zainteresuje u nekom pravcu, smer se posle toga formira po apstraktnom mišljenju. Ako govorimo baš o programiranju vežba čini majstora. Ako govorimo o projektovanju software-a onda treba dosta učiti i razlagati. Danas se traži sve, i mnogo svega. Prosek je danas ispod proseka, danas su potrebne tzv ninje ovoga ili onoga .... a to se ne uči na fakultetu, on je samo kap.

Pozdrav
[ bondja @ 07.09.2012. 13:52 ] @
http://www.elitesecurity.org/t368879-1#2333491