Šta je novo?

Hoću da programiram, šta da koristim, odakle da počnem, šta je neophodno

Ja sam malo ucio algoritme, skontao sam da je fora u tome da naucis nacin na koji ces da razmisljas kad pises programe, malo smo to ucili, nisam bas dobar u tome...zar je to tako bitno? mislim, mogu ja da razmisljam o tome kako cu da napisem program i sta cu da radim iz bez algoritma...zar ne???

Ne :)
Jako povrsno i svakako obavezno znanje programiranja je da tacno znas sta su stekovi, baferi, liste, matrice, efikasni algoritmi za sortiranje i pretrazivanje, dobro razumevanje rekurzije, odredjivanje slozenosti algoritama etc. i naravno, brzo odlucivanje kad ces sta da koristis. Onda naravno imas gomilu naprednijih, takodje jako bitnih stvari koje mozda i neces bas toliko koristiti (divide and conquer tehnika, dinamicko programiranje, stabla, grafovi...) i onda specificni algoritmi za svaku oblast, koje uglavnom ucis dok radis bas tu oblast.

Na primer, za neki problem vrlo brzo mozes da nadjes brute force resenje (mada ti i za njega treba kakvo takvo znanje), koje ce se na najbrzem kompjuteru danas izvrsavati nekoliko dana. Uz primenu algoritama ce se taj isti problem izvrsavati na tvom kucnom kompjuteru nekoliko sekundi. Puno puta mi se desavalo na gore pomenutom projecteuler-u da ostavljam komp upaljenim cele noci da bi izracunao resenje i onda kada pogledam kod drugih clanova shvatim da je bilo mnogo elegantnijih nacina da se isti problem resi maltene trenutno.

Ako imas vec to osnovno znanje u bilo kom jeziku i znas engleski zaista preporucujem da gledas kurs na MIT-u (nadam se da znas sta je MIT) koji sam naveo gore uz citanje istoimene knjige.
 
Ok skontao sam da sam ovde ispao glup sa pitanjem u vezi algoritama, al sta da radim, kad je ovo jedini nacin da saznam potrebne informacije! Nista, za sada cu da se zanimam sa algoritmima, pa cu da vidim, sta dalje... Hvala! pozz
 
Nisi ispao glup, dobro si pitao, i nije obavezno da izucavas algoritme, to je moralo nekada davno. :)
 
Kako nije obavezno, moras da imas poznavanja algoritama, ako ocekujes da nesto ozbiljnije odradis.
 
nemam nista protiv struktura i algoritama, ali bas sedeti i izucavati ih, umesto raditi konkretne stvari... nisam bas siguran. sve to moze da stane u dve prilicno proste tabele - za ovo koristi ono, mane su:, prednosti su...
cak i ako te zanima zasto je algo A bolji od B u situaciji C mozes sve za jedno popodne da provalis.

cini mi se da svi ovi saveti, pristupi i preporuke konvergiraju u jednu tacku: sedi i programiraj! :)
 
Wow ovaj lik sa MIT-a smara samo tako. Uspavah se pored kompa za 8 minuta, slusajuci uvod u Divide and Conquer :D
A jos ovaj lik kako poskakuje oko table, pa kad proba nesto da se nasali, baca me u ocaj :wall:
Milsim, ne kazem da nije strucnjak, al dok krene da predaje kao covek...:bottle:
 
Poslednja izmena:
Nisi ispao glup, dobro si pitao, i nije obavezno da izucavas algoritme, to je moralo nekada davno. :)

aj mi to malo bolje objasni, zasto je trebalo nekada davno , a sada ne?
mi kad smo radili algoritme u skoli, to je bilo nesto sve tipa, kako da postavis for,while,do while na pravo mesto, za sta sluze, itd... bili su neki zadaci tipa, da napravis kao program koji sabira vrednosti, kao,da definises niz pa da on sabere prvih nekoliko brojeva...itd, i to je to...
 
Pa ovaj osnovni nivo poznavanja algoritama je svakako neophodan. Pritom pod osnovnim nivoom ne podrazumevam vrste petlji i slicne gluposti, posto se to svakako podrazumeva da znas.
Dalje, za neke jednostavne kucne programe zaista ti neko opsirnije znanje nije potrebno, posto postoje biblioteke koje sve to pokrivaju, ali opet moras da znas okvirno sta je sta i kad se sta koristi pa tek onda mozes da se oslanjas na neki tudji kod.

I za kraj, ako ti se znanje u ovom trenutku zasniva samo na programima tipa sabiranjje dva broja, onda nemoj mnogo da razmisljas vec uzmi neku knjigu i uci najosnovnije stvari. Dok ne stignes do nivoa gde znas dobro sta su pokazivaci, reference i slicne stvari nema potrebe da se zanimas bilo cime drugim.
 
kako da postavis for,while,do while na pravo mesto, za sta sluze, itd...
to o cemu pricas je kontrola toka programa. moglo bi da se nazove algoritmom samo po nekoj prilicno sirokoj definiciji. to je ustvari ono cime se pravi algoritam.

kad ovde pricamo o algoritmima mislimo na sledecu situaciju:

imas niz brojeva, treba da ih sortiras, od najmanjeg do najveceg.
sednes, razmislis i vidis da ima X nacina (algoritama!) na koje to mozes da uradis. pri tome si svestan resursa kojima raspolazes (cpu, memorija...). i ispostavi se da je jedan nacin bolji (brzi/zahteva manje memorije/vise odgovara sistemu na kojem radi...) za npr. duze nizove koji su vec prilicno sortirani. i to lepo zapamtis.

kao sto vidis tu ima nekoliko promenljivih i sreca tvoja sto su neke cike odavno odradile sve moguce kombinacije, za svaku izracunali matematicki sta treba, probali u praksi itd. i lepo dali imena: http://en.wikipedia.org/wiki/Sorting_algorithm

dakle ima tu sta da se izucava, citka pred spavanje i razmislja. ali, ponavljam, mislim da ti je pametnije da zadas sebi neki projekat i kad zaglavis pravac internet. za 2 min ces naci resenje i usvojiti ga.

tip: ako ti treba mnogo vise od 2 min. ili ti se ucini da niko na vaskolikoj planeti nije naisao na slican problem velika je verovatnoca da si krenuo pogresnim putem. ali ima sanse i da otkrijes novi i bolji! zato sam ja, izmedju ostalog, protiv sedenja i bubanja i vise za samostalno istrazivanje.

ps. a davno je moralo da se izucava mnogo vise jer su prakticne razlike bile ogromne. sa danasnjim masinama u vecini situacija nije kriticno. plus, jezici su takvi da omogucavaju laku izmenu. npr. pravis funkciju/metod za sortiranje. prvo je napravis da radi kako bilo, ali tacno. a posle mozes do mile volje da birkas "meso" programa tako da najbolje odgovra prakticnoj primeni.
 
Vidi sine ovako, pošto sam ja u ovom našem svetu računara i programiranja od 1980 godine, zaboravi sve položi, razliku i upiši pravni fakultet. Završi pravo i budi gospodin čovek. E to je uradio jedan moj školski i vidim da se nipošto nije pokajao. A i mama mog kolege je rekla svom sinu ko ti je kriv kad nisi upisao pravo i svaki dan aktn tašna a ne da se saginješ ispod stolova i popravljaš računare. Za 5 sekundi i još minut da se upišu podaci u template ugovora advokat mi je uzeo 200€ prijateljski inače je redovna cena 250€. Ti da prodaš neku aplikacijicu za te pare, instaliraš, obučiš, održavaš i rešavaš kojekakve brljotine korisnika i Microsoft-a.... Znam da je programirati lepo i poznajem taj osećaj kada nešto napraviš i kada to radi, ali veruj još je lepše kada strpaš 200€ za 5 minuta a toga u ovom poslu teško da ima. Ako uspem da te ubedim da postaneš pravnik ostaješ mi doživotni besplatni pravni zastupnik. Ovo je iskustvo iz života i veruj mi pravnici i ekonomisti se cene mnogo više nego inženjeri a nit goreg pravnog sistema nit gore ekonomije. krastavac al tako je. Faks ćeš naštrebati za 4 godine a onda zbogom pameti, kada ti bude trebao neki zakon pogledaćeš Paragraf lex ili Ing pro, a ovde ceo život samo uči nešto novo i taman kad ovladaš materijom, a oni izbacili nešto novo, promenuli ovo dodali ono pa novi OS problem do problema, nije kompatibilno i sl. U mojoj firmi koliko sam ja u njoj nikad direktor nije bio inženjer uvek pravnik ili ekonomista a firma prava inženjerska. Ako te sada nisam obeshrabrio onda nastavi puno da učiš veliko je more tutorijala na netu. Strećno (iako nismo rudari).
 
Poslednja izmena:
Vidi sine ovako, pošto sam ja u ovom našem svetu računara i programiranja od 1980 godine, zaboravi sve položi, razliku i upiši pravni fakultet. Završi pravo i budi gospodin čovek. E to je uradio jedan moj školski i vidim da se nipošto nije pokajao. A i mama mog kolege je rekla svom sinu ko ti je kriv kad nisi upisao pravo i svaki dan aktn tašna a ne da se saginješ ispod stolova i popravljaš računare. Za 5 sekundi i još minut da se upišu podaci u template ugovora advokat mi je uzeo 200€ prijateljski inače je redovna cena 250€. Ti da prodaš neku aplikacijicu za te pare, instaliraš, obučiš, održavaš i rešavaš kojekakve brljotine korisnika i Microsoft-a.... Znam da je programirati lepo i poznajem taj osećaj kada nešto napraviš i kada to radi, ali veruj još je lepše kada strpaš 200€ za 5 minuta a toga u ovom poslu teško da ima. Ako uspem da te ubedim da postaneš pravnik ostaješ mi doživotni besplatni pravni zastupnik. Ovo je iskustvo iz života i veruj mi pravnici i ekonomisti se cene mnogo više nego inženjeri a nit goreg pravnog sistema nit gore ekonomije. krastavac al tako je. Faks ćeš naštrebati za 4 godine a onda zbogom pameti, kada ti bude trebao neki zakon pogledaćeš Paragraf lex ili Ing pro, a ovde ceo život samo uči nešto novo i taman kad ovladaš materijom, a oni izbacili nešto novo, promenuli ovo dodali ono pa novi OS problem do problema, nije kompatibilno i sl. U mojoj firmi koliko sam ja u njoj nikad direktor nije bio inženjer uvek pravnik ili ekonomista a firma prava inženjerska. Ako te sada nisam obeshrabrio onda nastavi puno da učiš veliko je more tutorijala na netu. Strećno (iako nismo rudari).


Istina je nazalost:(, mozda se i ja bacim na prava, kad zavrsim ovo programiranje :S:
 
hahaahahah, uzas...pa razmislicu jos o ovom predlogu! Mozda ste ipak upravu!:)
Mada se meni hvale neki likovi koji idu na FTN, da ko ide na programiranje, jako lako nalazi posao sa solidnim platama, pogotovo ko zavrsi nesto vezano za informatiku u ekonomiji i ko pravi te programe za firme i to....odrzavaju sisteme itd. Jel to prica za malu decu ili je zaista tako?
 
Poslednja izmena:
@skydiver021:
Samo bih dve stvari dodao na tvoju pricu:
1. Negde si pogresio ako se bavims programiranjem od 1980, prodajes programe za 250e i jos uvek se smaras sa korisnicima.
2. Kao programeru, nikad ti nece biti dosadno.
 
Programiranje je jako lep zanat.. Svi te cene, dobro te placaju, imas kinte za sta hoces, komplikovane probleme resavas google-om, jednostavne resavas neoptimalno, kada kazu za kad moze da se uradi uvek kazes 4-5 dana duze i uzivas... pijes kafe, jedes po restoranima i to sve u zemlji srbiji..

p.s.

jedina fora je da nikad ne stajes.. da stalno ucis i ucis i ucis....
 
Poslednja izmena:
jedina fora je da nikad ne stajes.. da stalno ucis i ucis i ucis.... == Kao programeru, nikad ti nece biti dosadno.
 
Poslednja izmena:
Treba proci kroz neku knjigu/skriptu o algoritmima, mozda nije neophodno 100% razumeti kompleksnosti i gruvati hard-core teoriju, vec da se otpilike zna sta sve postoji kao resenje za koji problem itd. (mada zavisi, ako to na pocetku smuljas sanse su da nikad neces razumeti, a bez sustinskog shvatanja nekih stvari si sebi napravio plafon preko koga neces moci, pre svega kasnije u karijeri kad stignes do neke pozicije gde se donose odluke).

I jos nesto, po meni u savremenom programiranju u isti kos sa algoritmima idu i projektni obrasci...
 
@skydiver021:
Samo bih dve stvari dodao na tvoju pricu:
1. Negde si pogresio ako se bavims programiranjem od 1980, prodajes programe za 250e i jos uvek se smaras sa korisnicima.
2. Kao programeru, nikad ti nece biti dosadno.

1. Zanimljivo razmisljanje...
2. Zato sam to upisao a ne prava, doduse i tesko bubam:d



Programiranje je jako lep zanat.. Svi te cene, dobro te placaju, imas kinte za sta hoces, komplikovane probleme resavas google-om, jednostavne resavas neoptimalno, kada kazu za kad moze da se uradi uvek kazes 4-5 dana duze i uzivas... pijes kafe, jedes po restoranima i to sve u zemlji srbiji..

p.s.

jedina fora je da nikad ne stajes.. da stalno ucis i ucis i ucis....

Svidja mi se ova primedba za Google i neoptimalno resavanje problema :D:smoke:
 
Poslednja izmena:
@skydiver021:
Samo bih dve stvari dodao na tvoju pricu:
1. Negde si pogresio ako se bavims programiranjem od 1980, prodajes programe za 250e i jos uvek se smaras sa korisnicima.
2. Kao programeru, nikad ti nece biti dosadno.

Pod jedan nisi me dobro upratio, a pod dva samo si delimično u pravu, i pravnicima nikad nije dosadno, naučili i oni da koriste multimedijalne servise na internetu, a internet širok (i dubok) ...
Da poentiram nađi posao koji ti donosi maksimum para, a minimum rada ili još bolje neka drugi rade za tebe, a ti sve pare daj na zezanje jer život je tako kratak...
 
Slazem se sa milikom... par konstruktivnih postova i linkova ostaviti, ostalo u kantu.

Niko ne pise da kao i u svakoj nauci, ucenja nikad dosta, i da je individualna stvar koliko ce se uciti. Uciti se uvek moze jos, ne postoji skup znanja koji je dovoljan.
Jednostavno ne postoji.
Uvek postoji jos (kompleksnije) teorije da se nauci, uvek postoji jos (komplexnijih) problema koji zahtevaju tu teoriju, i naravno, sto je teorija komplexnija, to su problemi koje ona resava redji, i cine se ne potrebniji.

Poenta je balansirati izmedju ucenja i primenjivanja naucenog.
 
Ne znam ja koja je sad svrha bilo onog poredjenja programiranja i prava.. Ako si dobar advokat imaces pare, ako si dobar programer imaces pare, ako si dobar doktor imaces pare. Znaci poenta je da radis ono sto ti lezi u u cemu si dobar.
 
q-cartoon-simpsons-a-world-without-libel-lawyers.gif
 
Moja preporuka ako te stvarno zanima programiranje nauci matematiku u srednjoj sto bolje mozes ( ne samo sto vas uce nego sve sto ti padne pod ruku).
Veruj mi ako ti ide matematika ici ce ti i programiranje.
Naravno neko ti je reko ranije ako te zanima neko shabansko programiranje nekih rtd aplikacija (3 buttona i 2 text boxa ) onda za**** matematiku i upisi pravo ovo mozes da naucis za 10tak dana uz one knjige c# za 3dana :)
 
Da li bi neko mogao okačiti linkove za knjige o C++-u ili još bolje o radu istog u Microsoft-ovom Visual Studio-u ili barem neki tut?Imam knjigu o programiranju C++ jezikom samo su svi primjeri,tutovi,vježbe rađene u DEVC++-u koji također imam samo je bugovan do bola,hvala u naprijed
 
Nabavio sam knjigu o Javi ali ta knjiga je o javi 2 se 1.4 , a ja koristim java se 1.6. koja je razlika izmedju te dvije?
 
Svasta nesto se ovde pisalo, i moram da kazem da se ne slazem sa 90% razmisljanja, jer se totalno generalizuju stvari. Ovde se prica dosta o OO programiranju, a pod time se izgleda podrazumeva da znas sta su osnovni koncepti istog. Takodje, dosta saveta tipa: nauci stack, pointere, algoritme, itd ako mislis da budes uspesan u svom poslu. Sve to kad stavis na vagu, ispada da trebas da igras fudbal samo ako mozes da igras za Real. Evo dacu jedan primer iz prakse (dve osobe iz mog okruzenja) da nije sve tako crno-belo:

1) "programer" (Visual FoxPro) napisao program sa knjigovodstvo, za par godina je uspeo da dodje do cifre od >5,000e mesecno (i to samo od odrzavanja, bez prodaje).

2) Java programer: radi kao vodja grupe (od mislim 4-5 programera, kolika je njegova grupa) na velikim projektima (klijenti jake korporacije, drzave) za platu od oko 1,500 eura mesecno.

Ne treba napominjati da je 2) mnogo bolji programer od 1), ali da isto tako i mnogo manje zaradjuje.

Mnogi ovde daju savete da se ne treba baviti proceduralnim jezicima, vec da se uci recimo c++, c#, java, delfi i sl. Slazem se da ako se pravi izbor da je bolje krenuti sa nekim iz ovde druge grupe, ali se moze pogresno protumaciti da ako neko programira u C# da se bavi OO programiranjem. I u C# se moze programirati proceduralno, ne znaci da ako koristis TextBox objekat da si OO programer. Moram napomeni da je proceduralno programiranje u pojedinim granama industrije i jedino moguce, ja sam radio par poslova sa specijalizovanim softverima (koji koriste proceduralni programski jezik) gde je zarada cak i za EU prilike odlicna, a kamoli za nase.

Sve u svemu, bitno je koliko si snalazljiv. Znanje ce doci vremenom, za dobrog OO programera (koji zna i da razmislja, a ne samo da izvrsava) su potrebne godine, a ne meseci.
 
Nazad
Vrh Dno