[ mmix @ 26.03.2014. 19:13 ] @
Nisam pratio Tiobe neko vreme, ali ovo sto me je zateklo je stvarno iznenadjujuce C pretekao Javu?


[ dejanet @ 26.03.2014. 20:06 ] @
F# 12.-ti.

Par dana pokusavam da shvatim sta je na to uticalo.
[ mmix @ 26.03.2014. 20:18 ] @
Te ispod cenzusa nemoj ni da gledas Sve je to statisticka greska
[ jablan @ 26.03.2014. 20:34 ] @
Ne bih se ja oslanjao na Tiobe toliko...

http://langpop.corger.nl/

http://redmonk.com/sogrady/2014/01/22/language-rankings-1-14/
[ mmix @ 26.03.2014. 20:50 ] @
A GitHub metrika je kao mnogo bolja :)

[ jablan @ 26.03.2014. 21:01 ] @
A što misliš da nije merodavna, makar da se vidi odnos C/Java? BTW, kažu da su podaci sa Githuba i sa Stackoverflow vrlo korelisani.
[ mmix @ 26.03.2014. 22:15 ] @
Zato sto postoji ceo jedan svet izvan GitHub-a. Svet u kojem javascript, recimo, vrlo slabo figurira. Ja sta vise ne znam nikoga ko je u inhouse enterprise developmentu a da koristi github (git da, ali ne github), to je prioritetno steciste open sourcera.

I nije bas da su korelisani SO i github, korelacija je linearni fenomen, ovi grafovi su eksponencijalni, mala razlika na ovom grafu moze da bude odstupanje od faktora 1.0 do cak vise desetina hiljada u linearnom.

u svakom slucaju, mislim da ne postoji konkretna metrika koja bi dala zaista tacan rezultat o zastupljenosti, Tiobe vise pratim zato sto metodoloski uzimaju podatke iz vise izvora.
[ tdusko @ 27.03.2014. 13:44 ] @
Objective-C ima konstantan rast dok C# konstantno pada. Interesantno bi bilo videti grafik ova dva jezika recimo od 2011 pa do danas. Cesto se po .net community-ju srecu devovi koji su C# zamenili sa obj C i sad peglaju iphone-ipad software.

Ono sto me je na ovoj listi iznenadilo je solidan pad C++ i mala zastupljenost javascript-a s obzirom na node js pomamu poslednjih godinu-dve. Iskreno, imao sam utisak da je js dosta popularniji.
[ jablan @ 27.03.2014. 15:53 ] @
Citat:
Cons: These results don’t reflect what developers like or use, just what terms people are searching for. Can be skewed by developers searching for more specific information (such as jQuery or Node.js instead of “JavaScript”).

http://readwrite.com/2012/06/0...-popular#awesm=~ozJ1cLPWMYuROW

Ali ako mmix kaže da je Tiobe merodavan, onda je Tiobe merodavan... ;)
[ mmix @ 28.03.2014. 08:21 ] @
Nisam ja rekao da je merodavan, samo ad je merodavniji od GitHuba
[ Nedeljko @ 29.03.2014. 18:01 ] @
Ja pojma nemam čemu služi C, osim za sistemsko programiranje.
[ Burgos @ 29.03.2014. 18:04 ] @
Moja firma bez problema razvija veliki i relativno popularan u svojoj oblasti (medicina) informacioni sistem razvijen potpuno u C-u. Kada je dostignut neki nivo sa kvalitetno napisanim bibliotekama, sam razvoj je prilicno udoban (ako si pazljiv, tj.).
[ Nedeljko @ 31.03.2014. 11:25 ] @
Mislio sam na nove projekte, a ne ono što je pokrenuto u prošlom veku, a razvija se i danas.
[ Ivan Dimkovic @ 31.03.2014. 11:40 ] @
Citat:
Nedeljko:
Ja pojma nemam čemu služi C, osim za sistemsko programiranje.


Nesto mi se cini da ce C da nadzivi Njavu i .Njet :-)
[ bachi @ 31.03.2014. 11:58 ] @
Sa korisničke strane, kako bi programi bili mnogo brži i optimizovaniji da nema .net-a i jave. :D
[ X Files @ 31.03.2014. 12:01 ] @
Povremeno bacim pogled na:
http://www.ristancase.com/cms/vp-development-assistant-for-c
(Delo SRB programera)

Vidim da su i dalje u poslu. Izgleda da je to "parčence" sistemskog programiranja i dalje vrlo stabilno/nedodirljivo.
[ Odin D. @ 31.03.2014. 14:36 ] @
Citat:
Nedeljko: Ja pojma nemam čemu služi C, osim za sistemsko programiranje.

C je de facto industrijski standard u embedded industriji, i po svoj prilici ostace jos dugo dugo vremena.

Svake godine kad citam statistike iz Embedded Market Study znacajan broj anketiranih izjavljuje da "consider using C++ (Java i sl.) in our next project" i "planning to use....", ali statistika sledece godine pokaze da sve to bas i ne odmice dalje od considering and planning. I tako godinama unazad.



[ Burgos @ 31.03.2014. 15:34 ] @
Citat:
Nedeljko:
Mislio sam na nove projekte, a ne ono što je pokrenuto u prošlom veku, a razvija se i danas.


Pokrenuto pre tri godine.
[ jablan @ 01.04.2014. 05:29 ] @
Citat:
Burgos: Pokrenuto pre tri godine.

Koji je razlog za tu odluku, pošto onako, bez poznavanja nekih detalja, izgleda potpuno apsurdno?
[ Burgos @ 01.04.2014. 08:32 ] @
Kako kažu (mene ne pitajte ništa, ja bih odavno tu D ubacio) - brzina, stabilnost i cena eksploatacije na serveru. Sve to dolazi po cenu programiranja koje mora da bude izuzetno pedantno, naročito prilikom (bilo kakve) izmene neke od biblioteka (što utiče na sve aplikacije), jer se neretko dešava da se bag ne primeti, da prođe na produkciju (istina, ovo mnogo ređe), da ga nije moguće reprodukovati, pa da se radi inspekcija svega, gde gdb (pa čak i valgrind) i ne može da pomogne (hvala Bogu, pa postoje bagovi koji se manifestuju odmah i to generisanjem SEGFAULT-a). Međutim, ako se vradi predano (kako ja inače i volim - zaista uživam u poslu), ti problemi su minimizovani, i razvoj je iznenađujuće brz.
[ jablan @ 01.04.2014. 09:25 ] @
Citat:
Burgos: Kako kažu (mene ne pitajte ništa, ja bih odavno tu D ubacio) - brzina, stabilnost i cena eksploatacije na serveru.

Hm. Kakav je to IS gde je brzina toliko presudna da je bitno da li je C ili npr. Java? I to za stabilnost i cenu ne kapiram baš... Al ajd da ne zalazimo toliko u offtopic...
[ mmix @ 01.04.2014. 09:34 ] @
Ja bih se slozio sa Jablanom, ovo nema nikakvu ni tehnolosku ni poslovnu racionalnost. U pitanju je sigurno licna preferenca osnivaca ili arhitetke
[ Burgos @ 01.04.2014. 09:44 ] @
Kako sam rekao, nemam pojma, ja sam došao na već 6 meseci razvoja, svidelo mi se, i nisam postavljao pitanja, a ovo je ono što su mi rekli :). Mislim da je mmix jako blizu, jer su i osnivač i seniori ljudi koji su zvučali oduševljeno C-om na intervjuima. U svakom slučaju, ne vidim nikakve stege zato što koristimo C. Eh, da, još da dodam, desktop klijent koji komunicira sa serverom (ne postoji predefinisani UI, već se sve konstruiše sa servera) je napisan u C++-u (Qt).
[ tdusko @ 01.04.2014. 09:49 ] @
Citat:
jablan: Hm. Kakav je to IS gde je brzina toliko presudna da je bitno da li je C ili npr. Java? I to za stabilnost i cenu ne kapiram baš... Al ajd da ne zalazimo toliko u offtopic...
Meni pada na pamet da moze biti IS koji se nudi kao SAAS pa moze da se desi da ako je pisan u javi ili C# ili u bilo kom drugom gde se o memoriji brine GC, ima problem sa CPU. Imao sam prilike da radim na takvom softveru gde je GC urnisavao performance na serveru I malo je falilo da bacimo C# code I prepisemo sve u C/C++, ali smo odustali jer smo naucili kako I gde da instanciramo objekte :D I kako da pisemo code koji je optimizovan za GC :)

Edit: pretece me Burgos :) I mirisalo mi je na to da je server C, a QT client. To je ta stara garda :D
[ mmix @ 01.04.2014. 10:02 ] @
Sta ste vi to radili kad ste uspeli da zagusite Server GC?!? Mi kad smo se trudili da ga zabijemo kroz stres testove to je zahtevalo iskren trud.
[ Burgos @ 01.04.2014. 10:02 ] @
Isto iskustvo koje su naučili na poslu koji me čeka od maja meseca (postajem ti zemljak - tdusko), kompanija koristi D, gde se, za najkritičnije delove, koristi isključivo onaj podskup D jezika koji ne uključuje GC - što će reći - pazi gde i kako alociraš objekte (jer se GC poziva prilikom konstruisanja objekata, prilikom rada sa ugrađenim nizovima, i na još par mesta). Naravno, treba uzeti u obzir (da se neko ne nakaci na flame), GC u D-u je deset koplja ispod .NETovog.

[ tdusko @ 01.04.2014. 10:27 ] @
Citat:
mmix: Sta ste vi to radili kad ste uspeli da zagusite Server GC?!? Mi kad smo se trudili da ga zabijemo kroz stres testove to je zahtevalo iskren trud.
Pa recimo da smo bili ekipa talentovanih, ali golobradih (kao da sam sad mnogo jaci :D) programera koja je pravila quote-to-order SAAS, a da nismo znali kako da scale. ASP.NET aplikacija sa serverom na 32-bitnom Windows-u bez load balancinga, bez farme, znaci jedan pool koji max moze approx 1 giga rama da alocira. Kad tako postavis stvari i ne razmisljas kako i gde instanciras objekte cas dodjes do toga da GC ima ozbiljan uticaj an performanse jer malo malo pa drlja. Napuniti giga rama sa 200 tenanta i ca 2000 usera u piku nije nikakva nauka u tom slucaju :)

Naravno, kad naucis kako se scale .net web aplikacija i kad naucis da ne treba svako malo da radis Select * from Account i konvertujes u objekte onda GC ti nece biti problem.
[ Texas Instruments @ 01.04.2014. 20:44 ] @
Zapala mi je za oko ova tema, pošto imam nekih nedoumica oko izbora u kom pravcu usmeriti karijeru. C je verovatno najzastupljeniji programski jezik, ali kada pogledate oglase nigde ne vidite da se traže C programeri, ili ja možda grešim. U Srbiji koliko mi se čini, Java(EE), .NET (C#) i web development su dominantni na tržištu, uz to još se može dodati i mobile development (Android/iOS). Sistemskog programiranja ima veoma malo (bar prema oglasima za posao) i pitanje je koliko je to plaćeno. I sa druge strane, za inostranstvo, čini mi se da se ti poslovi vezano za low level programiranje (mislim na linux kernel, device drivers, ne baš na uređaje bazirane na mikrokontrolerima, već neki ozbiljniji sistemi na kome se vrti linux/android ili neki RTOS) dosta autsorsuju u one zemlje gde je dosta jeftinija radna snaga i gde ima dosta takvih kadrova (Indija, Kina).
Da li postoji neka predikcija za poslove u narednih 20-ak godina, kako će se kretati? Vidim da se dosta stvari sada radi u JavaScriptu, neko je spomenuo koliko je NodeJS postao popularan za server-side. Kakava je budućnost C programera i koliko će oni biti traženi i da li se isplati usmeriti karijeru u tom pravcu?

Nadam se da ovim ne skrećem sa teme, ali me interesuje mišljenje iskusnijih ljudi. :)
[ tdusko @ 02.04.2014. 10:58 ] @
Popularnost i potreba za programerima odredjenog programskog jezika zavisi izmedju ostalog i od lokacije i to rekao bih primarno. Programski jezici C i C++ su na primer izuzetno popularni u automobilskoj industriji. U jednom savremenom automobilu danas imas mnogo sistema pocev od sistema za upravljanjem rada motora gde imas razne pod-sisteme za upravljanje doziranja goriva, vazduha, termoregulacije itd, preko modernih sistema za bezbednost pa dalje preko sistema za entertainment itd itd. To je samo jedan ekosistem gde imas leglo C/C++ programera, gde postoji potreba za jos vise i gde ce u buducnosti potreba biti jos veca. Ako nisi siguran u tu izjavu postavi sebi pitanje da li ce jedan auto u buducnosti imati vise ili manje softvera? :). Problem je sto je najveci broj tih firmi lociran na istom trzistu gde i sami proizvodjaci automobila ili je locirann u velikim outsource centrima poput Indije. Zato u Srbiji nemas na svakom koraku oglase za C/C++ programere, ali ih u DE imas koliko hoces. BMW, Mercedes, VW itd uglavnom nemaju interne resurse koji se bave razvojem softverskih komponenti vec su to brojne male i srednje firme koje angazuju kao eksterne resurse.

Sto se javascripta tice, nece ni on nigde, bar dok ne nadju nesto bolje, ali nesto ne ide. Mnogi se polomise da eliminisu js iz klijenta, a on postade jezik i za backend. Mnogi se polomise da objasne kako su performanse js-a crap, a on postade jezik kojim se pisu vosoko performantni web serveri i portuju 3D igrice. Da, verovao ili ne ovo je Unreal u browseru. A da, i QML(Qt) je js.

Tako da, ako mene neko danas pita koji prog jezik prvo da nauci, ja bih mu rekao da je C++ must. Ima ga u embedded svetu, ima ga u desktop svetu - QT, ima ga u svetu igrica gde ce ga biti jos vise jer ce se sve vise igrica pisati za browser i pisace se u C++. JS je i ovako i onako preduslov za bilo kakvo programiranje web(citaj browser) aplikacija pa ko nema problem sa time da mu stara garda prica da se bavi nemoralnim poslom eto sanse.

[ Ivan Dimkovic @ 02.04.2014. 13:35 ] @
Citat:
Texas Instruments
Da li postoji neka predikcija za poslove u narednih 20-ak godina, kako će se kretati?


Osim par industrija gde su proizvodni ciklusi mere sa mnostvom godina, predikcije za bilo koji rok duzi od nekoliko godina imaju drugo ime: nagadjanje.

Automobilska industrija je, recimo, primer industrije sa dugim proizvodnim ciklusima (jedna generacija automobilske platforme je 4 godine u implementaciji + 2 godine za inicijalno istrazivanje + 2 godine "facelift" ciklusa gde se rade inkrementalna poboljsanja = 8 godina), i tu mozes biti prilicno siguran kakva ce situacija biti do neke 2022-ge po pitanju grubog izgleda sistema. Ali cak i tu, na pitanje sta ce biti za 15-tak godina niko ne moze da odgovori.

Osim takvih industrija, slaba ti je vajda od prognoziranja na vise od nekoliko godina.

U svakom slucaju C/C++ ce biti u korisnom zivotu bar onoliko koliko i neka Java/.NET, a mozda i duze.

Medjutim, kao sto si primetio, trzista se razlikuju i na nekim trzistima ces verovatno lakse nalaziti posao sa Java/.NET ili nekim od web platformi, ako planiras da ostanes na takvim trzistima onda ima smisla da se fokusiras na neku od tih platformi.

Ako planiras da radis i contracting vani, onda je, IMHO, najpametnije da se prvo izgradi jaka baza sa necim generalnim poput C++-a i Jave, i da se onda ide u specijalizaciju. Sa tim uvek imas mogucnosti da, ako neka tehnologija postane dead-end, da se lako ili prebacis u generalce ili opet da se specijalizujes za nesto novo. Neko ko je dobar sw. inzenjer i dobro barata konceptima nema nikakav problem da se specijalizuje za nesto kasnije.

[ djoka_l @ 02.04.2014. 13:47 ] @
Moram da ponovim ovo što je napisao Dimković:

Citat:
Neko ko je dobar sw. inzenjer i dobro barata konceptima nema nikakav problem da se specijalizuje za nesto kasnije.


Moj primer - pred kraj faksa, seo sam i napisao spisak programskih jezika na kojima sam do tada bar nešto isprogramirao, pa je ispao spisak od oko 30 različitih jezika (ne baš potpuno različitih, na primer bilo je bar 7 različitih asemblera, ali asembler za jednu arhitekturu se toliko mnogo razlikuje od asemblera za drugu, da su to praktično različiti programski jezici).

Kada sam se zaposlio, dobio sam zadatak da programiram u programskom jeziku koji do tada nisam nikad radio, PL/SQL-u. Sva moja obuka za to je bila: To ti je jezik sa kontrolnim strukturama kao Ada (učio na faksu, napisao ukupno 2,3 programa) sa dodatim SQL-om (i to učio).

Pre nekoliko meseci sam morao da modifikujem kod koji je pisan u Python-u, kojeg pre nikada nisam video. Posle pola sata sam već mogao da pravim izmene, za 4 sata sam već uveliko programirao, pa kad sam završio, zaboravio sam ga za jedan dan.

Osnovno je da se nauče koncepti programiranja, a ne jezik. Kada znaš koncepte, svaki jezik je malo drugačiji dijalekt koji radi slične stvari na sličan način.

Po meni, razvojni put programera bi bio: prvo C, koji onda otvara vrata za C++, a posle C++ ti je sve jedno da li ćeš da učiš C# Javu ili neki drugi OO jezik. Nezavisno od ovoga, obavezno treba naučiti neki dijalekt SQL-a. Za web razvoj, počneš od golog HTML-a, onda se baciš na CSS, pa JS, posle dođe PHP, Ruby, Python ili (sve ređe) Perl (koji je jedan od najodvratnijih jezika u kojem sam nešto radio). Bitno je da razumeš programersku logiku, algoritme, strukture podataka, baze podataka, a u određenoj meri, u zavisnosti od prirode posla, pomaže i matematika, fizika, ekonomija i sl.
[ Burgos @ 02.04.2014. 14:03 ] @
Podvukao bih još što su ostali rekli - softversko inženjerstvo nisu samo programski jezici. Zapravo, programski jezici su samo alat kojim verbalizuješ ideju koju stvoriš u glavi, i prirodno, svakom jeziku više "leži" neka primena. Ono što je važno da naučiš je stvaranje ideje, dakle, čitanje i učenje o svemu što ima bilo kakve veze sa ovim zanatom, počevši od fundamentalnih udžbenika na temu dizajna i razvoja softvera, pa sve do blogova i podcast-a, i za ono što te ne interesuje (npr. mene administracija ne privlači preterano, ali opet čitam o tome). Najbolji primer za to je C - jezik ko jezik, ništa preterano specijalan, ali višestruko koristan za učenje, jer uz njega moraš (čak i prilikom najprimitivnijeg programiranja) da naučiš arhitekturu (pa i organizaciju) sistema za koji programiraš, bez obzira da li koristiš samo standardni C, ili specifičnosti nekih implementacija.

Divan je ovo posao, samo kad bi još moglo da se nikad ne ide u produkciju, gde bi mi kraj bio :).
[ AstralPro @ 05.04.2014. 12:56 ] @
Citat:
Burgos: Podvukao bih još što su ostali rekli - softversko inženjerstvo nisu samo programski jezici. Zapravo, programski jezici su samo alat kojim verbalizuješ ideju koju stvoriš u glavi, i prirodno, svakom jeziku više "leži" neka primena. Ono što je važno da naučiš je stvaranje ideje, dakle, čitanje i učenje o svemu što ima bilo kakve veze sa ovim zanatom, počevši od fundamentalnih udžbenika na temu dizajna i razvoja softvera, pa sve do blogova i podcast-a, i za ono što te ne interesuje (npr. mene administracija ne privlači preterano, ali opet čitam o tome). Najbolji primer za to je C - jezik ko jezik, ništa preterano specijalan, ali višestruko koristan za učenje, jer uz njega moraš (čak i prilikom najprimitivnijeg programiranja) da naučiš arhitekturu (pa i organizaciju) sistema za koji programiraš, bez obzira da li koristiš samo standardni C, ili specifičnosti nekih implementacija.


Slazem se u potpunosti. Pocinje se sa "prostim" programskim jezicima, uce se liste, stekovi, najprostije strukture podataka sve sa ciljem da se razvije ispravan nacin razmisljanja i resavanja problema, a za to bi trebali biti zaduzeni profesori na fakultetima (PMF u mom slucaju).
Sve ostalo je do samog programera da odabere smer svog usavrsavanja i ide u tom pravcu.
[ mmix @ 05.04.2014. 13:11 ] @
Pa i radi se to. Doduse bar ovde na RAFu gde sam sada. Radilo se svojevremeno i na ETFu na racunarskom meru. Problem koji sam ja uocio je da dva nisu striktno povezana, narocito danas kad su programski jezici toliko abstraktni. Jednom javascript devu je potpuno irelevantno koja je arhitektura ispod, cak i da li je uopste von neumann arhitektura :) Ne mogu 100% da tvrdim, ali je mozda jedan jaavscript dev i bolji sto manje zna o arhitekturi, sto mu daje slobodu da razmislja oslobodjen stega te arhitekture.
[ Burgos @ 05.04.2014. 14:31 ] @
Da, strukture podataka se rade na ETF-u, već na početku programa odseka.

Kad spomenu profesore, moram da kažem da su najuticajniji upravo oni koji su napisali dve knjige devedesettreće, od tada nijedan udžbenik nisu izdali, a o razvoju tehnologije veze nemaju (pa tako na ETF-u još uvek ceo jedan semestar prođe u deljenoj memoriji, a o MPI-u se govori tek na jednom dvočasu), tako da je sigurno nekad bolje ne znati ništa, nego se držati prevaziđenih metoda.
[ Andrej013 @ 05.04.2014. 14:55 ] @
Ja mislim da bi sveobuhvatnija lista programskih jezika bila:
C++, Java, Python i neki SQL.
Ako njih naucis i nabacis neko iskustvo, neces imati problem da se presaltas na bilo sta u roku od odma'.
To je naravno ogroman posao i kada dodjes do cilja vec bi trebalo da znas strukture podataka, memory management, concurrency, OOP paterne, upite i slicno(jedino mozda neces nauciti algoritme ali oni su ti u poslu nebitni, nasuprot opsteprihvacenom misljenju da ako ne znas algoritme ne mozes biti sw inzener)
[ Burgos @ 05.04.2014. 15:09 ] @
Citat:
jedino mozda neces nauciti algoritme ali oni su ti u poslu nebitni


Svakako je važno znati bar razliku između njih, dobre i loše strane svakog, kao i uobičajenu primenu (jer, kako ćeš znati da ih primeniš, ako ih ne znaš - ne rešava std::sort sve), a sve ovo se može i u WC-u naučiti. A šta će ti i strukture podataka, bez algoritama.

Citat:
nasuprot opsteprihvacenom misljenju da ako ne znas algoritme ne mozes biti sw inzener)


Za ovo si u pravu, samo zavisi šta radiš.
[ Andrej013 @ 05.04.2014. 15:31 ] @
Citat:
Burgos: A šta će ti i strukture podataka, bez algoritama.

Iz mog iskustva, strukture podataka su najbitnija stvar koju moras nauciti u programiranju. Sa druge strane, koliko su strukture podataka bitne, toliko su algoritmi nebitni.
Na kraju, ako te zanimaju razlike izmenju njih, uvek mozes naci tabelu Big O notacije i sl i zavrsio si sa algoritmima.
Ja mislim da se na algoritmima insistira samo na intervjuima kako bi se profirtrirali kandidati, u nedostatku boljeg mehanizma odredjivanja necijih sposobnosti.
Mislim da je medju ljudima koji su zavrsili CS skoro pa tabu tema, jer su proveli bar desetine sati uceci algoritme za ispit, pa je bedak da se prihvati da je to vreme malte ne protraceno. Ali i ja sam morao da prodjem kroz sve moguce i nemoguce algoritme kada sam se spremao za intervjue za posao i posle celog iskustva, ne mislim da me je to znanje ucinilo boljim developerom, ili bar ne srazmerno vremenu provedenom uceci.
Mislim da bi neko ko uci, za to vreme provedeno uceci algoritme mogao da nauci korisnije stvari poput machine learninga, mozda dodatne paterne, naprednije upite, regression analysis i sl.

Naravno, ovo vazi za 99% standardnih poslova. Sa druge strane, ako se bavis analizom/proucavanjem algoritama u neke naucne svrhe onda sam definitivno u krivu :)

[Ovu poruku je menjao Andrej013 dana 05.04.2014. u 16:45 GMT+1]
[ Burgos @ 05.04.2014. 16:21 ] @
Mislim da se samo ne razumemo :).

Ja ne kažem da treba znati implementirati bilo koji standardni algoritam u bilo koje doba dana i noći (kao što te to već na kursu uče :-) ), neko bolji, pametniji, sposobniji, sa više vremena, novca i QA je to već implementirao u standardnoj biblioteci, ali nije ni algoritam samo znati prepoznati Big-O, već je i znati kako proći kroz graf, znati da postoji standardni način(a) da se nađe najmanje rastojanje, znati da šta je problem trgovačkog putnika, itd., itd. - dakle, znati da postoji (ili ne postoji) način, a ne znati da implementiraš bilo koji obilazak grafa na tri različita načina. A na primer, i nije potrebno znati koji algoritam primeniti na sortiranje liste sa sekvencijalnim, a koji za sa slučajnim pristupom - biblioteka se uglavnom brine o tome, a ne ti. Kao što sam rekao, ovo bi trebalo kroz razonodu učiti, a ne na bloku papira.
[ Ivan Dimkovic @ 05.04.2014. 18:49 ] @
Citat:
Andrej013
koliko su strukture podataka bitne, toliko su algoritmi nebitni.


To jeste tacno za gomilu "sljakatorskih" pozicija gde je cilj sto pre i jeftinije nakalemiti nesto "da radi", pogotovu u danasnje vreme kojekakvih STL-ova, boost-ova, itd.. biblioteka koje imaju skoro sve zivo sto nekome moze zatrebati na takvoj poziciji.

Doduse, cim nekome bude potrebna neka optimizacija a da to "nema u lib-ovima", znanje algoritama i te kako postaje bitno.

Sa druge strane, vrlo verovatno bar 2/3 programerskih poslova danas se svode na neke jednostavne operacije nad strukturama podataka u jednom thread-u, eventualno sa jednostavnim multithread-ingom. Takve pozicije zaista mogu da prodju sa jako sazetim znanjem koncepata iz informatike i softverskog inzenjerstva.
[ Nedeljko @ 05.04.2014. 19:00 ] @
Andrej013,

Ako si ti softverski inženjer, onda sam ja marsovac. Moguće je da radiš kao koder, ali onda nemaš iskustvo softverskog inženjera.

Na ETF-u se nešto uči da bi pisalo da se uči, a ne da bi se steklo upotrebljivo znanje. Tako je barem sa matematikom na dotičnom fakultetu. No, ne bi me iznenadilo da i algoritmi imaju sličan tretman.

Ako misliš da su desetine sati provedenih u učenju algoritama puno, onda nije ni čudo što ne znaš da ih primeniš. Pre će biti da su potrebni meseci učenja da bi se stiglo do upotrebljivog znanja.

Poenta nije ni u znanju nekoliko najčešćih algoritama, već i u prepoznavanju istih u situacijama u kojima se njihovi apstraktni pojmovi ne pominju, kao i u dizajniranju algoritama za specifične potrebe. Naravno, to neće da radi koder, već neko sa većom platom od njegove.
[ Andrej013 @ 05.04.2014. 19:24 ] @
@MMIX
Slazem se. Medjutim, to da "nekome bude potrebna neka optimizacija a da to "nema u lib-ovima"" se desava doviljno retko da kada se desi, ok je izgubiti jedan dan istrazivati tu specificnu oblast kako bi se naslo resenje. Neku naprednu pretragu grafova ces morati da radis verovatno dva puta u deceniji a I tada ces morati da obnovis gradivo. Prosta cost-benefit analiza govori da je ucenje algoritama na tom nivou na kom se insistira na faxevima pa nekada cak I na intervjuima za posao, skoro pa potpuno gubljenje vremena. :)
Sve to pod pretpostavkom da si dovoljno inteligentan I snalazljiv da kada se sa problemom susretnes, u stanju si da ga resis koristeci razne resurse u razumnom roku.
[ Andrej013 @ 05.04.2014. 20:10 ] @
Citat:
Nedeljko:
Andrej013,

Ako si ti softverski inženjer, onda sam ja marsovac. Moguće je da radiš kao koder, ali onda nemaš iskustvo softverskog inženjera.

Sada radim kao quant/developer ali sam radio kao inzenjer.
Ali ni to ne govori mnogo. Ono sto govori je cinjenica da svi mi poznajemo po tridesetak sw inzenjera koji imaju ogromno znanje algoritama koje nikada ali nikada nisu koristili. Mozda 3% inzenjera koristi znanje algoritama sto znaci da bi trebalo da to znanje bude vrlo nisko na listi prioriteta. Razumem da tebi nije, ali to sam vec objasnio-ti si ogromnu kolicinu vremena posvetio algoritmima pa nisi u stanju da prihvatis da, iako je to znanje koje posedujes impozantno, zanimljivo, za pohvalu, ono je manje vise nepotrebno.


Citat:
Nedeljko:
Ako misliš da su desetine sati provedenih u učenju algoritama puno, onda nije ni čudo što ne znaš da ih primeniš. Pre će biti da su potrebni meseci učenja da bi se stiglo do upotrebljivog znanja.

Prvo, ne vidim otkud ti ideja da ne znam kako da ih primenim? Ja se ne bunim ovde da nesto ne zam, vec texas instrumentsu dajem savet da ako ga zanima sta da uci i sta ce mu biti potrebno u narednih 10 godina, jedno je skoro pa sigurno-algoritmi nece.

A sto se tice sati provedenih-zavisi kako kome. Moguce da je tebi bilo potrebno hiljadu, drugima nije. Ni za algoritamsku bibliju, CLRS, ti nije potrebno vise od 100 sati. Ali ako neko hoce ili je primoran da se time bavi, onda je i 1000 sati malo.

Kao sto rekoh, ljudi poput tebe su tipican primer softverasa koji insistira na detaljnom poznavanju algoritama a na poslu su ih poslednji put upotrebili pre 5 godina i to najcesce ne zato sto su morali vec zato sto su hteli.

Citat:
Nedeljko:
Poenta nije ni u znanju nekoliko najčešćih algoritama, već i u prepoznavanju istih u situacijama u kojima se njihovi apstraktni pojmovi ne pominju, kao i u dizajniranju algoritama za specifične potrebe. Naravno, to neće da radi koder, već neko sa većom platom od njegove.

U potpunosti se slazem. To nije znanje koje te uce u skolama i na kojem seniori insistiraju.
Masa klinaca je grilovana na intervjuima i onda kada dodju na posao zadatak im je da napisu html ili prosti back end u javi.
Naravno, karikiram ali poenta ostaje.

Multithreading je dobar primer necega cemu je potrebno posvetiti vreme i sto se mora savladati, ali je u isto vreme, za razliku od algoritama, vrlo korisno.
[ Nedeljko @ 05.04.2014. 21:47 ] @
Jedino što si objasnio je da ne znaš čemu služe algoritmi.

Čuj, svaki dan se brane doktorati iz toga, ali si ti to nsbiflao za sto sati.

Time si samo opisao svoj videokrug algoritmike.

No, mora da je tvoje mišljenje relevantnije od mišljenja univerziteta širom sveta, jer se baš na svakom kvalitetnom uče algoritmi mesecima.

No moram i ja da se popravnim. Koder treba samo da zna da implementira kod po uputstvima i ja ne znam ni za jednu firmu koja ih zapošljava. Inženjer treba da zna da projektuje po poznatim metodama i on zaista ne mora da zna algoritme, a potražnja na tržištu rada za inženjerima već postoji. Razvijalac je već kreativac i tu nema ni govora o nevladanju algoritmima. Tačno je da većinu znanja neće upotrebiti, ali se ne zna koji će mu trebati.

Oćeš li zadatak da prepoznaš koji algoritam da koristiš?
[ Andrej013 @ 06.04.2014. 00:11 ] @
Citat:
Nedeljko: Jedino što si objasnio je da ne znaš čemu služe algoritmi.

Čuj, svaki dan se brane doktorati iz toga, ali si ti to nsbiflao za sto sati.

Svaki dan se brane doktorati na polju slikarstva XVI veka i podjednako su bitni za karijeru softverskog inzenjera kao ovi koje ti navodis.

Sa druge strane opet otkrivas toplu vodu.
Kao sto rekoh, stanoviste vecine je da su algoritmi neophodni i da ne treba dozvoliti studentima da zavrse fax(jer je uglavnom to obavezan kurs sto je tek budalastina) i zaposle se za 400eura platu bez da barataju najsitnijim detaljima vezanim za algoritme koji im u narednih 50 godina nikada nece biti potrebni. To je opsteprihvaceno misljenje, sto naravno ne znaci da nije pogresno.

Cinjenica da je sto sati posvecenih algoritmima za tebe nista, samo potvrdjuje moju tezu da ljudi koji potrose puno vremena na nepotrebnu stvar, kad god su u mogucnosti, insistiraju da i drugi trose puno vremena na istu.

Inace, nadam se da je ocigledno, ja ne tvrdim da algoritmika nije fundamentalno bitna za informatiku, mozda i najbitnija s obzirom na to da bez efikasnih algoritama svet kakav poznajemo ne bi postojao. Ja tvrdim da je za 99% softverskih inzenjera ona potpuno nebitna (zivo me zanima kada je neko sa foruma poslednji put implementiarao/modifikovao neki napredni algoritam koji je ucio na faxu, ne kazem da je nemoguce, samo kazem da je izuzetno retko i disproporcijonalno vremenu koje se provede uceci to). Algoritmika i treba da se istrazuje na faxevima, doktorati treba da se pisu na tu temu sto je pozeljno za covecanstvo. Ono sto nije pozeljno je primoravati hiljade studenata da provedu desetine i stotine sati savladavajuci nesto sto im najverovatnije nece biti potrebno, narocito ne do te mere i tih detalja.
Ono sto je potrebno vecini softverasa je osnovno znanje, sta postoji, osnovni mehanizam i ideju, sta moras sam da doradis i slicno. To osnovno moze da se nauci za maximum 10 sati efikasnog ucenja, sto je u sustini dva dana ucenja bez naprezanja.

To je tacno ono o cemu je i @Burgos govorio:
Citat:
Burgos:
Ja ne kažem da treba znati implementirati bilo koji standardni algoritam u bilo koje doba dana i noći (kao što te to već na kursu uče :-) ), neko bolji, pametniji, sposobniji, sa više vremena, novca i QA je to već implementirao u standardnoj biblioteci, ali nije ni algoritam samo znati prepoznati Big-O, već je i znati kako proći kroz graf, znati da postoji standardni način(a) da se nađe najmanje rastojanje, znati da šta je problem trgovačkog putnika, itd., itd. - dakle, znati da postoji (ili ne postoji) način, a ne znati da implementiraš bilo koji obilazak grafa na tri različita načina. A na primer, i nije potrebno znati koji algoritam primeniti na sortiranje liste sa sekvencijalnim, a koji za sa slučajnim pristupom - biblioteka se uglavnom brine o tome, a ne ti. Kao što sam rekao, ovo bi trebalo kroz razonodu učiti, a ne na bloku papira.

i ja se sa time slazem 100%

Citat:
Nedeljko:
Razvijalac je već kreativac i tu nema ni govora o nevladanju algoritmima. Tačno je da većinu znanja neće upotrebiti, ali se ne zna koji će mu trebati.

Bas iz tog razloga je bitno da se ne ulazi u najsitnije detalje svega i gubi se vreme ako se zna da vecinu nece upotrebiti. Dovoljno je da je inteligentan i da kada naidje na problem, na osnovu znanja osnovnih pojmova i ideja zna kako da dodje do resenja iako ga nema u glavi u svakom trenutku. Za vreme koje se provede uceci algoritme moze da se nauci mnogo toga korisnijeg, to je poenta.
Sa druge strane, ako si vec naucio sve sto smatras korisnim i dodjes do zida i sada ne znas sta dalje, onda naravno uci algoritme par godina...mozda ce ti pomoci jednog dana da na poslu ne provedes 4 sata resavajuci problem vec mozda 1 sat.


Citat:
Nedeljko:
Oćeš li zadatak da prepoznaš koji algoritam da koristiš?

Evo jedan za tebe:
imas sortiran niz stringova sa imenima ljudi/ucesnika nekog foruma po kome su rasuti i prazni stringovi:
{"Andrej013", "", "", "", "", "MMIX", "", "", "", "", "", "Nedeljko", "", "", "", "", "",}
Napisi metodu(moze i pseudocode) za nalazenje pozicije osobe koji ne zeli da resava algoritamske probleme jer je u 4 poruke napisala da smatra da je to gubljenje vremena.


Javi se ako imas problem - mozda to gradivo nije uslo u stotine sati algoritmike na faxu.
[ Nedeljko @ 06.04.2014. 07:18 ] @
Pretraži se ES i vidi se gde piše "je gubljenje vremena", a da blizu imaš "algorit*" i da nemaš "ne" i "nije".
[ Ivan Dimkovic @ 06.04.2014. 11:58 ] @
Citat:
Andrej013
Ono sto nije pozeljno je primoravati hiljade studenata da provedu desetine i stotine sati savladavajuci nesto sto im najverovatnije nece biti potrebno, narocito ne do te mere i tih detalja.


Nisam siguran u to.

Cilj kurseva na fakultetima je proizvodnja ili softverskih inzenjera ili informaticara.

I za jedan i za drugi posao je potrebno znanje algoritama.

Sasvim druga stvar je sto za ogroman % poslova na IT trzistu nije potrebno biti sw. inzenjer ili informaticar, vec je dovoljno imati samo elementarno znanje programskih jezika.

IMHO, mislim da je potpuno besmisleno insistirati na diplomi sw. inzenjera ili informaticara za pisanje web skriptova ili neke jednostavne poslovne logike, korisnickog interfejsa itd... te poslove moze da odradi jeftinija radna snaga od softverskih inzenjera ili informaticara.

Medjutim cim zadjes u domen gde je potrebno inzenjerstvo, vrlo brzo ce biti potrebno znanje algoritama koje se uci na fakultetima.

Naravno, na konkretnom poslu ce ti verovatno uvek trebati 5% onoga sto se uci na (dobrom) fakultetu, ali kada se ljudi spremaju da budu buduci inzenjeri ne zna se kojih ce tacno 5% njima trebati u konkretnim karijerama, a ima i onih kojima ce trebati mnogo vise ako su ambiciozni.

Zbog toga su programi koji se izucavaju sasvim dobri, zato sto im je cilj da skoluju svestrane sw. inzenjere ili informaticare, a ne one-trick ponije.

Sve to, naravno, nije neophodno za svaki posao i ko ne zeli moze sve to da propusti i da se sam obrazuje, samo sto je onda u tom slucaju tezi proces ubedjivanja prvih poslodavaca da je doticni kanditat najbolji za taj posao.
[ pexxi92 @ 06.04.2014. 13:13 ] @
Andrej verujem ti da ti nikad nije bilo potrebno algoritamsko znanje, medjutim to je zbog toga sto ti nisi softverski inzenjer vec obican koder koji radi na poslovima jeftinije radne snage. Cisto sumnjam da bi top svetski univerziteti izucavali algoritme kao core curs na cs programima da su to apsolutne budalastine. Otpustili bi te prepotentne naucnike i dali bi te pare tebi da ucis decu css i wordpress.
[ Ivan Dimkovic @ 06.04.2014. 15:57 ] @
Fora je sto i na dobrom delu sw. inzenjerskih poslova isto tako treba samo mali % onoga sto se uci na jednom dobrom kursu sw. inzenjerstva.

Ali tako je sa svakim poslom gde postoji specijalizacija.

Hajde da kazemo da u nekom specijalizovanom poslu treba 5-10% koncepata iz doticne profesije. Medjutim, svaki specijalizovani posao trazi drugih 5-10% a u momentu studiranja malo ko zna sta ce mu tacno kasnije trebati u zivotu. Zbog toga se uci 100%, a onda se kasnije specijalizuje.

Da ne pricamo o tome da nista na ovom svetu nije garantovano i da lako moze da se desi da covek mora da promeni ne samo poslodavca nego cak i industriju, sto znaci da ce mu onda mozda zatrebati nekih "drugih 5-10%" teorijskih stvari.
[ Andrej013 @ 06.04.2014. 16:05 ] @
Citat:
Nedeljko:
Pretraži se ES i vidi se gde piše "je gubljenje vremena", a da blizu imaš "algorit*" i da nemaš "ne" i "nije".

Slazem se, zato i kazem vec peti put da se smatra da su algoritmi jedni od najbitnijih polja. Kao sto rekoh: "To je opsteprihvaceno misljenje, sto naravno ne znaci da nije pogresno."

Sve u svemu, mislim da se razumemo da se ne slazemo a necemo se sloziti sve dok mi neko od seniora ne navede kada mu je poslednji put bilo potrebno detaljno znanje algoritama do te mere da bez ucenja algoritma godinama ne bi bio u stanu da resi problem.


Citat:
Ivan Dimkovic:
Cilj kurseva na fakultetima je proizvodnja ili softverskih inzenjera ili informaticara.

I za jedan i za drugi posao je potrebno znanje algoritama.

Sasvim druga stvar je sto za ogroman % poslova na IT trzistu nije potrebno biti sw. inzenjer ili informaticar, vec je dovoljno imati samo elementarno znanje programskih jezika.

IMHO, mislim da je potpuno besmisleno insistirati na diplomi sw. inzenjera ili informaticara za pisanje web skriptova ili neke jednostavne poslovne logike, korisnickog interfejsa itd... te poslove moze da odradi jeftinija radna snaga od softverskih inzenjera ili informaticara.

Medjutim cim zadjes u domen gde je potrebno inzenjerstvo, vrlo brzo ce biti potrebno znanje algoritama koje se uci na fakultetima.

Naravno, na konkretnom poslu ce ti verovatno uvek trebati 5% onoga sto se uci na (dobrom) fakultetu, ali kada se ljudi spremaju da budu buduci inzenjeri ne zna se kojih ce tacno 5% njima trebati u konkretnim karijerama, a ima i onih kojima ce trebati mnogo vise ako su ambiciozni.

Zbog toga su programi koji se izucavaju sasvim dobri, zato sto im je cilj da skoluju svestrane sw. inzenjere ili informaticare, a ne one-trick ponije.

Sve to, naravno, nije neophodno za svaki posao i ko ne zeli moze sve to da propusti i da se sam obrazuje, samo sto je onda u tom slucaju tezi proces ubedjivanja prvih poslodavaca da je doticni kanditat najbolji za taj posao.

Znas kako, ja sam naveo se podrazumeva da postoje pozicije koje zahtevaju znanje algoritama, ali kazem je broj tih pozicija toliko mali u odnosu na pozicije koje ne zahtevaju to znanje da je sasvim ok reci da je provoditi stotine sati uceci algoritme losa investicija pored obilja tehnologija, ideja, problema koje mozes uciti a koje ces mnogo cesce sretati u praksi i koje ce biti korisnije.
Kompanije insistiraju na proveravanju znanja algoriama u nedostatku boljeg metoda filtriranja kandidata. Dakle, apliciras na poziciju sw inzenjera? Ok, to znaci da si imao algoritme u skoli, e zbog toga daj da te testiramo na tom polju da vidimo 1. koliko si pametan ili 2. koliko si dobro savladao gradivo. Sa druge strane profesori na faxevima znaju koliko su oni proveli vremena uceci algoritme a i da za bilo koji posao moras da ih znas(zbog intervjua iskljucivo) pa imaju dva razloga da uvode algoritme kao obavezan predmet. Vrlo neefikasno i nepotrebno ali bolje ocigledno ne postoji.

Inace, ja ovo ne samo iz pricam svog iskustva. Poznajem desetine juniora koji su po svetskim komanijama, sve su ih grilovali algoritme a niko ih ne koristi na poslu.
U isto vreme, o svojim zapazanjima sam pricao sa svojim shefom jer me je bas zanimalo koj k. me je ispitivao grafove kada sam dolazio na intervju kad vidi da nemam CS diplomu, ne apliciram za poziciju sw inzenjera a sada posle godinu dana rada sam 100% siguran da mi grafovi bas nikada nece biti potrebni i da je bilo mnogo vise smisla ispitivati statistiku, data analysis metode i sl. I iz nejgovog odgovora sam shvatio da je u pitanju inercija-njega su slicne stvari pitali, on voli algoritme, zanimljivo je resavati ih i slicne budalastine. Senior softver inzenjer sa kojim radim u timu takodje uporno tvrdi da su algoritmi bitni, a posle razgovora se ispostavi da u poslednjih 10 godina nikada ih nije koristio da bi zakljucak bio da mozda i ne moras da znas da ih implementiras, ali je bitno da znas princip jer je bitno kako to radi ispod haube,i to te cini boljim inzenjerom. Ja mislim da je to tacno, ali onda ne treba provoditi stotine ili nedeljkove hiljade sati proucavajuci algoritme-to je nepotrebno. Ja sam prosao kroz to i nakon iskustva, osecam se kao da sam izgubio vreme.

Citat:
pexxi92: Andrej verujem ti da ti nikad nije bilo potrebno algoritamsko znanje, medjutim to je zbog toga sto ti nisi softverski inzenjer vec obican koder koji radi na poslovima jeftinije radne snage. Cisto sumnjam da bi top svetski univerziteti izucavali algoritme kao core curs na cs programima da su to apsolutne budalastine. Otpustili bi te prepotentne naucnike i dali bi te pare tebi da ucis decu css i wordpress.

Prvo, stvarno ne razumem to gledanje sa visine "obican koder koji radi na poslovima jeftinije radne snage". Prilicno nezrelo i ja sebi ne bih dozvolio da ti se obracam sa visine samo zato sto radim na placenijem i zahtevnijem poslu. Sa druge strane, vidi care, ja liniju koda u CSSu ili icemu slicnom nisam u zivotu iskucao a mogao sam da budem softverski inzenjer, izmedju ostalog, u microsoftu, black rocku i banci amerike koji placaju prilicno lepe pare za tu poziciju, ali nisam jer sam nasao daleko bolje placeniji a u isto vreme zanimljiviji posao, tako da sam prilicno siguran da ne radim na poziciji jeftine radne snage. Naravno moja situacija je specificna jer nisam zavrsio CS vec signal processing, u isto vreme znam da programiram, a radio sam kao research asistent na polju neuralnog inzenjeringa gde smo koristili algoritmi i statisticke metode koje softverski inzenjeri obradjuju mozda na PHD nivou a mozda nikada. Ta kombinacija skilova je prilicno retka, tj ponuda je daleko veca od potraznje, narocito u new yorku.
Naravno, ja prihvatam da mozda nikada nisam radio kao sw inzenjer iako sam bo zaposlen na toj poziciji, ali ljudi se frljaju nazivima i titulama stalno i zato pitam vas koji jeste radili na "pravom" softverskom inzenjeringu koliko cesto, tj da li ste ikada primenjivali to znanje i kada? Ajde da malo razmenjujemo iskustva.






edit: typo

[Ovu poruku je menjao Andrej013 dana 06.04.2014. u 17:34 GMT+1]
[ Nedeljko @ 06.04.2014. 16:56 ] @
Vidi, drugar mi je pričao o ženi koja živi lepo, a u životu je trebala da zna samo da raširi noge. To je OK, ali to što njoj algoritmi nisu bili potrebni ne znači da ne treba da se uče na studijama odgovarajućeg profila.

Konkretno, meni su trebale Keplerove jednačine za ovozemaljske poslove, koji imaju matematičku formulaciju istog oblika, pa mi je bilo potrebno da za elipsoid i sferu utvrdom da li se seku ili je jedno u drugome ili jedno van drugoga, pa nestandardan zadatak iz Bezijeovih krivih, pa zadaci koji se svode na probleme sa grafovima, pa izmene postojećih algoritama da bi se postiglo nešto drugo itd. Da bi mogao da prepoznaš na koji se od opštih problema nešto svodi, treba da vladao idejama, a to neće ići sa par desetina časova učenja.

Na kraju, na osnovu čega tvrdiš da si mogao da radiš u Majkrosoftu?
[ Snacker @ 06.04.2014. 19:31 ] @
Samo vas gledam...

Dennis Ritchie
[ Branimir Maksimovic @ 06.04.2014. 19:55 ] @
C je popularan u open source svetu zato sto je Unix == C. Java je nasuprot tome popularna
u komercijalnom svetu. Svakako trziste diktira sta je popularno a C programera vs Java
programera kolko ima?
Licno ne podnosim Javu i tesko bih mogao raditi u njoj posto mi je odvratna
ali ako trziste zahteva hm...
Sto se algoritama tice i C i Java zahtevaju poznavanje algoritama
bez obzira sto C ima minimalisticki lib a Java ima pa ogroman lib.
Nekad se programiralo na papiru, prvo nacrtas algoritam
pa onda prevodis u program ;)
To sto se vise ne crtaju algoritmi nego se radi iz glave
ne znaci da se isti ne koriste ;)
[ Sapphire @ 06.04.2014. 20:37 ] @
Evo mog primjera sta je meni do sada zatrebalo:

- DFS i BFS
- Binary search
- Poznavanje nekih struktura tako da mogu donijeti odluku kada je Hash table bolji izbor od liste, ili recimo sta su implikacije po memoriju kada se koristi cisti array i sl.
- Weighted graphs (doduse koristenjem gotovih biblioteka ali ipak fino je znati sta se tu tacno odvija)
- Dinamicko programiranje u jednom slucaju optimalnog planiranja

U osnovi ja se slazem sa odredjenim dijelovima sto je Andrej013 spomenuo, kao da recimo mnogi poslodavci postavljaju pitanja iz algoritama dok nista od toga ne upotrebljavaju na poslu, ali ipak ako se u tome ne pretjeruje (recimo da netko inzistira na opisivanju B+ stabla a ono trazi se web frontend developer) to moze biti dobra stvar, jer i ja bih uvijek prije radio sa osobom koja ima malo sire znanje nego da mu je domet "new List()".

S druge strane mislim da to sto Nedeljko zagovara hiljade sati proucavanja algoritama i struktura da je malo pretjerivanje. Primjera radi, 1000 radnih sati je 125 dana x 8 sati, a ja mogu reci slobodno da nisam proveo na izucavanju toga svega vise od 200 - 300 sati. Moje trenutno znanje je pobrojati vecinu algoritama sortiranja i pretrage raznih struktura, njihove O-karakteristike; znao bih i implementirati vecinu struktura i isto opisati O-karakteristike za osnovne operacije, poznajem i neke naprednije stvari oko stabala, grafova, genetickog programiranja, fuzzy logike ---- i to bi bilo to. Dosta ovih stvari sam svojedobno i implementirao, ne radi se o pukom nabubavanju. Mislim da imam dovoljno osnova za ako neki tezi problem naidje da prepoznam sta je potrebno i da eventualno pojacam znanje iz istog. Da idem u daljnje preventivno ucenje "za svaki slucaj" meni je "neisplativno" sa svih aspekata, imam drugacije prioritete recimo sa strane software arhitekture i sl.
Neke ljude ce naravno put odvesti do potrebe za detaljnijim znanje (npr. rad na jezgri nekog sistema za logistiku, ili rad na google search engine-u), ali nitko tu ne zavrsi a da nije ciljano to htio. Meni i vecini ljudi to nije cilj, te stoga mislim da nema potrebe za nametanjem hiljada sati izucavanja bilo cega jer to podrazumijeva usku specijalizaciju.

U sustini ja smatram da se studij mora sastojati od izucavanja algoritama i struktura, to je super vjezba za mozak i daje odlicnu sirinu razmisljanja, ali bez pretjerivanja. Isto tako smatram da svaki studij mora pokrivati i neke stvari poput assemblera, zivota bez GC-a, rada sa pointerima etc., sto nazalost nije slucaj svugdje (i mnogi bjeze od toga isto govoreci da im nikad nece trebati).





[ pexxi92 @ 06.04.2014. 21:20 ] @
Glupo je sad pricati sta je kome kad trebalo i na osnovu toga "prepravljati" program studija. Na kraju krajeva ako neko misli da mu nesto ne treba ne mora to da uci i tolko. Ako Andrej mlati pare u njujorku bez algoritama blago njemu, nemora nikad u zivotu da ih nauci.

Nista care napravi od tih para privatni univerzitet za cs, nemoj da stavljas algoritme kao predmet i imaces bolje strucnjake za manje para (jer neces morati da placas profesora za razne algoritamske kurseve). I tolko.
[ pexxi92 @ 06.04.2014. 21:25 ] @
Takodje kazes da se bavis signal procesingom i da "znas da programiras".
Pa hajde zasto postoji FFT zasto se fourier transform ne implementira direktno. Dalje filtri, resavanje diferencijalnih jednacina i drugi numericki algoritmi. Zatim ako se bavis computational finance-om tu su takodje razni optimizacioni algoritmi u pitanju. Znaci ja prosto ne vidim kako ce neko time da se bavi ako ne razume osnove. Moze on tu nesto da mrlja ali nikada nece biti dobar inzenjer jer ce primenjivati nesto sto ne razume i onda nikad nece znati uzroke zbog cega nesto dobro ili lose rade i da li to moze bolje i za koliko. I nevezano za velicinu plate takvi inzinjeri su prosta radna snaga.
[ Andrej013 @ 07.04.2014. 03:25 ] @
Citat:
Nedeljko:
Konkretno, meni su trebale Keplerove jednačine za ovozemaljske poslove, koji imaju matematičku formulaciju istog oblika, pa mi je bilo potrebno da za elipsoid i sferu utvrdom da li se seku ili je jedno u drugome ili jedno van drugoga, pa nestandardan zadatak iz Bezijeovih krivih, pa zadaci koji se svode na probleme sa grafovima, pa izmene postojećih algoritama da bi se postiglo nešto drugo itd. Da bi mogao da prepoznaš na koji se od opštih problema nešto svodi, treba da vladao idejama, a to neće ići sa par desetina časova učenja.

Deseti put navodim da su algoritmi koji se uce na casovima algoritama precenjeni. To ne ukljucuje keplerove jednacine, elipsoid i sferu, sisteme jednacina, SVM, Bezijeove krive, Markovljeve modele i sl. To mogu da budu izuzetno zanimljive stvari i svaka tebi cast na tome, ali ako su to algoritmi o kojima ti pricas, onda se slazem, onda sam i ja proveo hiljade sati uceci algoritme, ali je od pocetka valjda jasno da to nije ono o cemu ja pricam.

Citat:
Nedeljko:
Na kraju, na osnovu čega tvrdiš da si mogao da radiš u Majkrosoftu?

Na osnovu cekga tvrdim? Pa na osnovu cega moze da se tvrdi nego na osnovu intervjua i standardnog procesa zaposljavanja?! Ne poznajem nikoga na visokoj poziciji ako si na to mislio. Inace, MS uopste nije neka narocito selektivna kompanija u koju je nemoguce upasti ako imas odgovarajucu diplomu us univerziteta, ali su definitivno birokratija koja propituje birokratska pitanja na intervjuima... oni su na svim kampusima i konstantno zaposljavaju. znam par studenata iz "razreda" koji su tamo zavrsili.


Citat:
pexxi92: Glupo je sad pricati sta je kome kad trebalo i na osnovu toga "prepravljati" program studija.

Pa da, glupo je praviti program na osnovu potreba trzista, program terba iskljucivo bazirati na subjektivnom misljenju starca koji je pre 40 godina ucio algoritme. lol


Citat:
pexxi92: Takodje kazes da se bavis signal procesingom i da "znas da programiras".
Pa hajde zasto postoji FFT zasto se fourier transform ne implementira direktno. Dalje filtri, resavanje diferencijalnih jednacina i drugi numericki algoritmi. Zatim ako se bavis computational finance-om tu su takodje razni optimizacioni algoritmi u pitanju. Znaci ja prosto ne vidim kako ce neko time da se bavi ako ne razume osnove. Moze on tu nesto da mrlja ali nikada nece biti dobar inzenjer jer ce primenjivati nesto sto ne razume i onda nikad nece znati uzroke zbog cega nesto dobro ili lose rade i da li to moze bolje i za koliko.

Vidis ovo sto pitas je potpuno smisleno. Dakle, kada neko kaze da je zavrsio signal processing, prvo sto se podrazumeva je da zna furijeovu transformaciju, prednosti i mane FFTa, konvoluciju, modelovanje filtera, Z transformaciju, nikvista i slicne osnovne stvari i to ima smisla propitivati i na tome insistirati. Nema signal processing inzenjera koji ne koristi to u svakodnevnom zivotu.
Ali ako ti dodje lik koji tvrdi da je radio signal processing i ti ga sada pitas neki detalj vezan za radonovu transformaciju ili wavelet transformaciju, pa to nema nikakvog smisla jer je to nesto sto vecina inzenjera ne koristi i bi bilo glupo kada bi standardna pitanja na kojima svi insistiraju bila vezana za pomenute. Podjednako je glupo ako ne i gluplje terati softverskog inzenjera da pamti 25 vrsti i podvrsti sortiranja brojeva(gluplje zato sto nema ozbiljnog programskog jezika u kome to sve nije vec implementirano do poslednjeg detalja).
A to o cemu ti pises su me pitali jedan jedini put na intervjuu(Black Rock) iako sam se prijavljivao na 90% pozicija ztipa data analyst sa znanjem machine learninga, signal processinga, numerike i sl. I to je bas problem o kome pricam-postojanje neefikasnog standarda da osoba koja ne zna odredjenu varijaciju quick sorta nepozaljna za radno mesto na kome nikada, ali nikada nece koristiti quick sort ili bilo sta slicno. Vreme koje sam proveo uceci tu vrstu algoritama je za mene izgubljeno, ali ne samo za mene, vec za hiljade drugih studenata(kamo srece da gresim, ali iz razgovora sa nepristrasnim seniorima i vrhunskim profesionalcima sam zakljucio da ne gresim, a i iz razgovora sa vama ovde na forumu). Znaci to je ekstrem, to je polje na kome se insistira, iako se ne koristi a postoje oblasti koje se koriste a na kojima se ne pridaje ni priblizno paznje... birokratija. Na kraju dobijas masu klinaca koji izlaze sa faxeva neupotrebljivi ali zato znaju da sortiraju brojeve u snu.
Citat:
pexxi92:
I nevezano za velicinu plate takvi inzinjeri su prosta radna snaga.
...
Ako Andrej mlati pare u njujorku bez algoritama blago njemu, nemora nikad u zivotu da ih nauci.

Hahaha, ajde prvo ti meno objasni zasto si toliko ostrascen i zasto se vredjas dok pricas o stvarima koje ne bi trebalo da izazivaju emocionalnu reakciju?
Drugo, ti i Nedeljko ste pomenuli visinu plate kao kriterijum koji odredjuje korisnost necega, tako da, nemoj biti licemeran.
Sve mi se vise cini da si neki klinac 92. godiste koji prosipa mudrost pokupljenu sa foruma i blogova.


[Ovu poruku je menjao Andrej013 dana 07.04.2014. u 04:50 GMT+1]
[ bojan_bozovic @ 07.04.2014. 04:56 ] @
Univerzitetski programi se ne prave po potrebama tržišta, već po potrebama samog univerziteta, tj. tako da se omogući što lakše napredovanje na postdiplomske studije i naučni rad. To je jasno svakom ko je na fakultetu bio, jer se svuda ne koriste isti udžbenici, niti su predavači istog kalibra na istim katedrama.
[ Burgos @ 07.04.2014. 08:34 ] @
Pusti pexxija, momak prvo mora da nauči da piše, pa ga tek onda treba shvatati ozbiljno (kad već napada ljude po forumu) :).
[ Ivan Dimkovic @ 07.04.2014. 09:41 ] @
Citat:
Andrej013
Ali ako ti dodje lik koji tvrdi da je radio signal processing i ti ga sada pitas neki detalj vezan za radonovu transformaciju ili wavelet transformaciju, pa to nema nikakvog smisla jer je to nesto sto vecina inzenjera ne koristi i bi bilo glupo kada bi standardna pitanja na kojima svi insistiraju bila vezana za pomenute. Podjednako je glupo ako ne i gluplje terati softverskog inzenjera da pamti 25 vrsti i podvrsti sortiranja brojeva(gluplje zato sto nema ozbiljnog programskog jezika u kome to sve nije vec implementirano do poslednjeg detalja).


Ali ako ne poznajes detalje vezane za transformacije, recimo, kako ces znati koju da primenis za neki konkretan problem?

Znaci, konkretan posao, recimo, nije da samo implementiras neki tudj standard, algoritam ili sta god, vec da na osnovu problema dizajniras resenje koje ce nesto konkretno da uradi.

Recimo, da li ces ili neces pomnoziti ulazni signal sa nekom "window" funkcijom, kolika ce biti optimalna duzina podataka, koju ces konkretno transformaciju primeniti (FFT, DCT, neki wavelet u kom slucaju moras da izaberes i koji?), da li ces koristiti transformaciju na kompleksnim brojevima ili su realni dovoljni, ako racunas posle gresku kako ces je tacno izracunati (MSE? PSNR?) itd.. itd...

Da bi to odlucio, moras ipak imati znanje o tim algoritmima.

Neko moze da kaze "OK, vecina poslova ne ukljucuju dizajn vec samo implementaciju", ali fakultet skoluje ljude koji mogu da rade i dizajn algoritama. Mozda je takvih 1%, 2% ili 5% - ali su neophodni trzistu.

Sto se pitanja za intervju tice, poslodavac insistira na tezim pitanjima ukljucujuci i algoritme zato sto mozda to bude potrebno na poslu. Ako mogu da biram izmedju dvojice sw. inzenjera ja cu uvek izabrati pre onoga koji zna i da dizajnira konkretno resenje za problem zato sto to mozda bude potrebno a sa onim ko to ne zna to necu moci da uradim.
[ Burgos @ 07.04.2014. 10:18 ] @
Moram da se ispravim i dopunim, sada kada su se strasti malo smirile. Moje mišljenje je da sortiranja i sl, ne treba bubati, dakle, ne treba se spremati za intervju tako što ćeš u blokče pisati sve implementacije, već je potrebno razumeti i poznavati (kao što se, nadam se, svi slažemo) svaki algoritam. Na kursevima je to često teško, jer upravo tako većina studenata sprema ispite iz ASP-a, i sl. Međutim, na intervjuima si retko prepušten sam sebi. Npr, u poslednjoj seriji intervjua, pre nego što sam dobio svoj budući posao, u svakoj kompaniji je neko od prvih pitanja na delu intevjua sa algoritmima bio obilazak grafa, ili sortiranje, ili balansiranje stabla (lupam), a ja nijedan od tih nisam znao kao pesmicu, ali sam znao detalje algoritma, pa sam krenuo da pišem, ispravljam, bio sam propitivan, odgovarao sam, i bilo je odlično iskustvo.

Kao neko ko je počeo da radi vrlo mlad (već na osnovnim studijama) i kao neko ko stalno teži boljem, mogu da kažem da postoji neverovatno mnogo oblasti u sw. inženjerstvu, mnogo više što jedan čovek može da nauči, i niko ne može da zna šta će mu biti potrebno (iako može da bira poslove). Na tebi je da pokušaš da naučiš što više, ali ne možete osuđivati i nazivati "prostim koderom" onoga ko se opredelio za sasvim drugi tok u sw. inženjerstvu. Isto tako mogu i ja da nazivam "koderima" sve ljude koje ne poznaju osnove neke arhitekture, operativnih sistema ili ljude koji ne poznaju osnove rada sa distribuiranim sistemima, ili čak osnove telekomunikacija, i da im se još smejem što uzimaju dobre pare za to (?), dok oni nemaju veze sa tim, a sve ovo nabrojano su fundamentalne stvari.

Andrej je dao sasvim OK procenu šta je potrebno osobi koja pokušava da uđe u industriju, pa će posle svakog jutra imati vremena da radi na sebi, koja god mu se oblast svidela. Takođe, mislim da nije mislio da bi algoritme trebalo izbaciti, već da je za početak sasvim dovoljno razumevanje, a da početnu pažnju treba usmeriti na nešto drugo. Ivan kaže, kako ćeš usavršiti ili prilagoditi neki algoritam (kada ti to zatreba), ako ne poznaješ detalje tog algoritma, a ja pitam: Kako ćeš razviti proizvod do te mere da su ti potrebne optimizacije, ako ne poznaješ osnove softverskog dizajna, ako nisi imao dodira sa bar pet različitih paradigmi razvoja softvera, ako ne poznaješ alate, itd. Znam (ili bar mislim da znam) da Ivan više teži embedded sistemima, gde je to zaista potrebno, verovatno triput mesečno (voleo bih jednog dana da saznam), ali tu dolaze ljudi koji su ceo život opredeljeni za to, a ne ljudi koji pitaju kako da dobiju OK posao narednih godina.

CS kursevi su po meni odlična stvar, jer osnove svih stvari, koje bi pojedinac svakako kasnije morao naučiti, pruža na tacni, pa svako može odnekud da počne (a, svi ćete se složiti, kraj kursa je tek početak).

Dug je post, valjda nisam nešto nalupetao gladan :).
[ Nedeljko @ 07.04.2014. 10:21 ] @
Citat:
bojan_bozovic: Univerzitetski programi se ne prave po potrebama tržišta, već po potrebama samog univerziteta, tj. tako da se omogući što lakše napredovanje na postdiplomske studije i naučni rad. To je jasno svakom ko je na fakultetu bio, jer se svuda ne koriste isti udžbenici, niti su predavači istog kalibra na istim katedrama.

Od meni poznatih fakulteta to važi samo za ETF i to samo za predmete koji treba da obezbede matičnost ETF-a za matematiku i fiziku.

Andrej013,

Daleko od toga da je plata merilo korisnosti nečega, ali ako govorimo o masi, a ne o genijima, onda je u određenoj meri relevantan pokazatelj.

Ako se zaista baviš obradim signala i znaš da programiraš, to ne znači da živiš od softverskog inženjeringa. Izvini, ali lekar koji učestvuje u razvoju medicinskog softvera nije softverski inženjer, već stručnjak iz oblasti u vezi koje se pravi softver.

Hajde da sa tim tabelarnim znanjem algoritama čujem odgovor na sledeće pitanja:

1. Koje varijante quicksort algoritma koristiti za ozbiljne web servere? Znam za poznate programske biblioteke sa neodgovrajućim varijantama z tu namenu.

2. Jednom sam na igrao igru na web-u, gde imaš neku podlogu podeljenu na kvadrate. Na nekim mestima nema podloge, tj. nije pravougaonog oblika. Vodiš jedan 1x1x2 kvadar tako što ga prevrćeš na razne strane. Treba stići od početnog položaja u ciljni, s tim da ne smeš da nagaziš na rupu. Kakvim algoritmom bi naravio rešavač za tu igru?

3. Treba da implementiraš sistem tajmera, ali sistemske ne možeš da koristiš ti ne trebaju tajmeri zasnovani na vremenu, već na nekoj zameni, koja može da bude broj nekih koraka ili ko zna šta drugo. U svakom slučaju, u određenim trenucima (u pogledu te zamene za vreme) treba pozivati određene funkcije sa određenim parametrima. Kako bi to rešio ako tajmera može biti mnogo, a potrebna je visoka preciznost (u pogedu te zamene za vreme, npr. koraci se brzo uvećavaju)?
[ Burgos @ 07.04.2014. 10:28 ] @
Citat:
1. Koje varijante quicksort algoritma koristiti za ozbiljne web servere? Znam za poznate programske biblioteke sa neodgovrajućim varijantama z tu namenu.


Zar mi ovde ne pričamo o osobi koja tek treba da počne da radi u industriji? Kako uopšte da dođeš do optimizacije web servera, ako ne znaš ni da ga konstruišeš, ako ne znaš ni da napraviš softverski proizvod kome je potrebna optimizacija, a koji je skalabilan i stabilan (a to su sve stvari koje treba uraditi pre nego što je potrebno ubrzati stvari)?
[ Nedeljko @ 07.04.2014. 10:40 ] @
Tabelarnim učenjem algoritama se ne stiče osećaj za algoritam. To je kao kada bih ja pročitao par knjiga o fudbalu i hteo da budem profi fudbaler.
[ Nedeljko @ 07.04.2014. 10:42 ] @
Da, Burgos, to treba da zna neko ko počinje da pravi web servere sa akademskim znanjem. Daleko od toga da je to sve što je potrebno da zna, ali treba i ovo. Upravo je u tome razlika između nekoga sa akademskim znanjem i nekoga bez njega. Dakle, nisam pomenuo diplomu, već znanje.
[ Burgos @ 07.04.2014. 10:51 ] @
Tu se slažem sa tobom - za nekoga sa akademskim znanjem, to je neophodno.
[ jablan @ 07.04.2014. 11:15 ] @
Mali offtopic, ko to pravi veb servere? Poznajem baš dosta programera i radio sam u dosta firmi i ne znam nikog ko pravi veb servere. :)
[ Nedeljko @ 07.04.2014. 11:25 ] @
Mislim da jedan moj malo dalji komšija radi u youngculture tako nešto.
[ tdusko @ 07.04.2014. 11:51 ] @
@Nedeljko

Ja mislim da ti ne sagledavas danasnje Softversko inzenjerstvo dovoljno siroko. Ono je danas mnogo puta sire nego sto je samo pre 20 godina bilo. To o cemu ti pricas je specijalizacija i ja iskreno nemam nista protiv specijalizacije, ali se postavlja pitanje zasto onda ne uciti sve specijalizacije koje se mogu naci u danasnjem svetu softverskog inzenjerstva? Jer, pazi ti sad ovo:

Citat:
1. Koje varijante quicksort algoritma koristiti za ozbiljne web servere? Znam za poznate programske biblioteke sa neodgovrajućim varijantama z tu namenu.


Kako izgleda learning kriva nekoga ko je osposobljen za ovo? Pa prvo moras da ga naucis koji su tipovi podataka, pa strukture podataka, pa sta je sortiranje, pa sta je algoritam, pa podelu algoritama na najvisem nivou, pa podvarijante tih algoritama. Pa onda sta je server, pa sta je web server, pa sta je ozbiljan web server. Mora da zna bar nekoliko server side jezika jer kako bi inace znao ono sto si napisao da ne treba da koristi ugradjene funkcije. Pazi, opet kazem, nemam nista protiv, ali ne zaboravi da ova learning kriva u opstem slucaju ne pocinje u osnovnoj skoli ili u matematickoj gimnaziji vec u prvoj godini fakulteta jer obrazovni sistem ne pravi restrikcije ko sa kojih srednjih skola moze sta da upisuje. I isto tako, imaj u vidu koliki procenat tih koji zavrsi ce raditi na pravljenju web servera. Da li stvarno hoces da sve njih specijalizujes za stvari koje mnogima/vecini nece trebati? Cak i ako im zatreba u nekom trenutku karijere kolika je korist od toga sto su ucili pre 10-15-20-25-30-35-40-45 godina, a izmedju nikad nisu koristili?

Zasto ih onda sve ne specijalizovati za sve? Zasto sve ne specijalizovati za pisanje mobilnih HTML+JS+CSS aplikacija? Da li znas recimo od prilike, koliko danas ima razlicitih form faktora sa razlicitim rezolucijama i koliko ima razlicitih browsera sa koliko razlicitih JS engine-a i JIT kompajlera? I da li si ikada imao zadatak da napises takvu jednu aplikaciju koja ce raditi svuda sa istim UX-om? Ok, a sada mi reci zasto je ta specijalizacija recimo manje bitna od ove koje ti spominjes?

A to su samo dve specijalizacije. A ima ih milion.

Dakle, sta hocu da kazem. Ne moze se danas na osnovnim studijama softverskog inzenjerstva insistirati na istoj specijalizaciji kao pre 20 godina kada nije bilo weba, nije bilo clouda, nije bilo embedded-a, nije bilo mobile-a, nije bilo x86 game console-a, nije bilo ARM tableta, nije bilo....
[ pexxi92 @ 07.04.2014. 12:31 ] @
Pa dobro u svakom programskom paketu imas implementirane razne sort algoritme. Ne samo njih i grafovske i search algoritme itd. Pa kad to sve imas sto bi ucio to.
Ako se vodis ovom logikom ti si onda beskoristan inzenjer i onaj ko ti daje veliku platu je budala jer imas svuda vec implementirane fft, sve zive wavelete, filtre, numericke algoritme, machine learning algoritme, pgm algorithme itd. Iskreno ne razumem te tvoje "gazde" kad tebi daje milione da pises kod tipa y = fft(x) tj. da primenis vec postojeci kod kada to isto mogu i klinci 2002 godiste bez tvojih univerzitetski nepotrebnih znanja iz tih oblasti koje se uce jedino zbog teorije zavere 80to godisnjih matematicara koji to jedino znaju da rade u zivotu pa cvrsto drze svoje udobne fotelje.

Takodje ne mislim da je plata merilo necega.

Merilo znanja, objektivnosti i relevantnosti misljenja je nick na forumu.

Tako da zakljucujemo da sam ja klinac 92 godiste koji se nerazume u nista a ti si neko ko zivi u New York-u pa znas sve.
[ Burgos @ 07.04.2014. 12:35 ] @
Grešiš ako misliš da je kod tipa y = fft(x) sve što napiše neko ko ne piše svakodnevno implementaciju FFT-a, a radi u toj oblasti. Razvoj proizvoda je mnogo više od toga.
[ pexxi92 @ 07.04.2014. 12:38 ] @
Sto se tice intervijua u kompanijama svaka kompanija ce pitati pitanja u skladu sa potrebama radnog mesta.

Koliko se secam nekog prethodnog topica Andrej je bio ogorcen sto ga nisu primili u google jer nije znao razliku izmedju quick sort i merge sort (ili neka druga dva trivijalna sort algoritma). I on i dan danas ne kapira poentu tih pitanja vec misli ja sam najpametniji radio sam furijerove transformacija kako to ne radim u google.

Poenta thi pitanja je da li znas da razmisljas i da li imas osecaj o algoritmima ili ne a ne koliko si algoritama napamet nabubao. Tako da sledeci put kad odes u google i kad ti kazu neki sort za koji nisi cuo slobodno kazi "I dont know the details of that particular algorithm". Fina gospoda ce ti objasniti detalje oba algoritma i pitati te da ih uporedis. Posto si kao sto tvrdis iskusan inzinjer i vrlo inteligentan to ces odma znati i biti novi inzenjer googla. Cuo sam da je tamo fino da se radi, ima razni spa centri, playing rooms, kuvar ti sprema sta hoces tako da eto smatraj ovo kao moj poklon karte za raj u jednom pravcu tebi umesto izvinjenja koje ti po tebi dugujem za nepristojno ponasanje po forumu.
[ Nedeljko @ 07.04.2014. 13:02 ] @
Jok vala, nisu to nikakve specijalizacije. Osnove programiranja i algoritama i struktura podataka su zajedničke za sve oblasti. Specijalizacija su na primer geometrijski algoritmi. HTML/CSS/JavaScript isto mogu da rade neki koder i neki razvijalac. Razvijaoca nema smisla angažovati za jednostavnije poslove jer je skuplji od kodera koji takođe može da obavi taj posao, ali to ne znači da nema posla za razvijaoce sa akademskim znanjem, koji nisu dostupni onima koji to znanje nemaju.
[ pexxi92 @ 07.04.2014. 13:02 ] @
Burgos

Mislim da si bezao sa casova ironije u matematickoj gimnaziji. Samo sam hteo da Andreju pokazem kako neko ko je ozbiljan softverski inzenjer radi mnogo vise od std::sort(x) i da to sto postoje sve zive biblioteke ne znaci da njihovo razumevanje nije potrebno.

Sto se tice tvog ranijeg komentara o mom pisanju, ja prosto ne vidim drugi nacin da odgovorim coveku koji uporno, i uprkos svim normalnim i logicnim argumentima tvrdi:

Ja ne znam algoritme i ja imam veliku platu => algoritmi su nepotrebni. Vrlo logicki konzistentan zakljucak. Takodje je pokazao svoje poznavanje statistike prilikom donosenja zakljucka o populaciji na osnovu reprezentativnog uzorka (sebe).

Pa ako je on analyst ja sam paradajz :).
[ Burgos @ 07.04.2014. 13:13 ] @
Dao sam ti ja plus na prošlom odgovoru, jer je mnogo kvalitetniji od onih sa prethodne strane :).

Što kaže Nedeljko, to jesu (naročito razumevanje) elementarne stvari, a moja je greška što sam mislio da se ovde priča o nečemu sasvim drugom.
[ Branimir Maksimovic @ 07.04.2014. 14:05 ] @
Citat:
jablan:
Mali offtopic, ko to pravi veb servere? Poznajem baš dosta programera i radio sam u dosta firmi i ne znam nikog ko pravi veb servere. :)


Eto ja sam sa kolegom napravio i odrzavam in house web server ;)
[ jablan @ 07.04.2014. 14:06 ] @
Citat:
Branimir Maksimovic: Eto ja sam sa kolegom napravio i odrzavam in house web server ;)

I koji si sort algoritam koristio? ;)
[ Branimir Maksimovic @ 07.04.2014. 14:17 ] @
Nema tu sortiranja. Imas request koji parsiras onda na osnovu toga biras
koji ces servis da izvrsis nakon toga saljes response i to je to ;)
[ Odin D. @ 07.04.2014. 15:15 ] @
"Problem" izucavanja i poznavanja algoritama u okviru skolskog programa je problem koji nastaje usled posmatranja stanja kao statickog, dok je ono u sustini prilicno dinamicno.
Informaticka struka se mijenja i razvija, a time i sve u vezi sa njom, ukljucujuci i obrazovanje i skolovanje.

Kako se stvar bude razvijala i sirila nece uskoro biti pitanja "da li je jednom programeru potrebno to i to" jer nece npr. ni biti moguce da taj poznaje to i to, ako je krenuo negdje drugo.

Nekad je jedan ljekar lijecio sve i jedan advokat rjesavao sve; danas svaka bolest ima svog ljekara i svaki problem svog advokata.

Vreme enciklopedista koji su se razumjeli u sve: od umjetnosti, preko alhemije i mehanike do religije je proslo.
Onda je proslo i vreme enciklopedista u nauci koje su se razumjeli u sve grane nauke.
Zatim je proslo i vreme enciklopedista u tehnici koji su se razumjeli u sve grane tehnike.
Onda je proslo i vreme enciklopedista u npr. elektrotehnici, koji su se razumjeli u sve grane elektrotehnike.
Zatim je proslo i vreme enciklopedista u elektronici, koji su se razumjeli u sve grane elektronike itd...

Tako ce biti (a za neke vec i sad jeste tako) i za programere i programersku struku.
Da bi skole mogle da prate i nude nova znanja moraju prvo osloboditi mjesto za njih u planu i programu.
[ Nedeljko @ 07.04.2014. 17:58 ] @
Odin D.

Niam primetio da se išta promenilo u osnovama programiranja od spektruma do danas. Naravno da na naprednijem nivou jeste i da postoje razne nove oblasti, ali su osnovni algoritmi i strukture podataka isti. Štaviše, isti su za sve paradigme.

Isto tako je fizika stigla do Higsovog bozona, ali studenti moraju prvo da savladaju klasičnu Njutnovu teoriju (mehaničku i gravitacionu) jer bez toga ne mogu razumeti ni naprednije teorije.


Da odgovorim na pitanje sa sortiranjem.

Sve varijante quicksort-a imaju kvadratnu vremensku složenost u najgorem slučaju, što znači da je procesor nadrljao sa 100,000 podataka ako nastupi najgori slučaj. Ako postoji potreba za sortiranjem nečega što šalje klijent, onda zlonamerni napadač može pretpostavljajući algoritam sortiranja da napakuje najgori slučaj i izvede DOS napad.

Varijante quicksort-a se razlikuju po načinu biranja pivota. Ako se bira sa početka ili sa kraja, onda su sortirani nizovi nagori slučaj. Međutim, ako se bira pivot iz sredine, opet se može napakovati najgori slučaj (namerno - u cilju napada). Tu slabost imaju sve determinističke varijante quicksort-a, pa ako se opredeli za quicksort algoritam (a ima drugih algoritama bez te slabosti), onda pivot treba određivati nasumično. Onda algorotam takođe ima kvadratnu vremensku složenost u najgorem slučaju, ali on niti nastupa spontano, niti se može veštački napakovati na strani klijenta.

Biblioteke obično biaju pivot iz sredine jer je u slučaju random niza svejedno, a u slučaju sortiranog ili delimično sortiranog niza to optimalan izbor.
[ Nedeljko @ 07.04.2014. 18:28 ] @
Da li iko zna nekoga ko zna da programira bilo šta što je naplativo na tržitu, a da ne zna da napiše program za pronalaženje drugog najvećeg elementa niza korišćenjem samo osnovnih operacija?
[ mmix @ 07.04.2014. 18:40 ] @
Ja znam gomilu ljudi koji odgovaraju tvom opisu.
[ Odin D. @ 07.04.2014. 18:41 ] @
Citat:
Nedeljko: Odin D.

Niam primetio da se išta promenilo u osnovama programiranja od spektruma do danas.

Promjenilo se jedino to sto se danas ne moze zivjeti od osnova programiranja kao sto se moglo u vreme spektruma; sto nisi ni pocemu poseban ako znas neke osnove programiranja kao sto si bio poseban u vreme spektruma; sto danas nisi uopste poseban i izuzetak ako imas kompjuter kao sto si bio po tome poseban u vreme spektruma itd.

Prije 150 godina covjek je bio poseban ako je znao citati i pisati.
Od tada pa do danas - nista se posebno nije promjenilo u osnovama pisma ili gramatike.
Pa ipak, biti pismen danas ne znaci nista posebno, i u tom smislu to je velika promjena iako nema same promjene u pismu i gramatici.
Takodje, u vezi sa pisanjem, i kaligrafija je izbacena iz skola posto uslijed vaznijih i prakticnijih stvari nema vise vremena i prostora za dubiozno studiranje takvih stvari u skolama.

Otprilike, nalazim da ce u skorijoj buducnosti proucavanje algoritama u vezi sa nastavom programiranja biti u slicnoj vezi kao sto je danas kaligrafija sa nastavom opismenjavanja.
Bice potrebno nekom za nesta, ali nece biti masovno u skolskim programima.
[ Ivan Dimkovic @ 07.04.2014. 19:06 ] @
@Odin D.,

Stvari kao sto su sortiranja, pretrage, prolazi kroz grafove i sl. su stvari koje su i dan danas osnova rada i sa najnovijim programskim jezicima.

Potpuno je nebitno da li pises program u COBOL-u ili u nekoj najnovijoj inkarnaciji pimp-ovanog skript jezika, kada imas zadatak da nadjes resenje za konkretan problem ima smisla da znas osnove.

Ako ti je posao takav da nemas nikakve potrebe da znas detaljno osnove informatike, onda ti fakultet uopste nije ni potreban pa je bolje da se uopste ne gubi vreme sa fakultetom vec da se za tih 4 godine nabije praksa.

Nema apsolutno nista lose u tim poslovima, stavise verovatno ogroman % poslova koji se zovu "programiranje" ne trazi nista vise od znanja koje se moze pokupiti u osnovnoj skoli + prakse u konkretnom razvojnom okruzenju.

Medjutim poslovi koji spadaju u pravo softversko inzenjerstvo zahtevaju sira znanja, koja se izucavaju na fakultetima (ili kuci, ako neko tako zeli) i nisu uopste suvisna iz prostog razloga sto za vreme studiranja buduci sw. inzenjeri ne znaju da li ce se baviti isklucivo obradom signala, bazama podataka, bioinformatikom, vestackom inteligencijom, multimedijom ili necim 10-tim, pa da mogu da se fokusiraju samo na 5-10% gradiva koje njima treba.

Takodje i sami poslodavci znaju da je moguce da u toku radnog veka jednog sw. inzenjera bude potrebno da se radi vise stvari koje zahtevaju razlicite koncepte iz osnova informatike ili sw. inzenjerstva.

Fakat da poslodavci stavljaju akcenat na resavanju razlicitih problema u toku izbora kandidata (i ti problemi jako cesto ukljucuju vise razlicitih stvari koje spadaju u osnove informatike/sw. inzenjerstva) samo pokazuje da je to relevantno. Ne bi poslodavci bacali svoje resurse na testiranju ljudi koliko poznaju osnove sw. inzenjerstva / informatike da to nema smisla.

Citat:

Promjenilo se jedino to sto se danas ne moze zivjeti od osnova programiranja kao sto se moglo u vreme spektruma; sto nisi ni pocemu poseban ako znas neke osnove programiranja kao sto si bio poseban u vreme spektruma; sto danas nisi uopste poseban i izuzetak ako imas kompjuter kao sto si bio po tome poseban u vreme spektruma itd.


Ne moze se ziveti od osnova programiranja danas kao sto se nije moglo ziveti ni pre 20 godina.

Ali da ih moras znati ako se bavis softverskim inzenjeringom, to je definitivno slucaj.

Ako radis u, sta znam, Siemensu i radis na softveru za novu MRI masinu trebace ti da znas da li je pametnije da koristis linearni ili neki drugi filter za skaliranje slike u zavisnosti od toga sta hoces sa tom slikom da radis. To ljudi uce na obradi signala (ili kuci, nebitno, bitno je da to moraju da nauce).

Ili ako treba da pretrazis neki dataset od par TB, koji je algoritam optimalniji za taj problem, u pogledu brzine, koriscenja memorije itd. To ljudi uce na studijama informatike (ili kuci, nebitno, bitno je da to moraju da nauce).

Ili ako treba da implementiras neki algoritam na novoj arhitekturi, recimo kao sto je GPU u poslednjih par godina, ako ne znas osnove multiprocesorskog programiranja kao i specificnosti arhitekture u vezi sa tim osnovnim konceptima (recimo koliko kostaju atomicke operacije) sanse da za*eres u optimizaciji su ogromne i umesto 100x ubrzanja mozda dobijes 5x usporenje u odnosu na CPU kod (nista necuveno kada se radi o CUDA-i, npr.).

Potpuno je nebitno da li ces za sve te stvari imati neku toolbox biblioteku koja implementira sortove, pretrage, resampling itd... ako nemas pojma koji od tih alata iz toolboxa da koristis, napravices po*ranu implementaciju koja ce ili da se vucara ili mozda nece zadovoljavati konkretne zahteve koji mogu biti max. koriscenje memorije, brzinu itd... ako radis na necemu ozbiljnom kao sto je gore pomenuta masina, taj tvoj softver ce raditi sa pravim ljudima i uticati na odluke koje mogu znaciti zivot ili smrt.

Kada radis na necemu novom, nemas wizard koji ce ti uciniti kod brzim ili implementaciju manje zahtevnom u pogledu memorije. To TI moras da uradis i da bi to uradio moras imati solidno znanje koje spada u osnove racunarstva ili obrade signala (sta vec radis).

To uopste nisu naivne stvari, i sasvim je logicno da poslodavci koji rade na njima traze ljude koji znaju ne samo da programiraju vec i da odaberu optimalan pristup pre implementacije kako bi zadovoljili to sto se trazi od njih. Zato pitaju svasta na razgovoru za posao. Mozda ti na konkretnom poslu nikad neces morati da lupas glavu koji je sort bolji ali, cuj, to poslodavac ne zna danas i ako treba da zaposli sw. inzenjera nije lose zaposliti nekog ko zna vise umesto manje.

Btw, ako neko kaze da sam odabrao los primer - ako pricamo o zapadu, masa poslova jesu u "ozbiljnim" industrijama sa "ozbiljnim" stvarima od medicine preko telekomunikacija pa sve do automatike i automobila ili trgovine na berzi.

[Ovu poruku je menjao Ivan Dimkovic dana 07.04.2014. u 20:30 GMT+1]
[ Odin D. @ 07.04.2014. 20:18 ] @
@Ivan Dimkovic

Sve to sto si rekao stoji, ali danas.
Medjutim, moj komentar se odnosio na predvidjanja i trendove u nadolazecem vremenu.

Ako neki buduci programer hoce da detaljno izucava svu mogucu programersku teoriju u sirinu i u dubinu, onda ce njegove prakticne i ovozemaljske vjestine prilicno trpiti.
Tu onda po zavrsetku tog skolovanja (formalnog ili licnog "kod kuce") dolazi u pitanje konkretna statisticka situacija na trzistu rada: kolika je potraznja za onima koji po zavrsetku skolovanja vec vladaju prakticnim vjestinama i mogu vec sutra i bez dubljeg teorijskog razumjevanja postati produktivni slazuci neke "programerske lego kockice", a kolika za onima koji sami treba da prave te "lego kockice".

Moj je utisak da korisnika gotovih programerskih algoritama ima daleko vise nego kreatora i implementatora i da ce ce se to vjerovatno odraziti i na buduce nastavne planove i programe tako sto ce se ta tematika iz opstih studija polako seliti ka specijalistickim studijama.

Takodje, imam utisak da "in house" rjesenja i osoblje za specijalizovane poslove postaju sve manje isplativi i efikasni, i to ne samo u informatickoj industriji nego inace.
Prije 10-tak godina bilo je nezamislivo da elektro-inzinjer ne zna da napravi pcb prototip ili da lemi kako treba. Danas, ko to sam radi (izuzev u edukativne svrhe) izaziva cudjenje, jer naprosto baca i vreme i pare. Naravno, potrebno je znati sta sve ima i sta tebi od svega toga najbolje vrsi posao da bi znao sta da narucis, ali daleko od toga da ti je potrebno da sam znas da pravis to sto ti treba.

Tako npr., meni se cini da je u timu od 5 programera bolje imati jednog eksperta za algoritme, jednog eksperta za grafiku, jednog eskperta za DSP, jednog eksperta za paralelno programiranje i jednog eksperta za platformu na kojoj se radi, nego 5 programera koji se prosjecno razumiju u svaku tu oblast, ali niko od njih nizasta nije ekspert.

Naravno, najbolje je biti ekspert u svakoj oblasti programiranja, ali najveci broj obicnih smrtnika tesko da to moze postati u vise od jedne oblasti.
[ Nedeljko @ 07.04.2014. 20:44 ] @
Ne postoji stručnjak (ovde se nameće strana reč "ekspert") za osnove programiranja, već je to zajednički deo svih obasti programiranja, kao što su prirodni, celi i realni brojevi zajednički deo svih oblasti matematike i kao što su Njutnove teorije nezaobilazan deo izučavanja fizike. Da bi neko bio dobar u grafici, mora znati osnove programiranja, baš kao i onaj ko je dobar u paralelnom programiranju, a rekao bih i onaj ko je dobar poznavalac neke platforme. Druga je stvar što taj što se bavi grafikom ne mora da zna DSP, baš kao što ni taj ko radi DSP ne mora da zna OpenGL. Pritom je DSP zasebna oblast tehnike, koju ne bih trpao u softversko inženjerstvo.

A što se slaganja lego kockica tiče...

...još od 60-tih se pričaju priče o skorom kraju razvoja softvera. Evo, samo još da se odradi ovo i najveći broj potreba za softverom će biti podmiren, tj. biće podmirivanja nekih specifičnih potreba naručilaca, ali će sve što je opšte biti odrađeno. Onda se to odradilo i došle su 70-te i ista pesma. Onda se odradio i taj cilj 70-tih, ali su došle 80-te sa istom pričom. Onda je 90-tih bio specifičan bum, pa se opet pričala ista priča, koju je XXI vek demantovao.

Ako se to o čemu ti pričaš (a što ne odgovara sasvim prethodnom pasusu) ostvari, onda će ta jeftina radna snaga postati nepotrebna, jer će korisnik da odabere koje komponente hoće, a program će to da sklopi. No, nešto mi se ne čini da će to vreme doći.

Po mom iskustvu je danas potreba za aloritmima mnogo veća nego 80-tih, jer tada nije bilo hardvera koji može da tera mlatimudiju, 3D scene u realnom vremenu, nije bilo interneta, kompresije zvuka i videa, potrebe zakriptografijom su bil mnogo manje, mnoge oblasti veštačke inteligencije su postojale samo na papiru itd. Biće da je tržišna potražnja za stručnjacima, a ne priučenim koderima, porasla i da će razvojem nastaviti da raste.
[ Odin D. @ 07.04.2014. 21:43 ] @
Citat:
Nedeljko: ... (ovde se nameće strana reč "ekspert") ...

Da... Dugo je proslo kako niko nije pokusao da te ubije, zatre ti vjekovna ognjista, pokrsti, nesto nametne, nesto otme, i sl.
I vreme je bilo da se priberes i postanes svjestan velikih opasnosti koje vrebaju sa svih strana.

Nego, da li su ovo "domace" rijeci:
Citat:
Nedeljko: ... programiranja, ... grafici ... paralelnom ... platforme... tehnike... softversko inženjerstvo... softvera...specifičan ... bum ... demantovao... pasusu... komponente... program... aloritmima ... hardvera ... kompresije ... videa ...kriptografijom ... koderima

???


Citat:
Nedeljko: Ne postoji stručnjak za osnove programiranja,

Niko i ne prica o strucnjacima za osnove programiranja.
Prica se o onome sto danas spada u osvnove programiranja i nagadja o onome sto ce mozda spadati ili ispadati u buducnosti.

Algoritmi ce uvijek biti potrebni: i oni osnovni kao i razni napredni i razni novi, tu nije nista sporno, isto kao sto je i dan danas potreba za elektricnim naelektrisanjem stalno u porastu.
Medjutim, davno nekad, u osnovne stvari bez kojih se nije moglo zamisliti bavljenje elektrotehnikom spadalo je i znanje o metodama generisanja elektriciteta, kao i detaljno poznavanje toga koju vrstu "naelektrisanja" dobijes kad protrljas plasticni cesalj o macku, a koju kad protrljas staklo o svilu.
Ali danas, vjerujem da cak ni oni koji projektuju hidrocentrale, nuklearne centrale, napajanja za svemirske rakete i sl. to ne znaju, jednako kao sto ne znaju da konstruisu Van der Graafov generator, sto je bilo nezamislivo nekad.
Medjutim, to su i danas, kao i onda obicne najbazicnije osnove.
Ali tok razvoja tehnike je ucinio da nije potrebno biti strucnjak pa cak ni povrsni poznavalac tih nekih osnova da bi mogao biti strucnjak za nuklearne elektrane ili raketnu elektroniku.
[ Nedeljko @ 07.04.2014. 22:26 ] @
To što ne postoje domaće reči za neke pojmove ne znači da treba trpati "vajerles", "rekomendiranje", "likovanje", "disambiguisanje" i ostale nepostojeće i nepotrebne reči u srpski jezik.

U poslednjih pola veka su se osnove programiranja menjale jedino u pogledu nadogradnje. Ništa nije izbačeno, samo je staro izlagano na elegantniji način i dodavano je novo. Obzirom da se iz osnova programiranja ništa nije izbacilo u poslednjih pola veka, ne postoji nijedan osnov da se nastavni programi menjaju u tom pogledu. Danas su ti kursevi neophodna osnova za praćenje sledećih kurseva. Ako već ne znaš kako će nešto izgledati u budućnosti, ti radi prema onome kako je u sadašnjosti.
[ Odin D. @ 07.04.2014. 22:49 ] @
Citat:
Nedeljko: To što ne postoje domaće reči za neke pojmove ne znači da treba trpati "vajerles", "rekomendiranje", "likovanje", "disambiguisanje" i ostale nepostojeće i nepotrebne reči u srpski jezik.


Postoje domace rijeci za sve pojmove koje sam izdvojio iz tvoje poruke. Zasto ih ne upotrebljavas?

Nego, kakve veze ima rijec 'ekspert' sa bilo kojom od ovih gore koje si pobrojao?
[ plus_minus @ 07.04.2014. 23:29 ] @
.. sve to nema veze ni sa javom a ni sa C ...odakle koja reč dolazi.
[ madamov @ 08.04.2014. 07:48 ] @
Citat:
Ili ako treba da pretrazis neki dataset od par TB, koji je algoritam optimalniji za taj problem, u pogledu brzine, koriscenja memorije itd. To ljudi uce na studijama informatike (ili kuci, nebitno, bitno je da to moraju da nauce).


Ne može nešto, pa ni algoritam, da bude optimalnije od drugog, ili je optimalno ili nije optimalno.
[ Branimir Maksimovic @ 08.04.2014. 09:27 ] @
Imas primer recimo da je insertion sort optimalniji od quick sorta za nizove manje od
16 elemenata, dok je manje optimalan za vece nizove.
Nikad samo jedan algoritam nije optimalan za odredjeni problem.
Uvek je od vise optimalnih algoritama jedna optimalniji od drugog u jednom slucaju
a manje optimalan u drugom slucaju.

[ tdusko @ 08.04.2014. 10:14 ] @
Jasno je(bar meni) sta ti hoces da kazes, ali ovo sto je @madamov napisao se odnosi na terminologiju, preciznost izrazavanja. Ne postoji optimalniji, najoptimalniji itd. Postoji samo optimalan. Moze neko resenje/algoritam/... u datom kontekstu da bude brze, sporije, slozenije, manje slozenije, efikasnije, manje efikasnije... od nekog drugog, ali samo je jedno optimalno. Znaci, insertion sort je optimalan algoritam za sortiranje nizova koji imaju manje od 16 elemenata, a quick sort je optimalan algoritam za nizove koji imaju vise od 16 elemenata.

Inace da se ogradim unapred, nemam pojma da li su izrecene tvrdnje tacne posto u dosadanjih 7 godina koliko radim kao dev, na poslu nisam napisao niti jednu jedinu liniju koja bi se ticala pomenutih algoritama ili bilo kojih drugih. Na fakultetu jesam ucio, ali sam sve pozaboravljao. Jedina situacija kad imam dodira sa tim jeste kad uzmem Laslovu zbirku za C da malo vezbam :). I kad smo vec kod toga, moram da priznam da meni licno resavanje tih zadataka koji se svode na primenu raznih algoritama je uvek bilo mnogo lakse od recimo raznih problematika vezanih sa programiranje user interfejsa sa kojima se svakodnevno srecem.
[ Branimir Maksimovic @ 08.04.2014. 10:27 ] @
Ono sto mislis da je optimalno moze biti da nije da ima optimalnije ;)
Eto u primeru ova dva sorta, sve u zavisnosti od data strukture ima i drugih
algoritama koji su optimalniji. Recimo tesko da ce neko sortirati
listu sa quick sortom, pre ce se odluciti za merge sort ;)
Problem je u tome sto je tesko zapravo trvditi da je nesto ultimativno
optimalno.
[ tdusko @ 08.04.2014. 10:42 ] @
Ne, ono sto mislis da je optimalno moze biti da nije vec da postoji nesto drugo sto je optimalno. Ne postoji optimalnije jer bi to bio komparativ od necega sto je vec najbolje moguce u datom kontekstu. Pravopisno se ovakve pogreske mogu tolerisati jer se moze koristiti u stilske svrhe naglasavanja ili preuvelicavanja odredjene pojave/fenomena itd, ali kada se prica u kontekstu resavanja odredjenog inzenjerskog problema onda nije bas pozeljno jer cesto ukazuje na nerazumevanje pojma optimalnog.
[ djoka_l @ 08.04.2014. 10:43 ] @
Ja da dosolim: http://www.srpskijezickiatelje.com/nedoumice:optimalan
Optimalno već znači najbolje, pa se ne može dalje porediti (dakle ne postoji "optimalnije" i "najoptimalnije").

Elem, što se tiče poznavanja algoritama (koje sam ja pokrenuo), uopšte ne mislim da je potrebno napamet znati sve moguće algoritme. Svi smo u toku školovanja morali bar jednom da napišemo buble sort, a znali smo da je to jedan od najgorih mogućih algoritama za sortiranje.

Ono što sam ja mislio, kada sam rekao da je bitno poznavanje algoritama, mislio sam više na tehnike. Danas na netu možete naći sve moguće algoritme implementirane u svim mogućim jezicima, ali je bitno da znate šta tražite.

Recimo, meni ne pada na pamet da pišem sopstvenu rutinu za Hafmanovo kodiranje (a to mi je bila jedna vežba na faksu), ali je bitno da poznajem osnove kompresije i da znam kako algoritam radi. Pa onda, kada u mom projektu upotrebim gotovu zlib biblioteku, ili MD5, ili Xlib, ili Windows implementaciju socket biblioteke, pa program počne da brljavi, bez poznavanja načina rešavanja tih problema, nemate polaznu osnovu gde da tražite grešku (naveo sam 4 biblioteke sa kojima sam imao problema u radu zbog grešaka u samim bibliotekama, a koje su mi prvo pale na pamet).

Pogledajte malo po ovom forumu: programeri nemaju pojma šta je to konačni automat (a žele da parsiraju korisnički ulaz), nikad nisu čuli za shunting-yard, a žele da parsiraju izraze, nemaju pojma šta znači da double ima 15-17 značajnih cifara, niti da floating-point aritmetika nije "tačna".

Kad smo kod najprostijih algoritama, koliko sam puta na ovom forumu morao samo da objasnim način obilaska binarnog stabla i to da postoji tri načina (preorder, inorder i postorder).

Sigurno, neko može da postane programer, a da ne zna sve to, ali takvog ne bih voleo u svom timu...
[ Nedeljko @ 08.04.2014. 10:49 ] @
Ne postoje domaće reči za sve navedene pojmove. Postoje za neke (kompresija = sažimanje), ali ako si mislio na razne mekotvorine, to postoji u srpskom jeziku isto koliko i "disambiguisanje". Za algoritam definitivno ne postoji druga reč ni u srpskom, ni u engleskom jeziku. Reči "postupak" i "recept" nemaju isto značenje kao "algoritam".

No, bitniji je drugi deo poruke koji je u vezi sa temom.
[ Nedeljko @ 08.04.2014. 10:50 ] @
Citat:
madamov: Ne može nešto, pa ni algoritam, da bude optimalnije od drugog, ili je optimalno ili nije optimalno.

Tačno! Postoje efikasniji i manje efikasni algoritmi, a ne optimalniji i manje optimalni. Postoje oni koji su bliži ili dlji od optimalnog.
[ Nedeljko @ 08.04.2014. 10:59 ] @
Citat:
Branimir Maksimovic: Ono sto mislis da je optimalno moze biti da nije da ima optimalnije ;)
Eto u primeru ova dva sorta, sve u zavisnosti od data strukture ima i drugih
algoritama koji su optimalniji. Recimo tesko da ce neko sortirati
listu sa quick sortom, pre ce se odluciti za merge sort ;)
Problem je u tome sto je tesko zapravo trvditi da je nesto ultimativno
optimalno.

Vidi, možda ja ne znam koji je dan u nedelji danas, ali to moje neznanje ne menja značenje reči koje označavaju dane u nedelji.
[ Branimir Maksimovic @ 08.04.2014. 11:19 ] @
Ene de. Vise ili manje optimizovano. Ne mozes reci najoptimizovanije.... zvuci glupo...
[ Nedeljko @ 08.04.2014. 11:53 ] @
"Optimizovano" i "optimalno" nije isto. Optimalno je najbolje, a optimizovano nešto što je prošlo kroz neki postupak poboljšavanja - optimizaciju.
[ Branimir Maksimovic @ 08.04.2014. 12:04 ] @
Dobro onda : vise ili manje blize optimalnog, jel moze tako?
[ Nedeljko @ 08.04.2014. 12:20 ] @
Bliže ili dalje optimalnom. No, kaže se optimalno za najbolje, odnosno bolje ili lošije za ostalo.
[ Nedeljko @ 09.04.2014. 09:40 ] @
I niko od onih sa tabelarnim znanjem algoritama da da ideju za preostala dva zaatka.
[ Nedeljko @ 09.04.2014. 23:24 ] @
Citat:
mmix: Ja znam gomilu ljudi koji odgovaraju tvom opisu.

Mogu li da dobijem malo više detalja?
[ mmix @ 10.04.2014. 10:41 ] @
U kom smislu? Pitao si da li iko zna, ja znam. Ne mogu to da ti dokazem sem da te upoznam sa njima. Oni ce svi problem "najveci drugi" resiti sa a = a.sort(); n = a[1];. Apsolutno niko od nih nece primenjivati nista drugo, cak i ako znaju, sto sam siguran da ne znaju (narocito ovi dizajneri prebezi u webdevu). Sta vise, u situacijama kad volumetrika ne predstavlja problem i mnogo iskusniji/obrazovaniji programeri ce iskoristiti isti pristup. ja kao menadzer, osim ako nisu retki istinski sampioni i sipaju takav kod iz rukava bez razmisljanja sa 100% preciznoscu, takodje ocekujem od njih da ne gube vreme sa tim glupostima vadeci algoritme iz malog mozga, implementirajuci ih i onda testirajuci da rade adekvatno kao i milion puta prezvakani sort iz liba. I sve to da bi se neki kod koji nije kritican izvrsavao za 0.005s umesto 0.1s? To se zove penny-wise-pound-foolish.

Ja stvarno ne ulazim u specificne programerske nise kao sto je izrada codeca, embedded, itd., gde je izvlacenje svakog promila CPUa neophodno, kao ni u te neke subjektivne potrebe programera za licnom potragom za savrsenstvom. Ali za biznis, programiranje je samo put ka cilju, cilj je prevashodno profit, a onda superiorno tehnolosko resenje. To je jedan aspekt nase branse sa kojim vecina programera ima probleme,. Situacija danas je da su cak i licne masine dovoljno sposobne za veliki workload, a kamoli serveri, i da je veoma cesto bottleneck lakse, brze i jeftinije resiti bacanjem dodatnog hardvera u vatru nego angazovanjem veoma kompetentne ekipe koja bi taj problem bistrila i osmislila najbolje resenje, resenje koje ces njima da platis $20k+ kroz fees, plate ili benefite umesto $3k za hardver i $2k za lifetime electricity bill. Dizajn algoritama, ako se tako moze nazvati, se desava na visem nivou kroz izradu matematickog modela koji ormira osnovu poslovnog procesa, i taj deo razvoja ne rade programeri. Rade poslovne jedinice za koje se projekat radi i onda se adaptira tehnoloski preko ljudi kao sto sam ja. Od progamera se samo ocekuje ad implementira sazvakano.

Ja znam da to vama zvuci kao velika jeres i nipodastavanje branse, ali tako je. 99.9% kompanija nisu MS, Google i Facebook i nemaju potrebe da angazuju R&D timove doktora kompjuterskih, matematickih i srodnih nauka koji ce im osmisljavati nove algoritme koji ce izvlaciti poslednji bit uz sto manji vat iz nekog procesa. Njihov mesecni broj operacija se meri u hiljadama, mozda desetinama hiljada, ne milionima dnevno. kako se spustas od vrha na dole, veoma brzo dolazis do nove granice da ti dobri algoritmicari generalno veoma retko trebaju. POnajvise zahvaljujuci veoma razvijenim i lako dostupnim bibliotekama.
[ jablan @ 10.04.2014. 11:25 ] @
Citat:
mmix: a = a.sort(); n = a[1];

To je drugi najmanji, ne drugi najveći hehe...

BTW, potpisujem sve što si rekao. Mi u firmi radimo prilično ozbiljne stvari, ali su oni zaposlili jednog doktora nauka koji radi te kritične stvari (koje se tiču statistike i analize velikih količina podataka) i par njegovih henčmena. Tu je Hadoop, tu je Java i Apache i Google biblioteke, niko nije blesav da mikrooptimizuje nešto što već postoji, ako se naleti na neki bug, prijavi se ili se ispravi i komituje (pošto je mislim sve open-source).
[ Burgos @ 10.04.2014. 11:26 ] @
Citat:
Situacija danas je da su cak i licne masine dovoljno sposobne za veliki workload, a kamoli serveri, i da je veoma cesto bottleneck lakse, brze i jeftinije resiti bacanjem dodatnog hardvera u vatru nego angazovanjem veoma kompetentne ekipe koja bi taj problem bistrila i osmislila najbolje resenje, resenje koje ces njima da platis $20k+ kroz fees, plate ili benefite umesto $3k za hardver i $2k za lifetime electricity bill


Situacija danas je svakako gora nego pre dvadeset godina kada si mogao da pošalješ programere na duži godišnji i da posle godišnjeg imaš duplo bržu aplikaciju :-).
[ Ivan Dimkovic @ 10.04.2014. 11:57 ] @
@mmix,

Nije nikakvo nipodastavanje branse. Ja rekoh da, IMHO, za ogromnu vecinu poslova koji se kolokvijalno zovu "programiranje" ne treba vise od matematickog i logickog gradiva osnovne skole (sa eventualno jos prvim gimnazije zbog bulove algebre, ako se to i dalje izucava u prvom gimnazije a ne pre/kasnije, pojma nemam - u moje vreme se izucavalo tada mada i tada nije bio nikakav problem usvojiti te koncepte i pre toga) i prakse u nekom konkretnom razvojnom okruzenju.

Ne znam da li je ta cifra 50%, 60% ili mozda 90% ali je svakako ogromna.

I nema nicega podrugljivog ili loseg u tome. Ogromna vecina stvari su cista sljaka, uvezi neki GUI sa biznis logikom, ucitaj neke podatke, uradi neku jednostavnu operaciju nad njima i zapisi ih ponovo itd... ako teba nesto da se sortira, roknes std::sort ili ekvivalent i to je to.

Cak i mnoge "ozbiljne stvari" su isto tako sljaka. Mozda problem ima nekoliko koraka, sa par algoritama, vise niti i sl... ali i za vecinu tih stvari je resenje koriscenje lib-ova / framework-a. Cak i ako nisu optimalne, umesto davanja para na 10-20% optimizaciju se vise isplati dati pare u 10-20% brzi hardver.

Nista to nije sporno.

Medjutim, za ono malo sw. inzenjerskih poslova (a to malo, IMHO, moze biti mozda 10%) je ipak potrebno znati mnogo vise, izmedju ostalog i specificnosti algoritama i hardverske arhitekture zato sto se tu moze raditi o dvocifrenom ubrzanju ili dostizanju nekih osobina koje cine razliku koja se meri milionima EUR prednosti u odnosu na konkurenciju. Taj mali % poslova zahtevaju znanja koja se izucavaju na faklutetima koji skoluju sofverske inzenjere.

Takvi poslovi su verovatno skoncentrisani ili u zemljama koje imaju jaku hi-tech industriju (automobilsku, medicinsku, aerospace, finansijsku i sl.) ili su outsourcing zemlje za ove prve.

Mada cak i u tim zemljama na 1 takav posao dolazi sigurno dvocifren broj poslova za koje je potrebno znanje elementarne matematike/logike, baza podataka i praksa u konkretnom okruzenju.

Citat:
Burgos
Situacija danas je svakako gora nego pre dvadeset godina kada si mogao da pošalješ programere na duži godišnji i da posle godišnjeg imaš duplo bržu aplikaciju :-).


Jeste, danas je jedino prakticno skaliranje ubacivanje dodatnih procesora / klastera.

Mada i tu, vrlo verovatno ogromna vecina prohteva koji traze programersku radnu snagu nece dostici bottleneck zato sto, jednostavno, sta god da rade nemaju toliku gustinu podataka ili zahteve za servisom da zasite nekoliko Xeon crnih kutija.

Oni koji to dostizu ce, naravno, morati da zaposle sw. inzenjere koji znaju da dizajniraju resenja koja mogu da se skaliraju bez da umru ili da provedu 99.999% vremena u sinhronizaciji. Ali upravo broj takvih radnih mesta vs. "sljaka" radnih mesta je verovatno vrlo mali.
[ Nedeljko @ 10.04.2014. 12:58 ] @
mmix

Ja ne kažem da treba ili ne treba taj zadatak rešavati na taj način, nego da onaj ko ne zna da reši taj zadatak, neće znati da reši ni složenije situacije za koje ne postoji gotova funkcija, a koje na poslu trebaju svaki dan. Mojne mi reći da se zadaci na poslu rešavaju u jednom redu ili dva reda.

Mislim, direktno rešenje je korišćenje obične petlje i elementarne logike za osnovnu školu, što bi rekao Ivan. Kako će da programira neko ko nema upravo tu elementarnu logiku u glavi?
[ pexxi92 @ 10.04.2014. 13:35 ] @
Ne bih rekao da danas posto postoje opasno brze masine je znanje algoritama i potreba optimizacije mala. Naprotiv sto brze masine imamo to je asimptotska slozenost bitnije. Zamisli recimo 2 algoritma gde je jedan a drugi . To znaci da za duplo vise podataka prvom treba duplo vise vremena a drugom 4 puta vise vremena. Pojacanjem harvera (moci procesora) povecavaju se i zahtevi korisnika (kolicina podatak za obradu). Samim tim resenja sa manjem slozenoscu su sve potrebnija i potrebnija.
[ peromalosutra @ 10.04.2014. 13:53 ] @
Niko ne tvrdi da je znanje algoritama neupotrebljivo, naravno da ima poslova gdje se inovira i gdje se to znanje upotrebljava, ali velika većina programerskih poslova nije takva.

Za tu većinu pozicija je pisanje razumljivog, čitkog i reusable koda daleko bitnije od toga da taj kod bude optimalan, tako je bar svugdje gdje sam do sada radio. Tu je bitno isprojektovati aplikaciju tako da se moze na jednostavan nacin dopuniti i izmjeniti tako da isprati zahtjeve koji se konstantno mijenjaju i tu je poznavanje design paterna bitnije od poznavanja algoritama.

Neki osnovni kurs algoritama sigurno neće škoditi, ali poznavanje domena za koji se programira je uglavnom od presudnog znacaja.

E sad, uz sve to što sam rekao, programer koji pretenduje da bude dobar u svom poslu bi svakako trebao da bude upoznat sa raznim metodama na koje se neki problemi mogu riješiti, ako nista drugo onda bar na nivou da moze da prepozna problem i samim tim brže nađe rješenje. Na primjer, neki problem iz realnog zivota / poslovne aplikacije se može pokazati sličan problemu trgovačkog putnika, pa ukoliko nam uz to nije presudno da rješenje bude zaista optimalno (dovoljno je da bude blisko tome), možemo se zadovoljiti i nekim genetičkim algoritmom. Programer koji ne zna za problem trgovačkog putnika i genetički algoritam će daleko teže naći zadovoljavajuće rješenje.
[ Nedeljko @ 10.04.2014. 16:26 ] @
Mi se ovde izgleda ne razumemo.

mmix mi kao primer nekoga ko živi od razvoja softvera navodi veb dizajnere. Hmm... njima definitivno ne trebaju algoritmi, ali bih pre rekao da su umetnici, nego tehnička lica.

Mislio sam na one čiji je posao kod. Znači da ne znaju da naprave dve petlje kako treba, ali da su uspešni u profi programiranju.

[Ovu poruku je menjao Nedeljko dana 10.04.2014. u 17:41 GMT+1]
[ jablan @ 10.04.2014. 17:11 ] @
webdev ne znači veb dizajner.

Iskreno, meni kod programera mnogo više smeta slabo poznavanje SQL-a nego slabo poznavanje algoritama.
[ Nedeljko @ 10.04.2014. 17:25 ] @
Citat:
mmix: narocito ovi dizajneri prebezi u webdevu
[ Nedeljko @ 10.04.2014. 17:26 ] @
Poenta je da on tvrdi da zna ljude koji pofi programiraju, a ne zanju ni petlju da naprave kako treba. Baš me zanima kakve to zadatke dobijaju u kojima nema ciklične strukture.
[ jablan @ 10.04.2014. 18:00 ] @
To što si citirao ne znači "veb dizajneri", već "veb programeri koji su se ranije bavili dizajnom". I nije rekao da ne znaju petlju da naprave. To si ti rekao. On je mislio na nalaženje drugog najvećeg elementa. BTW, petlje nisu "ciklične strukture". Za jednog matematičara praviš neverovatnu količinu logičkih grešaka po napisanoj rečenici.
[ Nedeljko @ 10.04.2014. 19:13 ] @
Čekaj, nigde nije upotrebljena reč "bivši", tako da sam reč "dizajneri" tumačio na stanje u sadašnjem vremenu, baš kao što piše. Ako je mislio na bivše dizajnere, trebao je tako i da napiše. Ovako je reč "prebeg" dvosmislena, pa se ne zna da li se prebeglo iz dizajna ili u dizajn. To onda nije moja greška, već njegova.

Drugo, nije mi jasno kako se bave veb programiranjem bez da znaju da naprave petlju. Onaj zadatak se rešava prostom petljom, tako da ne znam kako ne može da ga uradi neko ko zna da pravi petlje.

Treće, nigde ne piše da su petlje ciklične strukture (mada ni sa tim ne vidim nikakav problem), već da programi sa petljom imaju cikličnu strukturu, tj. da je struktura programa koji sadrže petlju ciklična. Dobro, de sadrži deo ciklične strukture.

I četvrto, greške i to programske pravite mmix i ti. Onaj kod ne rešava zadatak bilo sa drugim najmanjim ili drugim najvećim elementom. Valjda treba prvo proveriti da li niz ima bar dva elementa, pa izbaciti izuzetak u suprotnom. No, to za raspravu nije bitno. Da sam to zamerao, bilo bi cepidlačenje jer to nije poenta onoga o čemu je mmix pisao. Naravno da bi on program pisao kako treba.
[ Nymeria @ 10.04.2014. 22:12 ] @
Izgleda da samo ti nisi shvatio receno :)
A kao sto je Jablan pomenuo, nije receno da ne umeju da naprave petlju.
[ Sale_123 @ 10.04.2014. 23:09 ] @
Ja bih jos samo dodao, da kompletnog programera ne cini samo to da li zna ili ne zna osnove algoritama, nego i kako pise kod:

* struktura koda/formatiranje
* davanje smislenih imena varijablama/funkcijama/klasama
* kako se snalazi u tudjem/svojem kodu prilikom trazenja bug-a
* kako rjesava gresku ili implementira nesto novo, tj. da li umije da pravi backward compatible kod
* kako se snalazi sa SCM alatima
* kako pise dokumentaciju i unit testove.

Vidjao sam dosta C++ programera koji pisu C++ kod a zapravo je to C kod, samo je C++ kompajler, implementacija koje su na srecu radile dok je u stvari to po C++ standardu bilo nedefinisana operacija (undefined behavior), zagadjivanje namespace-a u samom headeru (using namespace std;), programera koji usljed nedostatka inspiracije imenuju varijable po onome sto vide oko sebe (npr. office, light, glass), samoproklamovane C++ eksperte koji ne mogu da napisu jednostavan alat bez 50 globalnih varijabli, itd. Mozda je i tacno kao sto Ivan i mmix kazu samo nekih 10% programera moraju ekstra da znaju algoritme, ali bilo koji veci projekat zahtjeva da svi 100% programera iz tima pisu "fin" kod.
[ Marko_L @ 11.04.2014. 05:49 ] @
Jedni pričaju o jabukama, drugi o lubenicama, a pravimo se da pričamo o itoj stvari :) Kao i u svakoj industriji, i u IT-u postoji segmentacija. a različiti segmenti zahtevaju različita znanja i što se tiče developera, i što se tiče softverskih inžinjera. Negde je bitno jedno, negde drugo. Nije isto da li se radi o enterprise poslovnim rešenjima, poslovnim aplikacijama, embedded rešenjima, softveru za audio-video obradu, itd. Firme se obično specijalizuju za neku od tih oblasti, i sasvim je normalno da će zaposlene birati po tome da li imaju relevatna znanja upravo u toj oblasti.

Ja potpuno razumem stanovište Dimkovića koji je, barem koliko sam uspeo da ispratim, veći deo karijere proveo radeći sa softverom gde optimizacija ne da je bitna, nego je sveto pismo. Tu pre svega mislim na razvoj i usavršavanje audio kodeka i razvoj određenih embedded rešenja u auto industriji koji takođe imaju veze sa multimedijom. Takođe razumem stav Nedeljka, koji je čovek matematičar i verovatno uživa u rešavanju složenih problema, pa mu baktanje algoritmima predstavlja i ličnu satisfakciju. Ali isto tako razumem i mmix-a, pogotovo što manje više radimo u istom segmentu, pa mogu i lično da potvrdim izrečeno od a-š. Generalno, svako je u pravu, a do nesuglasica dolazi zbog toga što se priča o različitim stvarima.

U oblasti poslovnih aplikacija, u kojoj sam ja "zaglavio", apsolutno nikoga ne boli uvo za bilo kakve implementacije. Zahtevi klijenata su najčšće "da bude juče i da košta manje nego što je moja žena potršila na cipele ovog meseca :) U takvom poretku stvari, nemoguće je baviti se pisanjem i optimizacijom algoritama, jer to zahteva upravo suprotno, više vremena i više novca. Tako da je najčešća situacija u praksi da se pronađu odgovarajuće implementacije koje daju tačan rezultata, testiranjem se ustanovi koja je najbrža i najstabilnija, i onda se to iskoristi.

I ja sam nekada bio pican po tom pitanju, ništa nije moglo da izađe iz kuhinje ako nije do zla boga optimizovano i ako nije barem za 0.001ms brže od nekog postojećeg rešenja. Međutim, takvim pristupom, bio sam konkurentan na IT tržištu koliko i perač prozora. Jbg., dok ja usavršim, istestiram i implementiram neki svoj algoritam, neko drugi je već završio kompletnu aplikaciju i zauzeo pola tržišta, uz mnogo bolju pregovaračku poziciju, jer on kad ode na sastanak, može da kaže "naše rešenje košta 500 evra i koristi se u još 50 drugih kompanija", a čime ja da se pohvalim? Naše rešenje košta 1.000 evra, ne koristi se nigde, ali bi teoretski radilo i na gejmboju? :) Nagradno pitanje, šta bi klijent pre izabrao?

Da se razumemo, ne tvrdim ni da je znanje algoritama potrebno, niti da nije. To svako treba da odluči za sebe zavisno od toga kojim segmentom IT-a želi da se bavi. Neko osnovno poznavanje algoritama verovatno nije na odmet, ali ako znaš da ti nešto nije potrebno, možda je bolje uložiti vreme i trud za usavršavanje nečega što znaš da ti jeste potrebno.
[ Ivan Dimkovic @ 11.04.2014. 08:33 ] @
Citat:
Marko_L
Ja potpuno razumem stanovište Dimkovića koji je, barem koliko sam uspeo da ispratim, veći deo karijere proveo radeći sa softverom gde optimizacija ne da je bitna, nego je sveto pismo. Tu pre svega mislim na razvoj i usavršavanje audio kodeka i razvoj određenih embedded rešenja u auto industriji koji takođe imaju veze sa multimedijom.


Kao sto napisah vec, moje stanoviste je da za ogromnu vecinu poslova koji se kolokvijalno zovu "programiranje" nije dovoljno vise od znanja matematike iz osnovne skole, bulove algebre iz prvog srednje i prakse u konkretnom programskom okruzenju.

Ja uopste ne insistiram na znanju algoritama ili optimizacija, daleko bilo. Insistiram na tome samo na poslovima gde je to bitno, a takvih poslova mozda ima 5-10% u razvijenim industrijskim zemaljama. Za ostale, koriscenje prepakovanih stvari i jednostavne programske strukture su verovatno sve sto ce ikada biti potrebno na tim konkretnim zadacima.
[ Nedeljko @ 11.04.2014. 09:26 ] @
Citat:
Nymeria: Izgleda da samo ti nisi shvatio receno :)
A kao sto je Jablan pomenuo, nije receno da ne umeju da naprave petlju.

Ja stvarno ne razumem kako to neko može da zna da pravi petlje, a da ne zna da reši ni najprostiji zadatak, koji se rešava pravljenjem petlje.
[ Shadowed @ 11.04.2014. 09:46 ] @
To je razlika izmedju znanja i primene. I ja znam da mazem malter i znam da premestam cigle u prostoru ali ne znam da napravim zid kako treba a to se radi mazanjem maltera i premestanjem cigli.
[ Nedeljko @ 11.04.2014. 10:06 ] @
Tako i ja znam da igram tenis kao Novak Đoković.

No, ja ipak ne mislim da se tu radi o znanju, već o neznanju pravljnja petlji.
[ Shadowed @ 11.04.2014. 10:43 ] @
Pa dobro, to je tvoje misljenje, bitno je da ga ne stavljas drugima u postove i nema nikakvog problema :)
[ Ivan Dimkovic @ 11.04.2014. 12:14 ] @
Uzgred, neko moje iskustvo do sada u PC i automobilskoj industriji (koje je, naravno, na malom uzorku firmi i samim tim mozda drugacije od tudjih iskustava) je da i u malim i velikim firmama timove cini mali broj "razbijaca" koji su izuzetno dobri u svom poslu i imaju jako dobro znanje i vecine "ostalih" koji su prosecni ili, ne tako retko, cak i ispod proseka.

Ono sto sam primetio je situacija slicna i u malim firmama kao i u vecim. Pricam, naravno, sve vreme o hi-tech firmama (nebitno da li su fokusirane na PC ili automobilski / aerospace softver).

Covek moze naravno gadjati ili da bude 'razbijac' ili da ima relativno bezbrizan posao koji ne zahteva ogromno intelektualno naprezanje. IT je i dan danas bransa gde su ljudi dobro placeni u odnosu na prosek cak i ako spadaju u "prosecnu" programersku radnu snagu (u cemu nema nicega loseg, naravno).

Takodje, i jedan i drugi pristup imaju svoje prednosti i mane. Naravno, ne mogu svi da upadu u ovu prvu grupu takodje
[ pexxi92 @ 11.04.2014. 13:58 ] @
Ne treba svako da zna detalje o super - optimizaciji algoritama gde se primenjuje spektralna teorija grafova ili slicno.
Ali osnovno znanje o algoritmima je nesto sto je univerzalno i na cemu mozes testirati kandidata ma cim se bavio. Nekom u posle nece trebati sql, nekom nece trebati cak ni oop ali ako neko nezna da razmislja (kao sto nedeljko rece ne ume da napise 2 smislene for petlje) taj nema sta da trazi tu.
[ Burgos @ 11.04.2014. 14:04 ] @
Najvažnije od svega je da čovek nije sujetan, da shvata koliko ne zna, i da je voljan da nauči. Eno, juče se na stekoverflow-u cela zajednica upire da pokaže jednom članu da greši, al' ne vredi, on zapeo "ja sve znam, vi ništa ne znate" i ni da makne (još je sve doveo na nivo lične uvrede - kao da njega neko vređa, a ne dokazano problematične tehnike). E, takvu osobu ne bih zaposlio ni kao kurira u sw. developmentu, pa sve i da tvrdi da je jedini ekspert za tehnologiju X - nije, na svetu postoji bar neko sličan njemu, a u današnje vreme je lako zaposliti koga želiš, odakle želiš, samo ako imaš dovoljno $.
[ Nedeljko @ 11.04.2014. 14:36 ] @
To je tačno. Međutim, nešto malo na intervjuu mora da se zna. Ako taj ne zna da sastavi dve petlje, ćaos.
[ Odin D. @ 11.04.2014. 15:04 ] @
Ti banalizujes stvari do besmisla.
Sta je sledece: ako na intervjuu ne zna da ukljuci kompjuter - caos.
[ plus_minus @ 11.04.2014. 15:19 ] @
Nedeljko čovek uporno govori o jednoj prostoj stvari i mislim da čovek zna šta priča. Jedan prost dokaz da Nedeljko jeste u pravu, ako sam ja dobro shvatio do sad šta je on sve pokušao da objasni, jeste Flash. Flash f** plugin. "Ono" za pretraživače. Da ih je samo 5% svih njih koji su prošli kroz seansu čukanja koda za naredni fleš apdejt ili verziju, znali to što treba da znaju, to što Nedeljko uporno priča, danas bi 512 rama i dalje, bilo sasvim sposobno da potera sve video klipove - online. Oslanjanje na libove kojima srž nije videlo 90% tih istih lib-oslanjača. Pa onda u međuvremenu, libovi porastu. Mora. Ovaj što vadi iz libova, stalno pravi jednu te istu grešku, rutinski.. i 'lib-sourcer" mora da pljuje u šake. Da nadomesti još malo. Da sanira i da lib zna kome i šta da ponudi. Da poraste. I primera ima još koliko god treba. Ovo je samo jedan banalni.
[ Marko_L @ 11.04.2014. 16:06 ] @
A koga briga šta se može i za šta je sposobno 512MB RAM-a, kada ni mobilni telefon sa tako malo memorije više ne možeš da nađeš?
[ plus_minus @ 11.04.2014. 16:22 ] @
Možda klinku od 11 godina koja nema kinte za nov. Ustvari, imaju njeni, ali ne mogu tako brzo da omoguće isto. A briga i mene. Jer znam da je pre par godina, to moglo, na takvim konfiguracijama.
I tada je bilo hd-video auto/on/off. Što se tiče mobilnih telefona, takvih, sa toliko malo memorije, imam ih 2 u kući i odlični su - kao telefoni.
[ Odin D. @ 11.04.2014. 16:31 ] @
Je'l ti to zamisljas mozda da softverska i hardverska industrija mogu da zive od 11-to godisnjih klinki koje nemaju para?!

Niko ne sprecava tebe i Nedeljka da u asembleru otkucate svoj super-optimizovani flash player za svaki procesor koji vas interesuje, isto kao sto vas niko ne sprecava da umjesto aviona i autobusa putujete biciklom.
Ako treba da skoknes do prodavnice na cosku - naravno da neces ici avionom, nego ces ici biciklom.
Ako treba sutra da stignes na poslovni sastanak 4000 kilometara daleko - naravno da neces ici biciklom nego avionom.
Ako treba da napravis digitalni rucni sat - naravno da neces koristiti pentium procesor i softver u javi, nego par KB flasha i asembler.
Sve ima svoje podrucje smislene i isplative primjene, a to najbolje regulise trziste sa konkretnim eksperimentima, a ne necije teorije.

Ti pricas kao da se u softveru i hardveru ne radi o prirodnom toku stvari gdje se medju milionima programera i softverskih firmi i njihovih musterija iskustvom ne nalazi idealan balans izmedju utroska tehnike i ljudskog rada sa jedne strane i cijene svega toga sa druge strane nego kao da neko nekog puskom cera kako da radi protiv zdravog razuma.

Prije x godina neko je na ovom forumu u nekoj temi (ne sjecam se vise kojoj) spominjao u tom istom kontekstu kao ti sada nekog lika koji je u asembleru za 286-icu napravio neki navodno najbrzi (u prvom redu zahvaljujuci asembleru) algoritam za sah. Zaebalo ga samo to dok je on sa time zavrsio procesori su od 286-ice evoluirali do pentiuma ne znam koje generacije, pa su sav taj njegov trud i "pamet" obesmisljeni njegovim ignorisanjem razvoja tehnike, jer su na tadasnjim modernim procesorima bezvezni sahovski algoritmi u JAVA-i radili brze nego njegov super-optimizovani asemblerski na 286-ici.

Ima izreka: "Znanje je kad znas da je paradajz voce. Mudrost je kad znas da ga ne treba stavljati u vocnu salatu."
[ plus_minus @ 11.04.2014. 16:46 ] @
Ne, ja zamišljam, onda kad zamišljam i maštam o tome, da se sve vrati na staro. Da jačina hardvera - diktira. Ne kao što je sad. :)
E onda, onda bi se tačno znalo ko gde pripada. :)

A jednim delom i ja sam spadam u branšu možda najodgovorniju za takav sunovrat,
bez obzira što ne učim nikoga da tako treba, po tom "pattern-u".

A "Pattern" je -
"It easy, it's free, anyone can do it!"
"It's just one click away! Download now!"
"No need for coding, build your own website like a pRO within a weeks!"
...

A istina je zapravo -
No it isn't easy, nor free. Time. Your own. And health. The two most valuable things You'll always need.
No it isn't. There are million more clicks after the first one.
Yes, you do need to know the matter if You want to live by using your brain and fingers most of the time.
...

[ DaliborP @ 11.04.2014. 16:51 ] @
Pored Grammar Nazis, sad imamo i Code-Optimization Nazis.
[ plus_minus @ 11.04.2014. 16:56 ] @
Imamo sve samo ne javu i c.
[ Odin D. @ 11.04.2014. 16:59 ] @
Citat:
plus_minus: E onda, onda bi se tačno znalo ko gde pripada. :)


Pa, probaj ti sa ovim:
Citat:
plus_minus:"It easy, it's free, anyone can do it!"
"It's just one click away! Download now!"
"No need for coding, build your own website like a pRO within a weeks!"

da konkurises za nekoliko ozbiljnih ugovora, pa ces vidjeti da se i sad tacno zna gdje ko pripada.

Ali, zasto braniti djevojcicama od 11 godina koje nemaju ni para ni znanja da koriste bas to ako hoce?!
[ Ivan Dimkovic @ 11.04.2014. 17:21 ] @
Ja ne znam sta je stvarno problem.

Neki sagovornici tvrde da na konkretnim poslovima nije potrebno gradivo koje se uci na kursu sw. inzenjerstva - konkretno: algoritmi.

Ne znam sta je sporno u tome - to jeste tacno, ogromna vecina programerski poslova danas ne zahtevaju ni 5% stvari koje ce neko morati da nauci iduci na kurs sw. inzenjerstva ili informatike.

To ostavlja 2 mogucnosti onima koji planiraju da se bave stvarima koje ne zahtevaju obimno znanje sw. inzenjerstva:

a) Da se ne ide na fakultet, vec skoluje kuci ili na praksi
ili
b) Da se ide na fakultet, zavrsi isti i imati vise znanja nego sto je konkretno potrebno

Onima koji ipak zele da rade onih 5-10% poslova gde jeste potrebno obimnije znanje b) nije problem verovatno. Ako jeste, mogu i oni da odrade a) ako misle da to mogu da nauce sami.

I to je to.

Sto se samih fakulteta tice, fakat da jedan MIT, Stanford ili CMU imaju slicne programe i na svakom se izucavaju iste stvari govori o tome da trziste ocigledno trazi te stvari. USA fakulteti su privatni, uce ljude onome sta su ljudi spremni da plate. Nikoga ne biju da plati da uci stvari koje mu ne trebaju, pogotovu ne tamo.

E sad ako neko misli da su MIT, Stanford ili CMU puni budala ili da ljudi bacaju petocifrene sume novca da uce koncepte koji im nece trebati u zivotu, sta da kazem, bacite se na posao i otvorite nove skole koje uce to "sta ljudima treba".

Ako je to zaista "to sta ljudima treba", ljudi ce se otimati da plate za mesto u klupi.

Ja sam isto vrlo zainteresovan da vidim taj undergraduate kurs koji sadrzi samo ono "sta ljudima treba" na poslu. Ozbiljno.
[ Nedeljko @ 11.04.2014. 17:25 ] @
Ne radi se ovde o optimalnom/neoptimalnom, već o najprostijim zadacima. Ako neko ne može dve petlje da sastavi, šta zna da isproramira, a da je naplativo na tržištu? Živo me zanima koji su to ozbiljni programi bez petlji. Ne foliram se, već stvarno ne kapiram.
[ Nedeljko @ 11.04.2014. 20:26 ] @
Citat:
Odin D.: Ako treba da napravis digitalni rucni sat - naravno da neces koristiti pentium procesor i softver u javi, nego par KB flasha i asembler.

Baš me zanima kako će to da napravi kakogd onaj ko ne zna ni dve petlje da sastavi.
[ Marko_L @ 11.04.2014. 22:23 ] @
A ko je tvrdio da ne treba znati petlje? To nema veze sa algoritmima, već sa osnovama programiranja. Džiz.
[ Tyler Durden @ 11.04.2014. 22:26 ] @
Nedeljko, kakvo si ti bandoglavo stvorenje, stvarno da ne povjerujes. Svaku kvalitetnu diskusiju moras da ubijes :(
Pa ja tebe ne bi zaposlio, taman da ZNAM unapred da ces mi osmisliti neki algoritam koji od 486-ice pravi Xeon-a od 50 jezgara....
[ Andrej013 @ 11.04.2014. 22:47 ] @
Ljudi nemojte da zahebavate Nedeljka da ne pocnu opet da sevaju bernulijeve krive!
[ Odin D. @ 11.04.2014. 23:01 ] @
@Nedeljko,
poceo si da smaras sa te dvije petlje, jer te dvije petlje niko nije spomenuo osim tebe i sam se sa sobom oko toga prepucavas. Kao neko malo dijete.
Ja ne znam sta mogu da programiraju ljudi koji ne mogu upetljati dvije petlje, ali sam imao kolege koji mogu "iz rukava" napisati bilo koji skolski sort algoritam za nizove ili pretragu za stabla, ali se zaglave po 3-4 sata na mnozenju dviju matrica 3x3.

Citat:
Ivan Dimkovic:E sad ako neko misli da su MIT, Stanford ili CMU puni budala ili da su ljudi koji placaju petocifrene sume novca da uce koncepte koji im nece trebati u zivotu, sta da kazem, bacite se na posao i otvorite nove skole koje uce to "sta ljudima treba". Ako je to zaista "to sta ljudima treba", ljudi ce se otimati da plate za mesto u klupi.

Da, ako neko misli da su religijske skole pune budala, ili da su ljudi koji zalazu svoj zivot u to da uce koncepte koji im nece trebati u zivotu...

Salu na stranu :) ne misli niko da algoritmi nisu potrebni. Naprotiv.
Pretpostavljam samo da jos neki, poput mene, smatraju da poznavanje odredjenog uzeg skupa (ima ih milion, nemoguce ih je poznavati sve) algoritama ne predstavlja nikakav elitizam, pamet ili narocitu sposobnost, vec pretezno opredeljenost ka necemu isto kao sto se npr. neko opredjeli da bude mesar, a neko tesar.

Svaka cast onom ko je izmislio/pronasao/otkrio algoritam; ali po meni, svaki sledeci onaj ko te - unapred vec poznate korake algoritma - samo prevodi iz nekog algoritamskog jezika na neki konkretan programski jezik radi na istom nivou pameti i strucnosti kao i oni koji ga uzimaju gotovog iz biblioteke, a koje ovdje neki nazivaju obicnim sljakerima i fizikalcima.
U tom pukom prevodjenju ima pameti koliko i u postupcima dresiranog konja u cirkusu ili koliko i u "rijesavanju" rubikove kocke pomocu napamet naucenog niza poteza na osnovu nekoliko predefinisanih situacija u pogledu polozaja sarenih polja.

Po meni, na intervjuima za programere bi bilo smislenije testirati ljude nekim testom inteligencije nego poznavanjem algoritama.
Pored onih kolega gore pomenutih Nedeljku, imao sam neke koji su u toku skolovanja uspjesno polozili nekoliko kurseva programiranja, sa sve algoritmima, ali nista od tog "elitnog" znanja i "razmisljanja" ne mogu da primjene na najednostavnijem zadatku programiranja simulacije robota koji treba da se krece bilo kako kroz hodnik samo da ne udara u zidove - problem koji se rjesava bukvalno u dva-tri reda jednostavnih if naredbi (ili jednom case naredbom).

Sa druge strane, poznavanje nekih osnovnih algoritama (nekoliko mjeseci ili godina nakon odslusanog i polozenog skolskog kursa) koji se cesto javljaju u softverskoj praksi obicno ukazuje na zainteresovanost i posvecenost programerskoj struci, pa ta cinjenica u tom smislu moze predstavljati neku indikaciju necega, ali tvrditi da je onaj koji poznaje iznutrice nekih algoritama bolji (pametniji, sposobniji, produktivniji, brzi, elitniji) programer od onog koji ih ne poznaje nego ih uzima iz biblioteke je po meni besmislica (ne mislim tu na tebe, ali ima nekih koji imaju tendenciju da tako misle).

Narocito zbog toga sto sem tih osnovnih algoritama pretrage, sortiranja, obilazenja... razlicito struktuiranih podataka, postoji milion drugih algoritama iz milion drugih oblasti i problema koji se rjesavaju kompjuterski, tako da je jednom programeru nemoguce poznavati ikakav znacajan procenat svih njih da bi to imalo nekog znacajnog uticaja na 'univerzalnost' nekog programera.

Za vecinu ljudi je potrebno poznavanje algoritama iz uzeg domena kojim se bave na nivou black-box: da znas koji postoje, kad se i za sta upotrebljavaju i kakvi su im parametri u smislu procesorskih, memorijskih i vremenskih zahtjeva.

Danas imas more dobrih inzinjera koji konstruisu bagere i avione, ali ne znaju da naprave sraf ili oprugu: jednostavno, postoji "biblioteka" srafova i opruga koja mu je na raspolaganju; i da su se oni u svom skolovanju i praksi umjesto na kompleksne koncepte bagera, hidraulike, aviona i koriscenja aktuelnog CAD softwera koncentrisali na detalje pravljenja srafova, opruga, limova, celika, navoja, valjanja sipki, varenja, zupcanika, lanaca, poluga, lezajeva.... nikad ne bi ni stigli do bagera i aviona, jer tih bazicnih stvari ima toliko da niko za jednog zivota ne bi stigao svime detaljno da se pozabavi.

U npr. mojoj struci, debugging (koji se manje-vise nigdje sistematski ne izucava) je esencijalna vjestina bez koje je gotovo nemoguce ista napraviti. Moze neko biti teoretski super-genije za algoritme, ali i najmanji bug koji se odgovarajucim prakticnom metodom ili alatkom za debagiranje otkriva za par minuta moze ga zaglaviti danima da bukvalno kao slijepac baulja kroz svoj kod bez ideje sta da radi.
Znam, sad ide poznati argument da poznavalac algoritama moze nauciti debugging kad mu zatreba, samo sto ja znam da je ucenje debugginga 10 puta napornije i intelektualno zahtjevnije nego ucenje algoritama, pa ce tako poznavalac debugginga lakse i brze da nadoknadi rupu u algoritmima nego obratno.

To je po meni jedna od stvari koje bi bilo bolje ubaciti u nastavni plan i program, a na ustrb detaljisanja oko algoritama.

Ne znam kakva je sad trenutno situacija u tom desktop/server/HAL 9000... segmentu softverske struke (jer se ja jos uvijek krecem u par stotina KB do par MB), ali pretpostavljam da je ili na prekretnici kada ce se skole u nekoj mjeri morati odreci detaljnog proucavanja "srafova i opruga" i nauciti ucenike da uzimaju zdravo za gotovo da to postoji odnekud gotovo za upotrebu i tako dobijeno vreme iskoristiti na ucenje neceg 'hitnijeg' i 'potrebnijeg', ili ce se to desiti u skorijoj buducnosti.

Industrija i ekonomija nisu bas lude za onima koji vole da repriziraju izmisljanje tocka i tople vode.

Kazem opet, mozda je situacija sad trenutno takva da ima dovoljno vremena i prostora da se algoritmi u skolama izucavaju i vjezbaju detaljno (jer nema nista pametnije, hitnije, potrebnije, prakticnije, isplativije...), ali sumnjam da ce dugo tako ostati.
Ja bih licno radije platio nekom da me je dva semestra ucio debugging iz realnog zivota - a koji mi treba ne svaki dan nego svaki minut - na konkretnim alatima i paketima koji su u tom trenutku vremena aktuelni, nego da me je ucio neke teorijske algoritme koje uglavnom nikad kasnije nisam primjenjivao.
Ali nazalost, ja taj izbor nisam ni imao.

Takve promjene desavale se vec ranije i desavaju se stalno za razne kurseve.
Prije 15-tak (ili vise, kako gdje) godina vise od pola (a negdje i vise) materije kursa elektronike na vecini univerizteta je otpadalo na proucavanje tranzistora kao poluprovodnicke strukture i nekakvih jednacina iz fizike poluprovodnika. Danas (a sto nije narocito daleko od onda) to vise nije tako: to je stvar koja je prebacena na specjalisticke studije (npr. mikroelektronike) - za one koji hoce da prave cipove. Ostali (a to je vecina) studenata to vise ne slusa u svojim kursevima elektronike nego se bave gotovim tranzistorima na nivou black-boxa, operacionim pojacavacima itd.

Ne znam kad ce i da li ce to da se desi sa programiranjem, ali cinjenica da se o tome prica, i da ima drugih misljenja, i da ima programera koji rade i primaju plate, a ne poznaju iznutrice algoritama,... sama po sebi govori da negdje postoji prostor i za takve izmjene.
[ Ivan Dimkovic @ 12.04.2014. 11:10 ] @
A ko ovde prica o nekom elitizmu? Cuj, MIT uci ljude ono sto su spremni da plate. Uzevsi u obzir da velika vecina tih ljudi posle MITa ide u industriju govori da te stvari imaju neke veze jedna sa drugom.

Fakat da su programi isti na najkonkurentnijem IT trzistu na planeti zemlji nesto govori o tome. Ako neko misli da su u krivu, pa ispravite ih, sta da kazem.
[ Nedeljko @ 12.04.2014. 11:37 ] @
Pa, ne ubijam ja kvalitetnu diskusiju, već vi urnišete kvalitet diskusije svojim odgovorima napisanim bez razmišljanja i ikakvog smisla.

Ja sam na početku pete strane pitao ovo:
Citat:
Nedeljko: Da li iko zna nekoga ko zna da programira bilo šta što je naplativo na tržitu, a da ne zna da napiše program za pronalaženje drugog najvećeg elementa niza korišćenjem samo osnovnih operacija?

Poenta je vrlo jasna. Na to je mmix odgovorio da zna gomilu ljudi koji odgovaraju tom opisu. Odgovor me je iznenadio. Smatram da u tom slučaju postoje dve mogućnosti:

1. Neka budala plaća dćabalebaroše koji ne znaju da rade.
2. Ono što mmix tvrdi nije tačno.

Pretpostavljam da je u pitanju ovo pod 2, pri čemu mmix poznaje neke ljude koji uspešno profi programiraju, a za koje on neosnovano tvrdi da ne bi znali da reše zadatak. Možda bi se oni hvalili time da ne znaju, ali dajte im 100 evra da za sat vremena urade zadatak pod kontrolom da im ne radi neko drugi (preko neta itd), pa da vidite da li znaju ili ne znaju.

Zadatak ne sa drugim najvećim, već sa n-tim najvećim gde se n zadaje sa ulaza, je mogao da bude jedan od četiri zadatka na kontrolnom iz paskala, koji se radi 45 minuta, kada sam ja išao u srednju školu. E, sad, za takav zadatak ste vi krenuli da drvite o optimizaciji, štednji milisekundi itd. Ja sam napomenuo da uopšte nije bitno kako bi se to rešavalo u praksi, kada je radno vreme zaposlenog skupo, već o tome da li kandidat zna ili ne zna da uradi ovakav zadatak. Ako ne zna da uradi taj prost zadatak, neće znati ni da radi, jer u svakodnevnim obavezama ima složenijih zadataka od ovoga (do na sve biblioteke koje ima na raspolaganju).

Da je odgovor bio "naravno da je to prost zadatak za profi programere, ali bi se u praksi rešavalo drugačije zbog štednje radnog vremena zaposlenog", to bi bila sasvim druga priča, pa ne bih odgovarao na taj način. Ne, vi ste potezali priču da je ovaj zadatak svemirska tehnologija, pa su moji odgovori bili u skladu sa tim da se to raspravi. Znam ja vrlo dobro da sam nekima naporan jer očekujem razmišljanje.

Drugi put pišite smisleno, pa neće doći do ovakvih glupavih situacija da se raspravlja o nečemu, što je vrlo jasno i očigledno, zato što neko to dovodi u pitanje, a onda kada tražim obrazloženje, smaram. Sva obrazloženja koja sam dobio su gole konstatacije ili ignorisanja konteksta.

Poenta je u tome da ne postoje ni programski jezik, ni biblioteka, ni alat, koji bi zamenili čak ni podprosečnog profi programera. Da je tako, onda ga niko ne bi zaposlio, već bi kupio te alatke kao jeftinije. Biće da je programiranje teško, jer ne bi plate u softverskom inženjeringu bile više od plata u drugim granama inženjeringa. Ko misli da softver može da mu piše taksista koji je pročitao par knjiga iz serije "majstor punom snagom za bibliju za 21 dan", slobodno neka ga zaposli.

Čuj, neko ne zna dve petlje da sastavi, ali će da uradi ne znam šta u ne znam čemu. Bez osnovne logike za programiranje u glavi nema ni programiranja.

@Tyler Durden

Poslodavci koji ne cene znanje su od mene dobijali nogu vrlo uredno. Za takve nisam hteo da radim.
[ tdusko @ 12.04.2014. 12:06 ] @
Citat:
Nedeljko: Pa, ne ubijam ja kvalitetnu diskusiju, već vi urnišete kvalitet diskusije svojim odgovorima napisanim bez razmišljanja i ikakvog smisla.
A kakav je smisao bio tvog pitanja u tadasnjem kontekstu diskusije? Evo vrati se nazad i procitaj prethodnih 10-ak postova pa ces videti koliko je u stvari tvoje pitanje imalo smisla u tom trenutku. Znaci, kosku si bacio sa time kako akademac mora da zna podvrste algoritama za sortiranje jer inace ne moze da napravi web server. Onda se povede diskusija o tome da li je i koliko bitno da se svi ti algoritmi uce na osnovnim studijama, da li svi treba to da uce i znaju itd itd. U medjuvremenu dodajes kako su to sve najnormalnije stvari, sto bi se reklo osnova i onda kao iz neba upadas sa vec antologijskim pitanjem. Ja sam iskreno procitao pitanje odmah, ali nisam se udubljivao jer sam onako ovlas pretpostavio da se resenje krije u sortiranju niza nekom podvrstom quicksort-a o kome si u prethodnom postu pisao i sa kojem si i zapoceo diskusiju. Ni na kraj pameti mi nije bilo da na umu imas resenje do kog se dolazi "peske". Mislim, koja je poenta toga? Jel se raspravljalo o tome da li je potrebno da se zna napisati dve petlje ili da li je potrebno da se znaju sve podvrste algoritama za sortiranje da bi se zaradjivalo od programerskog posla?
[ Marko_L @ 12.04.2014. 12:48 ] @
Citat:
@Tyler Durden

Poslodavci koji ne cene znanje su od mene dobijali nogu vrlo uredno. Za takve nisam hteo da radim.

Nisam Tyler, ali na ovo moram da odgovorim.

Odaću ti jednu tajnu. Nijedan poslodavac ne ceni znanje. Poslodavci cene isključivo primenu tog znanja u realnim situacijama i to i plaćaju. Samim tim, niko tebe neće plaćati za to što ti umeš napamet da izdeklamuješ neki algoritam i što znaš šta su petlje i što sve to možeš potanko teoretski da objasniš, već će te platiti za to što ćeš ti dobiti neku specifikaciju i tu specifikaciju pretvoriti u kod koji radi. Nikoga tu ne zanima kakav si ti algoritam koristio, niti koliko je taj tvoj algoritam A brži, bolji, elitniji, šta god od nekog algoritma B, osim ako u specifikacijama nije strikno navedeno da algoritam A mora da se izvrši za toliko i toliko vremena i da bude brži od neke određene implementacije, što obično nije slučaj.

Ti na ovoj temi odaješ utisak da si teoretičar i sitničar koji stalno traži dlaku u jajetu i kome je mnogo važnija forma od suštine. Tako da, ni ja ne bih voleo da imam takvog u svom timu, jer ne mogu da plaćam nekoga ko će po ceo dan da trčkara okolo i ubeđuje ostale kolege kako nisu trebali da koriste ovo ili ono, kada su za mesec dana predanog rada mogli da naprave novi algoritam korišćenjem metode X koji bi za 0.1 sekundu bio brži od svih postojećih implementacija i koji će kada vidi kod kolege kod poput a.sort; print a[n]; duzme da ga propituje da li on uopšte zna šta su petlje i da li zna kako je metoda sort implementirana u njegovom slučaju i šta se krije ispod te metode and stuff.

Mislim, znam ja da tebe živo zabole što mi nećemo sarađivati, ali samo navodim kakav utisak ostavljaš i zašto si dobio konstataciju kakvu si dobio.
[ Nedeljko @ 12.04.2014. 12:53 ] @
@tdusko

Smisao je u tome što su se te elementarne stvari iz osnova programiranja nazivale "espertskim", nepotrebnim većini, zasebnom oblašću itd. Ja sam tvrdio da je to zajednički imenilac svih oblasti proramiranja. Dakle, onaj ko je nesposoban za to, neće se osposobiti ni za jednu oblast, jer nema klikere za to.

Pravo je pitanje koji je smisao u lavini besmislica koje su usledile.

Ne postoji jedna vrsta klikera za programiranje, druga za logiku, treća za matematiku, a četvrta za fiziku. Sve je to ista vrsta klikera. Naravno, ima onih koji su postali sjajni u razvoju softvera, a koje matematika nije zanimala (a čije učenje zahteva veliki rad) jer su im računari bili bliži nečemu praktičnom ili matematika nije išla njihovim profesorima u pokušaju da im prenesu nešto što ni sami nemaju. Naravno da na intervjuu za softverskog inženjera u oblasti koja nema veze sa geometrijom ne treba pitati geometriju, jer dobar kandidat može da ne uradi zadatak, ali ne zato što je glup za matematiku, već zato što ne može da sam na licu mesta da otkrije sve teoreme koje trebaju za rešenje, a koje ne zna jer ih nije naučio i čiju primenu nije uvežbao. Ali, hej, on je trenirao programiranje, pa ako ne zna da reši kontrolni iz programiranja, onda svakako nije dobar u tome.

Fudbalerima na treningu daju vežbe kao što je pimplovanje iako to neće raditi na utakmici, ali im daju osećaj za loptu, koji im itekako treba na utakmici.
[ Nedeljko @ 12.04.2014. 13:05 ] @
@Marko_L

Ti odaješ utisak nekoga ko ili niukakvu školu nije išao (barem ne kvalitetnu) ili nekoga ko piše samo da bi nešto napisao.

Hej, teorijsko znanje je deklamovanje napamet nekog algoritma ili definicije petlje. U koju si to školu išao? Kada sam ja išao u školu, to nije bilo ni za dvojku. Definicija dvojke je bila reprodukcija sa razumevanjem, trojka primena, četvorka kombinovanje više elemenata, a petica izvlačenje novih zaključaka (zadaci sa zvezdicom).

To što ti nazivaš znanjem se ne zove znanje, već neznanje i bolje nemoj više da se brukaš.

Dakle, zadatak koji sam postavio nije "izdeklamovati algoritam naučen napamet za nalaženje drugog najvećeg elementa niza", već "napisati program samo sa osnovnim operacijama, koji pronalazi drugi najveći element niza". Ako se slučajno desi da neko od ranije zna napamet rešenje tog zadatka, dati mu drugi slične težine.

Biće da tabor koji misli da je taj zadatak nešto neprimereno nije nikada uradio ništa konkretno u životu ili je u najboljem slučaju radio 60 časova nedeljno za 500 evra na crno.

Čuj, da tolerišem da me neko za kreativan rad plaća ko za običnu šljaku. Ne pada mi na pamet.
[ Nedeljko @ 12.04.2014. 13:24 ] @
Neko ne zna da uradi ni najbanalniji zadatak iz programiranja, ali zna da primenjuje znanje koje nema.
[ Nedeljko @ 12.04.2014. 13:33 ] @
@tdusko

Ne, nisam ja rekao da ne može da napravi veb server onaj ko ne zna podvrste algoritama, već sam samo hteo da istaknem značaj znanja. Ako od klijenta može da dođe poveća lista za sortiranje, a to radi server bilo kako, podložan je DOS napadu. Nemoj da mi ubacuješ u usta nešto što nisam napisao.

Takođ, javili su se likoi sa "tabelarnim znanjem" algoritama. E to je ono o čemu Marko_L piše kao o "teorijskom znanju", koje je samo neznanje i ništa drugo. Teorijsko znanje je nešto sasvim drugo i na višem nivou od inženjeringa. Dao sam tri zadatka koja se rešavaju najstandardnijim algoritmima/strukturama podataka, ali džaba kad "tabelarni znalci" sa "teorijskim znanjem" koji to "znaju da pretoče u kod" ne mogu da ih prepoznaju. Ima biblioteka za to, ali kojih?
[ tdusko @ 12.04.2014. 13:51 ] @
Citat:
Nedeljko: @tdusko

Ne, nisam ja rekao da ne može da napravi veb server onaj ko ne zna podvrste algoritama, već sam samo hteo da istaknem značaj znanja. Ako od klijenta može da dođe poveća lista za sortiranje, a to radi server bilo kako, podložan je DOS napadu. Nemoj da mi ubacuješ u usta nešto što nisam napisao.
Nisi rekao da ne moze da pravi nego si rekao

Citat:
Da, Burgos, to treba da zna neko ko počinje da pravi web servere sa akademskim znanjem.
Nije sija nego vrat.

Uostalom, nije to ni bitno. I sam si epopeju o dve petlje ispevao na osnovu izsilovanog odgovora na pitanje koje je u datom kontekstu bilo potpuno besmisleno. Niko ovde naravno ne misli da neko moze da zaradi od programiranja ako ne zna da napise dve petlje. Sto je najgore, i tebi je jasno da niko ovde to ne misli, ali si se uhvatio za taj odgovor kao pijan za plot i nastavljas da silujes ceo auditorijum ponavljajuci jedno te isto do besvesti.
[ Andrej013 @ 12.04.2014. 14:30 ] @
Citat:
Nedeljko:

Smisao je u tome što su se te elementarne stvari iz osnova programiranja nazivale "espertskim", nepotrebnim većini, zasebnom oblašću itd. Ja sam tvrdio da je to zajednički imenilac svih oblasti proramiranja. Dakle, onaj ko je nesposoban za to, neće se osposobiti ni za jednu oblast, jer nema klikere za to.

Opet izmisljas. Niko nije pominjao elementarne stvari, tipa koriscenje petlji nego se ti ili pravis naivan kako bi dokazao neku svoju poentu ili stvarno nisi u stanju da razumes o cemu se prica posle cak 5 strana diskusije. Dakle, da ponovim deseti put, prica se o izucavanju algoritama do detalja, onih algoritama koji se izucavaju na casovima algoritmike. A ti banalizujes i pravis se da ne znas koji su to algoritmi pa od situacije do situacije tvrdis kako su to ili bezijeove krive sa jedne strane ili najjednostavniji for loop sa druge strane.

Citat:
Nedeljko:
Ne postoji jedna vrsta klikera za programiranje, druga za logiku, treća za matematiku, a četvrta za fiziku. Sve je to ista vrsta klikera.

Ocigledno da nije. Ti ocigledno imas kliker za programiranje i matematiku, ali te logika opasno hebe. U tom slucaju i ja bih proveo hiljade sati uceci algoritme nadajuci se da se logika moze nastrebati.

To je ono kada ja pitam
Citat:
Andrej013:i zato pitam vas koji jeste radili na "pravom" softverskom inzenjeringu koliko cesto, tj da li ste ikada primenjivali to znanje i kada? Ajde da malo razmenjujemo iskustva.

a ti mi odgovoris:

Citat:
Nedeljko:
Konkretno, meni su trebale Keplerove jednačine za ovozemaljske poslove, koji imaju matematičku formulaciju istog oblika, pa mi je bilo potrebno da za elipsoid i sferu utvrdom da li se seku ili je jedno u drugome ili jedno van drugoga, pa nestandardan zadatak iz Bezijeovih krivih, pa zadaci koji se svode na probleme sa grafovima, pa izmene postojećih algoritama da bi se postiglo nešto drugo itd.

Sto kada se prevede znaci: "tacno, nikada mi nisu bili potrebni algoritmi, ali ja znam Berzijeove krive".

Par strana kasnije na isto pitanje odgovaras kako je sve o cemu se prica najjednostavniji loop:
Citat:
Nedeljko:direktno rešenje je korišćenje obične petlje i elementarne logike za osnovnu školu


Dakle, svima na temi je savrseno jasno o cemu se prica sem tebi.


A poenta je i dalje vise nego jasna. Mnogi poput tebe insistiraju na detaljnom poznavanju algoritama pod izgovorom da ce im jednog dana zatrebati i da ce im cinjenica da znaju implementaciju svakog algoritma ustedeti sate rada. To ce se mozda desiti, ali ono sto ce se 100% desiti je to da ce svako ko ne zna osnovne OOP paterne izgubiti te sate savladavajuci ih, oni koji ne znaju SQL a apliciraju na poziciju u kojoj je potreban ce izgubiti sate testirajuci i uceci kako se pise efikasan query, malko komplikovaniji join, ljudi koji ne znaju konkurentno programiranje ce uskoro biti potpuno nepotrebni u multiprocesorskom svetu, oni kojine znaju detaljne razlike izmedju dve strukture podataka ne treba ni da mastaju o pisanju koda koji je za produkciju. Dakle sve te stvari su neuporedivo korisnije, sa njima ce se softveras sigurno sretati vrlo cesto a sa algoritmima vrlo retko ili nikada. Pre ce biti da algoritmi nisu najpotrebniji nego da masa ljudi ima mentalitet nastavnice biologije/istorije/geografije/hemije iz petog razreda koja svakog casa deci ispira mozak da je njen predmet majka svih nauka, najbitniji i nesto bez cega se ne moze u zivotu.
[ Odin D. @ 12.04.2014. 14:42 ] @
Citat:
Ivan Dimkovic:
A ko ovde prica o nekom elitizmu? Cuj, MIT uci ljude ono sto su spremni da plate. Uzevsi u obzir da velika vecina tih ljudi posle MITa ide u industriju govori da te stvari imaju neke veze jedna sa drugom.

Fakat da su programi isti na najkonkurentnijem IT trzistu na planeti zemlji nesto govori o tome. Ako neko misli da su u krivu, pa ispravite ih, sta da kazem.

Nema potrebe pretjerivati i govoriti kako neko tvrdi da te stvari nemaju nikakve veze jedna sa drugom.

To niko nije ni rekao ni tvrdio.
Nema smisla da sad opet pisem post od pola metra da bih samo ponovio ono sto sam vec napisao.

Ponovicu samo sustinu: za nekog to ima vise veze, a za nekog manje.
Posto se ne mogu praviti fakulteti za svakog ponaosob - tako je kako je.

Moje pisanje se ne odnosi na "pogresnost" skola, nego na neslaganje sa onima koji tvrde da je programer koji poznaje i koristi algoritme na nivou black boxa inferiorniji u odnosu na one koji znaju iznutrice, naprosto zato sto je u nekim programerskim poslovima besmisleno baviti se algoritmima na tom nivou isto kao i sto je i onome ko konstruise bager besmisleno da pocinje od crtanja srafova u AutoCAD-u (ili na papiru, da bi bio jos elitniji), i da to ne znaci da je onaj ko zna da pravi srafove bolji inzinjer od onog ko zna da pravi bagere koristeci gotove srafove.

Skole sam spomenuo u kontekstu mog prvog javljanja, a sto se odnosilo na 'promjenjivost' uslova na trzistu programiranja, i primjere koje sam navodio sam navodio kao ilustraciju da se stvari mijenjaju i jedino u tom kontekstu ima smisla to sto sam rekao, a ne kako ovo danas nevalja.
[ Andrej013 @ 12.04.2014. 14:44 ] @
Takodje, ova logika koja kaze da su algoritmi neophodni jer izucavaju na svetskim univerzitetima je falicna. Ni na tim univerzitetima algoritmi vise nisu core kurs koji se mora poloziti kako bi se diplomiralo na CS programu vec opcioni sto ga po vaznosti svrstava negde sa kursom o mrezama. Mozda je to bilo pre 10-20 godina, ali danas to vise nije slucaj, sto zapravo dodatno potvrdjuje da se i na univerzitetima akcenat prebacuje na korisnije stvari. To moze da bude opasno za masu buducih inzenjera jer su algoritmi ustvari najbitniji za pronalazenje posla zato sto na intevjuima iskljucivo to pitanju tako da ti je tada(i skoro nikad vise) poznavanje istih vrlo bitno.
[ Nedeljko @ 12.04.2014. 15:11 ] @
@tdusko

Da, neko sa akademskim znanjem to treba da zna. To ne znači da prostije stvari ne može da radi neko jeftiniji. Poenta je u tome čemu služi akadmsko znanje.

Osim toga, ako niko ne misli da se može jesti leba od programiranja bez da se ume da se reši onaj zadatak, onda molim da se ne piše suprotno. Diskusija bi bila mnogo konstruktivnija kada bi svi pisali samo ono što zaista misle, a ne i ono što ne misle.

@Andrej013

Ja sam napisao konkretan zadatak, koji je za kontrolni iz programiranja i to kao jedan od lakših među četiri zadatka ukupno, koja se rade za 45 minuta. Za taj zadatak je masa krenula da cepe kvake o optimizaciji i štednji milisekundi. Ne, poenta je da ko ne zna da rešava zadatke tog nivoa, neće se leba najesti. Naravno da oni sa otprilike takvim osećajem za algoritme mogu lepo da žive od jednostavnijeg programiranja (što je vrlo dobro što i to može da se lpo naplati), a da se sa akademskim znanjem se radi za veće pare. No, ispod tog nivoa se neće leba najesti, osim sa nečim što osim takvih, ostali ne smatraju programiranjem (drimviver npr).

Što se izučavanja standardnih algoritama i struktura podataka tiče, naveo sam zadatke za takve sa tabelarnim znanjem algoritama i struktura podataka. Treba samo da prepoznaju šta im treba, ali džaba. Odgovor nisam dobio jer kad neko ne zna, on ne zna i onda prelazi na filozofiju. To je dokaz da to tabelarno znanje nije primenljivo.

Dakle, algoritmi treba da se izučavaju, jer su takvi poslovi razvoja softvera na tržištu najdeficitarniji. Ko hoće da radi 60 časova nedeljno za 500 evra mesečno na crno, njemu to ne treba, ali neki imaju veće ambicije.

Što se algoritama tiče, ti očigledno ne razumeš pojam algoritma. Ako si mislio da se završavaju na osnovnim operacijama sa nizovima, listama i drvetima, grdno si se zeznuo. Postoje i geometrijski i numerički i ostali algoritmi. Na projektu na kome trenutno radim su mi relativno skoro trebali neki od standardnih algoritama sa grafovima. Da, kada sam pominjao Bezijeove krive radilo se (pre nekoliko godina) o programerskom zadatku iz Bezijeovih krivih. Trebalo je omogućiti nešto korisniku, ali metod nisam našao u literaturi. Međutim, rešava se lako pomoću nekih standardnih ideja kojima sam ovladao. Ja koristim ono što znam i nisam primetio da su programiranje, matematika i logika nepovezani.

I na kraju, nije mi jasno šta je to detaljno poznavanje algoritama. Je li to uključuje i kvantne algoritme kao što je Šorov? Ovde se raspravlja o osnovnim algoritmima i strukturama podataka. Od kviksorta je bitnija ideja "podeli, pa vladaj", koju on ilustruje. Koja je razlika između detaljnog i nedetaljnog poznavanja bablsorta?

Dakle, rešite mi drugi i treći zadatak čime god hoćete. Možete kakvim god hoćete jezicima/bibliotekama/alatkama da ih rešavate. Koristite i gugl, slobodno. Samo da čujem ideje rešenja.

Čuj, radiće konkurentno programiranje onaj ko ne zna osnove programiranja. Naravno da sve to treba, ali je nemoguće vladati višim spratovima bez da se znaju niži solidno.

Da li znaš kako se u složenim situacijama bori sa deadlock problemom? I za to postoje algoritmi.
[ Nedeljko @ 12.04.2014. 15:56 ] @
Citat:
Andrej013: Takodje, ova logika koja kaze da su algoritmi neophodni jer izucavaju na svetskim univerzitetima je falicna. Ni na tim univerzitetima algoritmi vise nisu core kurs koji se mora poloziti kako bi se diplomiralo na CS programu vec opcioni sto ga po vaznosti svrstava negde sa kursom o mrezama. Mozda je to bilo pre 10-20 godina, ali danas to vise nije slucaj, sto zapravo dodatno potvrdjuje da se i na univerzitetima akcenat prebacuje na korisnije stvari. To moze da bude opasno za masu buducih inzenjera jer su algoritmi ustvari najbitniji za pronalazenje posla zato sto na intevjuima iskljucivo to pitanju tako da ti je tada(i skoro nikad vise) poznavanje istih vrlo bitno.

Ma, bogati. A gde to na ozbiljnom univerzitetu može da se diplomira CS bez algoritama? Da nisu možda ti osnovni algoritmi provučeni kroz ostale predmete?

Šta znam, ja nisam studirao računarstvo, ali znam šta se učilo. Nije postojao predmet "algoritmika", ali su se svi osnovni algoritmi i strukture podataka provukli kroz "osnove programiranja".

Ko da je bitno kako se kurs zove, a ne šta se uči. Daj da vidimo sadržaj kurseva. Na specijalizovanim kursevima algoritama su verovatno egzotičnije teme.

Pritom, veliki logičar Andrej013 (kome Kurt Gedel nije ni do kolena) prodaje priču o tome kako su algoritmi potrebni malom broju ljudi, sa pozicije DSP-a, koji treba mnogo manjem broju ljudi. Čuj, kome treba DSP? I to treba izbaciti.

Naravno da ne treba svi da uče DSP, baš kao što ne treba svi da uče ni osnovne algoritme. Međutim, oni koji izučavaju računarstvo moraju da savladaju osnovne algoritme.
[ Marko_L @ 12.04.2014. 16:01 ] @
Ajde da ispoštujemo formu, pošto nemam formalno akademsko obrazovanje, pa da me Nedeljko ne izbaci iz diskusije :)

Evo ja sam stvorio jedan algoritam iz glave, implementacija izgleda ovako
Code:
For I as Integer = 1 To 100
Print "Marko"
Next

Mislim da je ovo ultimativni dokaz mog akademskog znanja. Dakle, upotrebio sam petlju! (vidi Nedeljko, petlja), kreirao sam od nule jedan algoritam (nazovimo ga Markovo ponavljujuće ispisivanje string podatka ili skraćeno MPISP da zvauči akademski), implementirao ga, testirao ga, optimizovao, iskoristio sam više različitih tipova podataka od koji je jedno Integer (celobrojna vrednost), a drugo string (prihvata bilo koju alfanumeričku vrednost), imam ulaz, izlaz, početak, kraj, razradu... pisanje dokumentacije je u toku.

E sad, ako sam položio ispit, možemo da se vratimo na normalnu diskusiju.
[ Nedeljko @ 12.04.2014. 17:01 ] @
Bojim se da je problem u tome što ceo taj tabor ne zna da uradi ništa konkretno, već samo da filozofira.

Ja kad pitam, niko da odgovori. Svejedno je koja je oblast u pitanju. Onda se javi neko sa nekom banalnom petljom. Daj bože da se takvi ne pitaju o sistemu obrazovanja.
[ Nymeria @ 12.04.2014. 17:09 ] @
Btw, Nedeljko, kakve veze imaju dve petlje sa pronalazenjem drugog najveceg elementa niza?
[ Nedeljko @ 12.04.2014. 17:38 ] @
Dobro da bar neko razmišlja pre nego što nešto napiše. Tačno, može i sa jednom, no ima rešenja i sa dve i to bih takođe priznao. Slobodno sam mogao da napišem da trebaju tri petlje i niko drugi ne bi ništa primetio.
[ Marko_L @ 12.04.2014. 18:09 ] @
Zato što niko predostavljam nije zainteresovan da rešava tvoje domaće zadatke sa jednom, dve ili tri petlje.

Uostalom, mmix ti je dao rešenje bez ijedne petlje, i mislim da smo time završili tu priču.
[ Nedeljko @ 12.04.2014. 18:35 ] @
Ne, nije dao rešenje jer ne odgovara postavci zadatka. Zadatak je da se to uradi pomoću prostih operacija, a ne složenih funkcija.

Nije stvar u rešavanju zadataka. Ovo nije kontrolni. U dve reči se može reći u čemu je suština, kad neko zna. U suprotnom će da piše kilometarske filozofske poruke.

Ovde najveći deo jednog tabora omalovažava znanje iz čistih kompleksa niže vrednosti. Eto, ti si me proglasio nemačem pojma samo zato što ne znaš da odgovoriš ni na jedno od postavljenih pitanja. Pročitaj smeće koje si pisao o "teorijskom znanju deklamovanja algoritama napamet". Kada postavim pitanje koji bi se standardni algoritmi negde koristili, niko ne zna ni da bekne, ai svi znaju da je dovoljno tablično znanje algoritama koje ne znaju nigde da primene jer ne prepoznaju situacije u kojima se pojavljuju. Eto, Andrej013 je pomenuo konkurentno programiranje, pa me živo zna šta zna o razrešavanju deadlock-ova u složenim situacijama. Da zna išta, ne bi pisao ono što je pisao jer se tu upravo koriste neki standardni algoritmi.
[ Braksi @ 12.04.2014. 18:52 ] @
Code:

10 PRINT BRAKSI
20 GOTO 10


basic rulec !
[ Marko_L @ 12.04.2014. 19:46 ] @
Nije Nedeljko nego ti banalizuješ stvari. A ne znam da li si svestan da većina ljudi koja ti se obratila na ovoj temi ima jako ozbiljne poslove i zarađuje jako ozbiljne pare u industriji. Zar stvarno misliš da bi neko to mogao, a da ne ume da napiše neki tamo trvijalni algoritam (a čija implementacija već odavno postoji, što ti je mmix i pokazao) i da ne zna šta su petlje. Zato niko i ne želi da rešava tvoje zadatke iz osnovne škole, jer ne vidi svrhu da tebi nešto dokazuju, niti je o tome tema.
[ Nedeljko @ 12.04.2014. 20:08 ] @
Citat:
Marko_L: Nije Nedeljko nego ti banalizuješ stvari. A ne znam da li si svestan da većina ljudi koja ti se obratila na ovoj temi ima jako ozbiljne poslove i zarađuje jako ozbiljne pare u industriji. Zar stvarno misliš da bi neko to mogao, a da ne ume da napiše neki tamo trvijalni algoritam (a čija implementacija već odavno postoji, što ti je mmix i pokazao) i da ne zna šta su petlje. Zato niko i ne želi da rešava tvoje zadatke iz osnovne škole, jer ne vidi svrhu da tebi nešto dokazuju, niti je o tome tema.

Podvučeno: O tome sve vreme pišem, ali neki uporno negiraju podvučeno. Jesmo li se napokon složili oko toga da se neće leba najesti u softverskoj industriji onaj ko ne zna da reši taj zadatak?

Ako je tako kao što tvrdiš, onda bih molio učesnike da pišu ono što misle, a ne suprotno tome samo da bi isterali neku poentu, jer je poenta koja se kosi sa činjenicama pogrešna. I onda mi se zamera da uništavam "kvalitetnu" diskusiju. Pre bih rekao da se ovde masovno krši tačka 4 pravilnika.

Tražim li mnogo?

Tema je da li trebaju algoritmi. Andrej013 kaže da je mnogo bolje znati konkurentno programiranje, nego algoritme, pa sam pitao kako se u složenim situacijama rešava deadlock problem. Ali ne, niko ne odgovara na pitanje ili zato što ne zna ili zato što se odgovor svodi na "deadlock problem se rešava algoritmima X i Y". Upravo je u tome poenta tih pitanja, jer ona dokazuju suprotno, a ovde mnogi imaju lični odnos prema svojim stavovima, pa ne smeju da žele da nisu u pravu, već im se kvalitet diskusije svodi na uzajamno naklapanje i tapšanje po ramenu, a kad neko iznese dokaze za suprotno, onda on remeti tu kvalitetnu diskusiju.

Podebljano: Taj zadatak se ovde tretirao kao hevi optimizacija ili zato što se ne zna rešenje ili zato što se piše suprotno sopstvenom mišljenju.

Plavo: U čemu je poenta rasprave ako se stavovi ne dokazuju? Zovi ti to argumentovanjem, obrazlaganjem, kojim god imenom, ali to se svodi na isto.
[ DaliborP @ 12.04.2014. 20:20 ] @
Citat:
Nedeljko: Jesmo li se napokon složili oko toga da se neće leba najesti u softverskoj industriji onaj ko ne zna da reši taj zadatak?

A ni sujetni tvrdoglavi likovi poput tebe. Dzaba znanje i algoritmi ako ne mozes da radis sa drugim ljudima, a citajuci sta pises verovatno i ne mozes da radis u timskom okruzenju. Mene cudi kako bi ti bilo koji HR intervju prosao sa takvim nadobudnim elitistickim stavom.
[ pexxi92 @ 12.04.2014. 20:20 ] @
Au vratio se Andrej ali nakon nekoliko stranica tako da je preskocio neka pitanja :)

Nema veze upravu je i on i ostali algoritmi su totalna glupost slazem se sa njima.

Ajmo ovako svi koji se slazu samnom da su algoritmi totalna glupost i treba ih izucavati samo kao neki opcioni kurs tamo pred kraj studija da mi se jave na PP. Mozemo da se uortacimo i otvorimo novi univerzitet, lupimo 10x manje cene od MIT, Stanford itd (ionako su preskupi za nepotrebno znanje osnovna logika kaze da ce masa ljudi doci kod nas), izbacimo algoritme, ubacimo samo ono sto ce treba na poslu (malo razmenimo iskustva sta je kome trebalo i to je to). Ako nema dovoljno para uzecemo kredit pa sta ja i onako ne vidim ni jednu rupu u ovom biznis planu.

Mozda Nedeljko nadje neku ali on je samo ostrasceni algoritmicar, poslednji stub odbrane davno proslog vremena programiranja iz '83 kad je brzina bila bitna a ne sad kad su procesori 10x brzi i memorija 100x veca. Sad sve radi tacno i odma sobzirom da je sve implementirano po bibliotekama. Pustite ga da mlati praznu slamu.

Andrej radi u NewYork-u, radio po raznim firmama sigurno ima mnoge kontakte mozemo tamo univerzitet glupi amerikanci ce placaju 100%.
[ plus_minus @ 12.04.2014. 20:25 ] @
Citat:
DaliborP:
Dzaba znanje i algoritmi ako ne mozes da radis sa drugim ljudima, a citajuci sta pises verovatno i ne mozes da radis u timskom okruzenju.


Pa, s' obzirom da je Ivo Andrić jednim delom i prorok, onda to može biti samo plus.. kad neko ne može da radi u "timskom" programerskom okruženju današnjice.
Ako ništa drugo, vreme je takvo da BREJVIK, koji je i dalje živ, traži plejstejšn 4. Dosadila mu trojka. A i hrana mu se ne sviđa.
[ Nedeljko @ 12.04.2014. 20:37 ] @
Citat:
DaliborP: A ni sujetni tvrdoglavi likovi poput tebe. Dzaba znanje i algoritmi ako ne mozes da radis sa drugim ljudima, a citajuci sta pises verovatno i ne mozes da radis u timskom okruzenju. Mene cudi kako bi ti bilo koji HR intervju prosao sa takvim nadobudnim elitistickim stavom.

U itekako sam radio u timskom okruženju i super se slagao. Bio je samo jedan manji incident koji sam istrpeo, a nisam prijavio.

Ja ne znam šta je od ovoga o čemu pišem elitizam. Vidi, jesam se obrazovao i upravo na taj način, kroz učenje rezultata divova, shvatio da je sve što ću ikada uraditi, bedna mrva u poređenju sa onim što su oni ponaosob uradili. Upravo sam ja ovde taj shvata vrednost tuđeg rada, a drugi tabor to omalovažava. "Ma, to je neko tamo ke*anje, teoretisanje, pusti to." Cenim ja i rad malih ljudi, koji kroz vrline mogu biti divovi. A što se rada tiče, svaki vredan i pošten rad je za poštovanje. Međutim, ne mogu da poštujem stav "pročitao sam dve knjige za 21 dan i sve što se uči na univerzitetu je ke*anje". To mi ne liči ni na vrednoću, ni na poštovanje tuđeg rada.
[ DaliborP @ 12.04.2014. 21:13 ] @
Mislim da je svima poodavno jasno da je tebi tvoje obrazovanje i skola najvaznija stvar u zivotu...bar to ponavljas u svakom postu pritom ne propustajuci da drugima kazes kako je sve ispod toga neprihvatljivo i jadno. Smetaju ti ljudi u IT industriji koji ne znaju algoritme? WTF?

Sam si izmislio na ovoj temi neke virtuelne programere koji ne znaju sta je petlja da bi ustvari svo ovo vreme pricao o sebi. Kakva kolicina sujete.
[ Andrej013 @ 12.04.2014. 21:17 ] @
Citat:
Nedeljko:
@Andrej013
Ja sam napisao konkretan zadatak, koji je za kontrolni iz programiranja i to kao jedan od lakših među četiri zadatka ukupno, koja se rade za 45 minuta. Za taj zadatak je masa krenula da cepe kvake o optimizaciji i štednji milisekundi. Ne, poenta je da ko ne zna da rešava zadatke tog nivoa, neće se leba najesti. Naravno da oni sa otprilike takvim osećajem za algoritme mogu lepo da žive od jednostavnijeg programiranja (što je vrlo dobro što i to može da se lpo naplati), a da se sa akademskim znanjem se radi za veće pare. No, ispod tog nivoa se neće leba najesti, osim sa nečim što osim takvih, ostali ne smatraju programiranjem (drimviver npr).

Što se izučavanja standardnih algoritama i struktura podataka tiče, naveo sam zadatke za takve sa tabelarnim znanjem algoritama i struktura podataka. Treba samo da prepoznaju šta im treba, ali džaba. Odgovor nisam dobio jer kad neko ne zna, on ne zna i onda prelazi na filozofiju. To je dokaz da to tabelarno znanje nije primenljivo.

...
Dakle, rešite mi drugi i treći zadatak čime god hoćete. Možete kakvim god hoćete jezicima/bibliotekama/alatkama da ih rešavate. Koristite i gugl, slobodno. Samo da čujem ideje rešenja.

Nadobudni covece, ja sam impresioniran ljubavlju koju ti ispoljavas prema sebi. Da li ti je ikada palo na pamet da bar pola ucesnika foruma nije ni procitalo tvoje zadatke jer si poznat kao nadobudni trol koji ima neku iluziju da je mister profesor u odnosu na ceo svet koji ce da ocenjuje validnost necijeg resenja?!
Evo, posto ti tu osnovnu cnjenicu niko nije objasnio, a ti bez tog objasnjenja nikada ne bi shvatio: ponizvajuce je bilo kome sa foruma da se dokazuje tebi, nedeljku, resavanjem nekih problema i zadataka koje postavljas i na osnovu kojih ces mozda biti u situaciji da nekom kazes "vidis, da si bolje ucio algoritme, 1000 sati a ne 100, mozda bi dosao do optimalnog resenja". Niko se nece spustati. Ako te zanima resavanje algoritama, idi na podforum namenjen tome i ostavi pitanja, ljudi slicni tebi ce ti odgovoriti i imacete interesantnu diskusiju. Nepojmljivo je to da si ti ubedjen da niko na forumu ne ume da nadje drugi najveci element niza u O(n) ili jos gore O(n^2) ili kako si vec sam zamislio. Niko ti nece resavati to. Mozda hoce par istomisljenika ili klinaca kako bi ti se dokazali i to je to.


Sledece, dogovori se sam sa sobom kada govoris o algoritmima, da li su to neki koji se provlace kroz sve predmete i koji mogu da se nauce, onako, usput, uz kaficu koje pominjes ovde:
Citat:
Nedeljko:
A gde to na ozbiljnom univerzitetu može da se diplomira CS bez algoritama? Da nisu možda ti osnovni algoritmi provučeni kroz ostale predmete?

ili su neki za koje je potrebno hiljadu sati da se savladaju koje si pominjao ranije a koje pominjes i ovde:
Citat:
Nedeljko:
Što se algoritama tiče, ti očigledno ne razumeš pojam algoritma. Ako si mislio da se završavaju na osnovnim operacijama sa nizovima, listama i drvetima, grdno si se zeznuo. Postoje i geometrijski i numerički i ostali algoritmi.



a onda vrhunac zablude, iluzije, ludosti i besa:
Citat:
Nedeljko:
Pritom, veliki logičar Andrej013 (kome Kurt Gedel nije ni do kolena) prodaje priču o tome kako su algoritmi potrebni malom broju ljudi, sa pozicije DSP-a, koji treba mnogo manjem broju ljudi. Čuj, kome treba DSP? I to treba izbaciti.

Da li sam ja ikada u zivotu rekao da je DSP najbitniji u bilo kom pogledu, da svaki CS ili CE ili EE student mora da zna metode i principe? Upravo suprotno. Budala je svako ko ide u skolu gde je DSP obavezan kurs osim ako ga to ne zanima. Signal processing i data analysis je vrlo usko polje u koje se nisu cak ni svi iz mog razreda udubljivali, ja jesam jer sam smatrao da je to interesantno i korisno znanje ako zelis da se bavis stvarima kojima sam se ja bavio i kojima se bavim. Sacuvaj boze da ja insistiram na poznavanju DSPa kod ljudi koji nece istima da se bave.
Molio bih te da mi ne stavljas reci u usta i da prestanes da govoris neistine. Hvala.
[ Andrej013 @ 12.04.2014. 21:33 ] @
Citat:
pexxi92:
Au vratio se Andrej ali nakon nekoliko stranica tako da je preskocio neka pitanja :)

Nema veze upravu je i on i ostali algoritmi su totalna glupost slazem se sa njima.

Vidi dete, ti nisi u stanju da ucestvujes u razgovoru sto se videlo iz ovog tvog posta:

Citat:
pexxi92:ja prosto ne vidim drugi nacin da odgovorim coveku koji uporno, i uprkos svim normalnim i logicnim argumentima tvrdi:

Ja ne znam algoritme i ja imam veliku platu => algoritmi su nepotrebni. Vrlo logicki konzistentan zakljucak. Takodje je pokazao svoje poznavanje statistike prilikom donosenja zakljucka o populaciji na osnovu reprezentativnog uzorka (sebe).

Pa ako je on analyst ja sam paradajz :).

iz vise razloga:

1. platu si ti naveo kao presudan faktor da mi natrljas na nos kako algoritmi moraju da se znaju da bi se imala veca plata pa sam ti ja obasnio u kakvoj iluziji zivis i da je to sto govoris glupost kojojm su te verovatno cika profesori ucili.
2. ne umes da citas jer sam vec naveo da me je na intervjuu za posao kojim se trenutno bavim, ispitivac detaljno cedio teoriju grafova koju ja smatram nepotrebnom a koju sam moram da naucim jer sam znao da se to pita na intervjuima. Tako da ne znam odakle ti uopste ideja da ne znam algoritme. To bubanje sortova sam smatrao glupim ali sam morao da naucim jer se na tome insistira.
3. vec sam napisao da ovo nije moje misljenje vec misljenje svih ljudi koje poznajem(cak mi je i shef koji me je ispitivao algoritme rekao da nisu potrebni ali da je to pitao po inerciji, kao i svi ostali ili zbog nedostatka boljeg nacina evaluacije aplikanata) a verujem da bi se i ti i nedeljko slozili sa mnom da pricamo oci u oci jer ovakve gluposti i tvrdoglavost niko normalan ne ispoljava u live komunikaciji. To je ono kada vas ja pitam kada ste koristili algoritme, pa nedeljko navede da mu je potreban bio presek elipse i prave-znaci nikada mu nije bilo potrebno to znanje ali je odbio da da direktan odgovor pa onda mulja.
4. Ne znam se pise odvojeno.
5. To nipodastavanje na kraju samo govori o ogorcenosti pubertetskog mozga ili nezrelog i nesrecnog pacenika. Niko te nije vredjao pa ne vidim razlog da ti mene vredjas, samo zato sto smatram duboko poznavanje algoritama manje biitnim nego sto ih ti smatras.


Izadji malo u grad, iskuliraj se, sada je kod vas subota, 10 uvece, a ti ovde laprdas o ozbiljnim stvarima sa odraslima bez da imas veze o cemu pricas. Nadji neku curu ili lika da vidis kako ce svet da ti bude lepsi.
[ Nedeljko @ 12.04.2014. 22:02 ] @
@DaliborP

Po svojoj iskompleksiranosti si poznat sa drugih tema. Tipičan metod zaključivanja ti je argument ad ignorance. Za nesposobne lenčuge me inače zabole sve dok ne dođu meni da se žale, a puni su forumi žalopojki što niko neće da im da posao i platu.

Čuj, ja pišem o svojoj školi. Ovde sam bio vučen za jezik, a nisam ni pisao o tome šta imam, a šta nemam, ali kad je neko iskompleksiran, on tu vidi ne znam šta.


@Andrej013

Pa, da, ja sam trolčina koja uništava kvalitet uzajamnog naklapavanja i tapšanja po ramenu.

Što se ocenjivanja tiče, ti si prvi koji je počeo da ocenjuje moje znanje logike, a kontrolni zadaci inače jesu za ocenjivanje.

Poenta je u tome da oni koji su zaista nešto uspeli u softverskoj industriji ne mogu da lupaju ovakve stvari kao taj tabor. Što se moje ljubavi prema sebi tiče, zaista je veća od moje ljubavi prema pogrešnim poentama, pa mi ne pada na pamet da se srozavam lupanjem besmislica braneći ljubljenu poentu.

Ti da znaš konkurentno programiranje kako treba, ne bi pisao epove o besmislu učenja algoritama. Naravno da ne znaš. Ili si neiskren i pričaš suprotno od onoga što misliš. Naravno da niko od "tabelarnih znalaca algoritama" ne zna da uradi drugi i treći zadatak, jer njihovo prepoznavanje u stvarnim situacijama ne piše u tabelama, muku mu ljutu. Da ponudim pare za rešavanje takvih zadataka, ali ne istih i pod kontrolom da će raditi sami, ne bi ih uradili za milion dolara (iako toliko nemam, ali i da se nađe sponzor, džaba).

Dakle, nije poenta u mom ocenjivanju drugih, već da ti zadaci dokazuju da su vaši stavovi pogrešni, Gde trebaju algoritmi? Eto tu - u konkurentnom programiranju. Dakle, nije odgovor bio "dobro, trebaju tu, ali koliko često", pa da se kaže da nema potrebe navoditi rešenja, jer je uhvaćena poenta, već se radi o strahu da neko prizna da nije u pravu ili o nerazmišljanju.

Ima ljudi sa malim znanjem, ali širokim shvatanjima, ali ne i obrnuto. Uska shvatanja uvek znače to što znače.

Ma, da, sve što su smislili velikani (sad neki *** misle da pišem o sebi) je neprimenljivo. Primenljivo je vaše pljuvanje po tuđim rezultatima.

Da, mislim da se pola tog tabora samo prave da su neki softverski profesionalci. Znanje programiranja im ne ide dalje od nalupavanja besmislica po advokasiju i ne bi znali da nađu drugi najveći element niza ni u vremenu O(n!).

Ima moj otac prijatelja koji je u firmi radio najteže fizičke poslove, ali nije sirovina da ne shvata značaj znanja i kreativnosti. Čovek je vredan, dobričina i poštenjačina i naravno da takve volim i cenim iako ne znaju algoritme.


Išao sam u toku ove diskusije u tri softverske firme nekim poslom (ne na intervju) i pitao za ovo one koji tamo rade i iskidali su se od smeha i još me pitali što se uopšte uključujem u takvu rapravu. Niko nije hteo ni da komentariše. Toliko se cene vaši stavovi u branši.
[ Nedeljko @ 13.04.2014. 08:49 ] @
Pitah za ovo sinoć još jednog ozbiljnog programera, koji je radio i radi ozbiljne stvari. Iskidao se kad je čuo da ne trebaju algoritmi. Ja ne znam iz kog naftalina da izvučem ozbiljnog softveraša koji bi podržao ili bar prokomentarisao taj stav. Ne smatraju ga vrednim komentarisanja.

Ja uopšte sebe ne doživljavam kao takvog. Radio sam na nekim ozbiljnim projektima, ali sebe u tom smislu smatram piručenim jer npr. neke bitne oblasti ne znam uopšte, tako da ne znam odakle uopšte neko i pomišlja da pričam o tome da sam ja nekakva elita, koja drugima nabija kriterijume. Gde sam tu ja u priči da su osnove programiranja bitne i zajedničke za sve oblasti i da se one svode na umeće implementacije unapred datog algoritma za neki zadatak i nanje osnovnih algoritama i struktura podataka? Jesam li ja u tome što znam druge stvari i bavim se kreativnim poslom, pa ne vidim potrebu da radim za nekoga ko to plaća kao šljaku? Ja se izvinjavam, ali to sam napisao tek kad se javio nadobudni "poslodavac" da mi lupa čvrge kako me ne bi zaposlio, kao da sam mu tražio zaposlenje. Neka zapošljava šljakere, a drugi (ako mu trebaju) će naravno tražiti odgovarajuće uslove i tu nema ljutnje. Naravno, prostije radnike ja isto cenim dok nisu nadobudni sa omalovažavanjem tuđih rezultata, ali naravno da neću da radim za iste pare.

No, znam ljude koji znaju svoj posao i nisu "stručnjaci za 21 dan", pa da kukaju što niko neće da im da posao i platu. Drugar koji predaje na fakultetu kaže da se masa upisuje sa jedinim znanjem slanja i primanja SMS poruka i da sa istim znanjem završe fakultet jer im to znanje to omogućava i da posle pričaju kako nema posla, jer eto, prijavili su se na ne znam koliko mesta i ne vredi. "Elita" sam u smislu da nesposobnjake ne smatram svojom konkurencijom, pa da mi smetaju. Mogu da im dam savet i zdravo.
[ DaliborP @ 13.04.2014. 09:46 ] @
Bolje ti opet pitaj ko su ti programeri sto ne znaju petlje, sve je bolje je od ove samopromocije.
[ Nedeljko @ 13.04.2014. 10:23 ] @
Ovde se promoviše stav da osnovni algoritmi koji se uče na studijama računarstva, najvećem broju softverskih inženjera ne trebaju i ja sam taj stav baš tako i preneo. Niko nije hteo ni da ga komentariše. Toliko o onima za koje sam se raspitao i znam da jesu programeri.

Sa tvojom primedbom se slažem. Ima trolova po forumima, koji se lažno predstavljaju kao softverski inženjeri, a da se raspitam o njima, video bi da se nisu nešto mnogo leba najeli od toga, što je jasno iz prve dve rečenice koje izvale.

Lako je "programirati" na advokasiju. Problem je napraviti nešto konkretno.
[ Braksi @ 13.04.2014. 12:43 ] @
jos 90tih godina se pricalo kako studije informatike nisu adekvatne i ne prate trendove. Mene je ta prica ispratila u Srbiji i docekala u Italiji. Tipa: zasto ucimo paskal ili modulu kad ima C++, java se tek nezirala. A php recimo nije postojao.

I tada je usvojena strategija i u Srbiji i svugde gde se studira CS (informatika i sl) da se ide na teoriju, da dakle spreme akademca za naucnu karijeru, a ako nece to onda neka ide sto bolje teorijski potkovan i izostrenih vijuga pa ce mu trebati manje vremena da bilo sta savlada u industriji, a bice i garant poslodavcu da ima potencijal za to.

Danas faksovi i dalje furaju taj fazon, a u medjuvremenu je jos doslo trista stvari - sto znaci da je bila odabrana dobra strategija....

A naravno, fax mora da se bavi teorijom jer nekako se moraju stvoriti kadrovi koji ce sutra raditi u hard sciencu i otkrivati nove stvari.
[ Burgos @ 13.04.2014. 13:28 ] @
Moram da odem po kokice
[ pexxi92 @ 13.04.2014. 13:28 ] @
Ajde sad da odgovorim i ozbiljnim ucesnicima foruma.

Tehnologije se stalno menjaju i ima ih puno. Takodje u IT sektoru postoji mnogo poslova kojim jedan softverski inzenjer moze da se bavi. Nemoguce je tokom fakulteta uciti ono "sto ce nam trebati za posao" iz prostog razloga sto neznamo kojim cemo se poslom baviti i zato sto neke stvari kojima cemo se baviti mozda jos cak i ne postoje u trenutku kada studiramo. Iz tog razloga najbolja strategija je obrazovati se teorijski (teorijsko obrazovanje ne podrazumeva bubanje teorema, definicija, algoritama i sl. vec poznavanje i razumevanje stvari na KONCEPTUALNOM nivou bezobzira na primenu, tehnologiju itd.) pa samim tim i vodeci svetski univerziteti insistiraju na tome. Sada postoji mnogo online platformi za obrazovanje (Coursera, Udacity, Edx) gde vodeci univerziteti nude svoje kurseve. Bacite pogleda na neki pa vidite kako se to radi na ozbiljnim mestima.
Algoritmi se ne uce da bi napamet znao neki sort koji ces posle pisati umesto da pozoves biblioteku vec da bi steko OSECAJ o njima. Kad tad ce doci trenutak kad neces moci da pozoves biblioteku vec da da napises deo koda (ne obimnu grafovsku optimizaciju za Gedelovu nagradu vec neki mini kod, recimo citanje nekog stream i neka operacija sa tiim (nalazenje 3 najveca elementa itd)), gde ce ti dobar osecaj itekako pomoci. Taj osecaj se ne moze steci obicnim iskustvom bez dobre teorijske podloge i argument "pa hej to je prosta logika smislicu ja to pametan sam" prosto nije dobar jer je logika takodje nesto sto se UCI i STICE a ne nesto sa cime se radjaju posebni umovi poput Andreja.
Znam mnogo (stvarno mnoogo) ljudi koji se bave IT poslovima (ne bih da upotrebim bas softverski inzenjeri). Za manji procenat bih reko da su dobri. Za nekolicinu koji dobro znaju algoritme ne bih reko da su dobri. Ali ne znam nikog ko je dobar a ne zna algoritme. Neko ko nije izucavao kurs o algoritmima i dobro razumeo kocice se oko osnovnih stvari, jos jednom nije poenta znati napamet 256 varijanti sortiranja, vec steci dobar osecaj i razumevanje a to se uci jedino na tom kursu.

To ne moze biti neki tamo opcioni kurs jer sta bi neko ucio bez toga? Buduci softverski inzenjer moze u buducnosti da se specijalizira u mnogo oblasti. Cak moze da radi i vise njih ili da menja oblast. Recimo baze, grafika, mreze, vestacka inteligencija i sve sto ide uz to. Nijednu od tih oblasti ne mozes ni da pocnes da pratis, ucis i razumes ako nemas dobro znanje iz algoritama.

Razumem nerazumevanje mnogih ljudi ovde jer se u Srbiji kurs o algoritmima izucava na pogresan nacin (uglavnom, retko ko ovde to lepo zna), tj manje vise uce se neki algoritmi kao recept, pobroje se neke prednosti i mane par primena itd. Nema sustine pa samim tim ni razumevanja.

Pogledajte kurs sa MIT,Stanforda ili Princetona pa cete videti za odredjeno vreme koliko se vas kvalitet znanja iz svih oblasti povecao. Videcete i sustinsku razliku izmedju onogo sto vi mislite da ovaj kurs predstavlja i sta zaista predstavlja. Ne zelim nikog da ubedjujem sta treba da zna i sta je potrebno i nepotrebno. Jednostavno pogledajte par kurseva, vidite sta vodeci strucnjaci iz cs-a imaju da kazu o tome, pogledajte intro video pa odlucite sami.

Pozdrav
[ Ivan Dimkovic @ 13.04.2014. 15:04 ] @
Citat:
Odin D.
Skole sam spomenuo u kontekstu mog prvog javljanja, a sto se odnosilo na 'promjenjivost' uslova na trzistu programiranja, i primjere koje sam navodio sam navodio kao ilustraciju da se stvari mijenjaju i jedino u tom kontekstu ima smisla to sto sam rekao, a ne kako ovo danas nevalja.


Jasno je da se stvari menjaju kako svuda tako i u softverskom inzenjeringu i informatici.

Medjutim, ima jedna interesantna stvar: za sada, informatika iz nekih razloga i dan danas ima slicne probleme kao pre 20-30-40 godina.

Jedina razlika je u kolicini racunarske snage dostupne za neki posao i dostupnim okruzenjima. Problemi su manje-vise isti. Samo ih ima vise u obimu zato sto je moguce resiti ih vise zbog razvijenosti tehnike i sw. okruzenja.

Recimo, jedan primer: u proteklih 2-3 godine je hit paralelno programiranje, pogotovu preko GPGPU-ova koji se koriste za ubrzanje podesnih stvari u grafici, masinstvu, hemiji, bioinzenjeringu, molekularnoj biologiji, nuklearnoj fizici, medicini itd... Ako je neki problem podesan za GPU (citaj: mozes da ga razbijes na vise stotina paralelnih pod-procesa), mozes dobiti ubrzanja koja su trocifrena u odnosu na CPU, sto je do skoro bilo necuveno za jednu generaciju tehnologije. Trocifrena ubrzanja nisu maciji kasalj zato sto ih je nemoguce nadomestiti prostim oslanjanjem na Murov zakon, osim ako nisi spreman da cekas 7-8 godina sto je u industriji neprihvatljivo.

E vidi sad, problemi koji su ispred inzenjera koji treba da raspise nesto za GPGPU su isti problemi koji su morili nekog PhD-a pre 30-40 godina na univerzitetskom superracunaru.

Jedino sto danas svako u kuci i ma GPU koji je jaci od tog superracunara i sto danas taj problem resavaju gomile softverskih inzenjera na poslu u svakodnevnim problemima dok je to pre 30-40 godina bilo rezervisano za istrazivace nekolicine vodecih instituta na svetu.

E sad ide najbitniji deo: problematika je ista. I danas, bas kao i pre 30-40 godina, ne postoji kompajler koji ce tvoj serijski algoritam paralelizovati i ustedeti ti posao. Svake bogovetne godine vec vise decenija u nazad se ispuca boga pitaj koliko doktorskih disertacija o automatskoj paralelizaciji, ali svi ti PhD-ovi rade sa ogranicenim "lab" primerima. Cim im das nesto komplikovanije, zaboravi. Kompajler ti nece pomoci - zbuni ga malo drugacija petlja, a kamo li spagetti-kod pisan godinama/decenijama.

ZATO su danas dobri sw. inzenjeri i dalje placeni ogromne pare, zato sto ni dan danas ne mozemo da ih zamenimo robotima ili kompajlerima.

I zato su kursevi sw. inzenjerstva i informatike sa istim osnovama danas kao i pre 30 godina. Zato sto su te osnove i dalje neophodne.

Slazem se da ce mozda jednog dana biti moguce dati high-level problem nekoj vestackoj inteligenciji koja ce ocas posla da razbije taj problem i implementira ga na konkretnoj arhitekturi i da buduci inzenjeri nece morati da znaju vise nacina da implementiraju f*ckin spinlock.

Veruj mi ja bih bio svakako vrlo zadovoljan da tako nesto postoji i da lepo samo kupim licence za taj magicni kompajler umesto da placam skupe sw. inzenjere.

Ali taj dan, bar danas, je u neizvesnoj buducnosti i, u najmanju ruku, daleko od nas.
[ Ivan Dimkovic @ 13.04.2014. 15:24 ] @
Citat:
Braksi:
jos 90tih godina se pricalo kako studije informatike nisu adekvatne i ne prate trendove. Mene je ta prica ispratila u Srbiji i docekala u Italiji. Tipa: zasto ucimo paskal ili modulu kad ima C++, java se tek nezirala. A php recimo nije postojao.

I tada je usvojena strategija i u Srbiji i svugde gde se studira CS (informatika i sl) da se ide na teoriju, da dakle spreme akademca za naucnu karijeru, a ako nece to onda neka ide sto bolje teorijski potkovan i izostrenih vijuga pa ce mu trebati manje vremena da bilo sta savlada u industriji, a bice i garant poslodavcu da ima potencijal za to.

Danas faksovi i dalje furaju taj fazon, a u medjuvremenu je jos doslo trista stvari - sto znaci da je bila odabrana dobra strategija....

A naravno, fax mora da se bavi teorijom jer nekako se moraju stvoriti kadrovi koji ce sutra raditi u hard sciencu i otkrivati nove stvari.


Danas postoji dosta trogodisnjih kurseva (nekada se to zvalo "visa skola" valjda) koji ne spremaju za naucnu karijeru vec za industriju.

Tako da ljudi koji zele industriju a ne naucnu karijeru (vecina ljudi, dakle) mogu da izaberu ili da studiraju 3-4 godine, ili da krenu sami da se obrazuju i uce kuci to sta vec misle da ce im trebati. U principu kada je softver u pitanju, radi i jedno i drugo.

Kao i u svemu u zivotu tako i tu vazi pravilo: ako je nesto cime se bavis moguce nauciti za 21 dan, sasvim sigurno je da ce i konkurencija biti izuzetno visoka.
[ pexxi92 @ 13.04.2014. 15:41 ] @
Citat:
Ivan Dimkovic:
Slazem se da ce mozda jednog dana biti moguce dati high-level problem nekoj vestackoj inteligenciji koja ce ocas posla da razbije taj problem i implementira ga na konkretnoj arhitekturi i da buduci inzenjeri nece morati da znaju vise nacina da implementiraju f*ckin spinlock.

Veruj mi ja bih bio svakako vrlo zadovoljan da tako nesto postoji i da lepo samo kupim licence za taj magicni kompajler umesto da placam skupe sw. inzenjere.

Ali taj dan, bar danas, je u neizvesnoj buducnosti i, u najmanju ruku, daleko od nas.



Da ali i kad taj dan dodje trebace neki novi inzenjeri koji ce da projektuju i realizuju takve sisteme. A to za to ce biti potrebno itekako vise znanja nego sad a pogotovu algoritmi :).
[ Braksi @ 13.04.2014. 17:23 ] @
Citat:
Ivan Dimkovic:
Citat:
Braksi:
jos 90tih godina se pricalo kako studije informatike nisu adekvatne i ne prate trendove. Mene je ta prica ispratila u Srbiji i docekala u Italiji. Tipa: zasto ucimo paskal ili modulu kad ima C++, java se tek nezirala. A php recimo nije postojao.

I tada je usvojena strategija i u Srbiji i svugde gde se studira CS (informatika i sl) da se ide na teoriju, da dakle spreme akademca za naucnu karijeru, a ako nece to onda neka ide sto bolje teorijski potkovan i izostrenih vijuga pa ce mu trebati manje vremena da bilo sta savlada u industriji, a bice i garant poslodavcu da ima potencijal za to.

Danas faksovi i dalje furaju taj fazon, a u medjuvremenu je jos doslo trista stvari - sto znaci da je bila odabrana dobra strategija....

A naravno, fax mora da se bavi teorijom jer nekako se moraju stvoriti kadrovi koji ce sutra raditi u hard sciencu i otkrivati nove stvari.


Danas postoji dosta trogodisnjih kurseva (nekada se to zvalo "visa skola" valjda) koji ne spremaju za naucnu karijeru vec za industriju.

Tako da ljudi koji zele industriju a ne naucnu karijeru (vecina ljudi, dakle) mogu da izaberu ili da studiraju 3-4 godine, ili da krenu sami da se obrazuju i uce kuci to sta vec misle da ce im trebati. U principu kada je softver u pitanju, radi i jedno i drugo.

Kao i u svemu u zivotu tako i tu vazi pravilo: ako je nesto cime se bavis moguce nauciti za 21 dan, sasvim sigurno je da ce i konkurencija biti izuzetno visoka.


Ima, da.

Mislim sve se komercijalizovalao pa i to. Dobra stvar u smislu da se eto ima neki papir, sto se tice efektivnog znanja veliko bespotrebno cimanje polaganja ispita, a sve se moze nauciti preko interneta. Bilo i ostalo... Cak i tradicionalni faksovi sada posle Bologne nude coveku vec posle 3 godine papir, ako mu se smucio CS...

Zaista, programiranje je strava karijera. Mislim, jedna od retkih karijera gde mozes postici mnogo a da ne ostavish muda na faksu i raznim ispitima posle kao sto to rade (doktori, pravnici, razni inzinjeri projektanti).





[ Nedeljko @ 13.04.2014. 17:29 ] @
Braksi, koje se to preko potrebne stvari privredi ne uče na studijama? Koliko znam, uče se od nabrojanih stvari i konkurentno programiranje i baze i veb. Koja se oblast ne radi?

ventura, kako si došao do tog fenomenalnog zaključa? Na osnovu toga što tvrdi da je nabiflao sto algoritama od kojih ne zna da primeni nijedan, pa je stekao utisak da su nepromenljivi?
[ Braksi @ 13.04.2014. 18:16 ] @
upadamo u spiralu vecitog pitanja: studirati ili ne ?

sve je ok. Neka radi ko kako misli. Kao sto rekoh programiranje jos nije zakonski ustrojeno od drzave pa covek ima izbora i da bude fantastican, a samouk !

U medicini ili pravu to nije moguce.
[ Ivan Dimkovic @ 13.04.2014. 18:20 ] @
Citat:
Braksi:
Citat:
Ivan Dimkovic:
Citat:
Braksi:
jos 90tih godina se pricalo kako studije informatike nisu adekvatne i ne prate trendove. Mene je ta prica ispratila u Srbiji i docekala u Italiji. Tipa: zasto ucimo paskal ili modulu kad ima C++, java se tek nezirala. A php recimo nije postojao.

I tada je usvojena strategija i u Srbiji i svugde gde se studira CS (informatika i sl) da se ide na teoriju, da dakle spreme akademca za naucnu karijeru, a ako nece to onda neka ide sto bolje teorijski potkovan i izostrenih vijuga pa ce mu trebati manje vremena da bilo sta savlada u industriji, a bice i garant poslodavcu da ima potencijal za to.

Danas faksovi i dalje furaju taj fazon, a u medjuvremenu je jos doslo trista stvari - sto znaci da je bila odabrana dobra strategija....

A naravno, fax mora da se bavi teorijom jer nekako se moraju stvoriti kadrovi koji ce sutra raditi u hard sciencu i otkrivati nove stvari.


Danas postoji dosta trogodisnjih kurseva (nekada se to zvalo "visa skola" valjda) koji ne spremaju za naucnu karijeru vec za industriju.

Tako da ljudi koji zele industriju a ne naucnu karijeru (vecina ljudi, dakle) mogu da izaberu ili da studiraju 3-4 godine, ili da krenu sami da se obrazuju i uce kuci to sta vec misle da ce im trebati. U principu kada je softver u pitanju, radi i jedno i drugo.

Kao i u svemu u zivotu tako i tu vazi pravilo: ako je nesto cime se bavis moguce nauciti za 21 dan, sasvim sigurno je da ce i konkurencija biti izuzetno visoka.


Ima, da.

Mislim sve se komercijalizovalao pa i to. Dobra stvar u smislu da se eto ima neki papir, sto se tice efektivnog znanja veliko bespotrebno cimanje polaganja ispita, a sve se moze nauciti preko interneta. Bilo i ostalo... Cak i tradicionalni faksovi sada posle Bologne nude coveku vec posle 3 godine papir, ako mu se smucio CS...

Zaista, programiranje je strava karijera. Mislim, jedna od retkih karijera gde mozes postici mnogo a da ne ostavish muda na faksu i raznim ispitima posle kao sto to rade (doktori, pravnici, razni inzinjeri projektanti).


Okreni-obrni, to sto se uci na trogodisnjem kursu informatike ces nauciti ili tamo, ili ces morati da naucis sam.

Mozda ako ucis sam stavis vise akcenta na jednu stvar i smanjis neku drugu, ali to sto se uci je vec sazeto.

Ideja tih trogodisnjih kurseva fokusiranih na produkciju radne snage za industriju (a ne naucno napredovanje) je upravo da im se pruzi solidna selekcija stvari za koje postoji dobra sansa da ce im trebati kasnije u profesionalnom zivotu.

Prednost tih "upakovanih" kurseva je sto ne moras da razmisljas sta da ucis i, takodje, ako se radi o iole ozbiljnoj ustanovi imas objektivan nacin da proveris svoje znanje (ispit). Mana je sto moraju biti napravljeni tako da budu dovoljno siroki, sto znaci da nikom ponaosob nece trebati 100% gradiva vec mozda pola ili trecina, ali za svakog je u pitanju razlicita trecina.

Ako osoba od 18 godina dobro zna sta hoce moze sam/sama sebe da skoluje ako je sposoban/na za to, ali to zahteva jos neke dodatne sposobnosti koje nije potrebno posedovati ako se ide na "prepakovane" kurseve.

Tacno je da svega ima na Internetu danas, ukljucujuci i najkvalitetniju literaturu ali:

a) Moras znati sta da ucis - gradivo koje spada u informatiku i sw. inzenjering je ogromno
b) Moras biti sposoban da objektivno i nepristrasno ocenjujes svoje znanje kako bi mogao da znas kada si nesto naucio
c) Moras znati gde/koga da pitas kada ti nesto ne ide, kako bi mogao da naucis to sto jos nisi savladao

Prva stavka nije toliko teska, odes na neki dobar uni pa skines program ili pitas nekoga ko je etabliran (ali: biti strucnjak u necemu nije isto sto i biti u stanju da druge edukujes, sto ukljucuje i razmisljanje o tome sta nekom tacno treba).

Treca stavka je isto resiva lako danas sa forumima. Ima puno strucnih foruma (ukljucujuci i ES, naravno) gde ima strucnih ljudi koji ce vrlo rado pomoci nekome ko pokusava nesto novo da nauci.

Medjutim druga stavka je nesto o cemu treba dobro razmisliti pre nego sto se odluci da covek sam sebi bude tutor. IMHO, ta stavka je po meni najveci razlog zasto bi nekome savetovao da upise skolu: nisu svi sposobni da sebe ocenjuju nepristrasno, a u ovom slucaju je to vrlo bitno.
[ Nedeljko @ 13.04.2014. 18:27 ] @
Ma, to je OK, samo što taj pristup učenja od kuće ima mane:

1. Mnogo je teže jer si prepušten samom sebi, a u obrazovnom sistemu imaš pomoć nastavnog osoblja,

2. Moraš biti dovoljno samo kritičan prilikom samoocenjivanja. Tamo imaš povratnu informaciju u vidu ocene od kompetentnih ljudi.

Naravno, ako nemaš ambicije koje zahtevaju akademsko znanje, onda može da bude i lakše.

Takođe, ima i onih koji kroz samoobrazovanje postignu mnogo više od velike većine akademaca, samo je takvih malo.

Sve je to super, samo to ne znači da se na univerzitetu radi nešto levo.
[ Braksi @ 13.04.2014. 18:34 ] @
imate danas Kahn academy, npr. U principu ja vec zadnjih 5 godina koristim youtube za sve sto sam uvek htedo da znam a nisam ima koga da pitam... Jerbo, dok se neko smiluje na forumu da ti nesto dogovori, prodje voz...

Da, slazem se i ne sporim da je lakse razvijati se pod necijom akademskom palicom, jedino sto sam rekao da to nije nesto sto ne kosta. Ne samo para, nego i vremena i zivaca. Npr ako sam ucis PHP radices i ici napred neprikedno, a na faksu oni posto moraju da te nekako ocene reci ce. Ne, sad stani i evo ti tipski zadaci kakakvi idu na pismenom i to strebaj da bi prosao. I tako ti tapkas na tom novou dok onaj samouki pici napred...

Uostalom i samouki danas mogu da skinu komplet nastavni plan i program bilo kog smera...
[ Ivan Dimkovic @ 13.04.2014. 18:46 ] @
@Braksi, pazi, ako ti je plan da, recimo, implementiras web aplikacije u PhP-u, prilicno sam siguran da ti danas nikakav fakultet nije potreban za to (ni 3 a ni 4-5 godina).

Znanje da pocnes da radis u tom segmentu IT industrije i da budes u stanju da servisiras potrebe vecine klijenata (posto vecina stvari spadaju u jednostavne biznis logike bez potrebe da znas neke napredne computer-science koncepte) mozes steci za nekoliko meseci, pa bi 4 godine studiranja bile bacanje vremena zato sto za 4 godine mozes da nabacis 3.5 godine prakse i da za te 4 godine ukupno budes mnogo dalje u tom poslu od kolege koji je za te 4 godine studirao.

Naravno, to ima i svoju losu stranu: pisanje relativno jednostavnih biznis logika za sajtove u PHP-u je posao sa jako velikom konkurencijom koja spusta cenu, iz prostog razloga zato sto je za taj posao moguce savladati neophodne koncepte za nekoliko meseci pa imas puno ljudi koji isto tako razmisljaju.

Takodje, kojekakvi CMS sistemi su u prosloj deceniji eliminisali potrebu za citavim segmentom koji je nekada davno bio radjen "peske". Tako sad neka mala firma sa 10-tak PHP kodera specijalizovanim za neki CMS moze da opsluzuje boga pitaj koliko klijenata zato sto vecini tih klijenata malo customizovani CMS radi posao.

Citat:

Uostalom i samouki danas mogu da skinu komplet nastavni plan i program bilo kog smera...


Tacno. Danas (hvala bogu) to nije problem, samouki moze da se obrazuje po planu i programu MIT-a ako hoce. Nikada ranije nije bilo toliko jednostavno doci do toliko kvalitetne literature.

Daleko zahtevnija stvar je sposobnost da objektivno ocenis svoje znanje kako bi znao sta si usvojio a sta jos moras da ucis.

Problem sa tim zahtevom je sto nije samo u pitanju tehnicka stvar (mozes da skines i testove), vec tu igra ulogu i karakter.
[ Braksi @ 13.04.2014. 18:56 ] @
naravno. Da bi danas mogao da se naplatis moras imati distinction ili edge u necemu.

Pitanje je kako do toga ?

Kad neko ima 18 godina ja mislim da vredi investirati 4 godine nekog krvavog akademskog strebanja po mogucstvu na sto prestiznijoj instutuciji (ako se ima $) jer posle toga sve ide lakse. Puno lakse...

Ne samo sto imas prestiznu diplomu, vec si radio i bio mentorison od strucnjaka koji znaju sta je u trendu pa ces lako skliznuti u industriju, plus stekao si networking sa kolegama za sutra...

Ja sam samo hteo da kazem, da postoje svakako i ljudi koji mogu brze i bolje pogotovo danas i pogotovo u programiranju...
[ hotchimney @ 13.04.2014. 22:54 ] @
Citat:
Nedeljko

u obrazovnom sistemu imaš pomoć nastavnog osoblja

Za to prvi put čujem. Gde to ima?
[ Burgos @ 13.04.2014. 22:57 ] @
Na ETFu uglavnom imaš, samo je potrebno da se interesuješ, a ne da završavaš fakultet zbog diplome.
[ Nedeljko @ 13.04.2014. 23:04 ] @
@hotchimney

Imaš to manje-više svuda. Druga je stvar što neko to što mu se traži na ispitu doživljava kao postavljanje prepreka i samim tim nastavno osoblje kao neka smetala na putu do diplome. Ti ljudi te prvo nečemu uče, pa onda to pitaju. Jedini smisao ocenjivanja koji vidim je da student dobije povratnu informaciju o tome kako je savladao kurs, a neki to doživljavaju kao nešto što treba neko da im plati.


@Braksi

Ima i onih koji nisu studirali, ali su rano skupljali iskustvo i skupljali znanje i za neki broj godina se nabildovali da su daleko ispred većine akademaca. No, takvih je malo i svako ko o tome razmišlja treba da zna da to uopšte nije lako. Kad čujem kako univerziteti cepy kvake za svoje potrebe bez da to odgovara potrebama društva, naravno da ne mogu da e složim sa tim.

Znam vrlo dobro da je 90-tih program na studijama računarstva na MATF BG bio jako zaostao. To nema ama baš nikakv veze sa "jakom teorijom". Taj izraz bi neki neupućeni koristili kao eufemizam. Međutim, "jaka teorija" bi značila da je taj fakultet izbacio nekog novog Dijsktru, što se nije desilo. Izgleda da je bilo profesora koji su kočili osavremenjivanje i to je sve. Taj problem je postojao na tom jednom fakultetu i uopštavanje tog stanja na globalno u svetu je neosnovano. Međutim, i tamo su se stvari kasnije promenile. Danas se uči sve što je glavno u savremenoj softverskoj industriji. Na ETF-u je postojao sasvim drugi problem, o kome neću ponovo da pišem. No, u svakom slučaju se ne mogu izvlačiti opšti zaključci na osnovu uzorka obima jedan.
[ hotchimney @ 13.04.2014. 23:13 ] @
^Burgos

Izvini, da li imaš nekih interesa na ETF-u?
[ hotchimney @ 13.04.2014. 23:19 ] @
^Nedeljo

Ako neko plaća studiranje red je i da nešto dobije za taj novac a ne samo naslove knjiga ili prepisivanje na tablu iz tih knjiga na predavanjima.

Smešno je videti profesora sa posivelom kosom koji za studenta po pravilu nema vremena (osim možda par sekundi) ali zato kad se pojavi neka "masna" studentkinja onda je stolica na "izvolte koleginice" a vremena je za nju na pretek.
[ Burgos @ 14.04.2014. 00:50 ] @
Nemam, osim što sam diplomirao tamo, i koristio pomoć nastavnog osoblja kada god mi je bila potrebna. Da se neko ne uhvati za prvu rečenicu, postoje i oni koje baš zabole što si ti tu, zato sam i napisao "uglavnom". Pisao sam mejlove o bilo čemu, dobijao odgovore na sva pitanja, išao na konsultacije o bilo čemu, bavio se vannastavnim aktivnostima, itd., itd. - čak su mi i oko administracije pomagali.



[Ovu poruku je menjao Burgos dana 14.04.2014. u 02:02 GMT+1]
[ hotchimney @ 14.04.2014. 07:28 ] @
Hm, zanimljivo. Sa druge strane poznati su mi slučajevi studenata koji nisu mogli da dobiju odgovore na svoja pitanja. Šta više u mnogim situacijama asistensti/profesori bi se pravili "blesavi".

Znaš, ne postoje mehanizmi da se spreče manipulacija.
[ bojan_bozovic @ 14.04.2014. 08:00 ] @
Citat:
Braksi:
jos 90tih godina se pricalo kako studije informatike nisu adekvatne i ne prate trendove. Mene je ta prica ispratila u Srbiji i docekala u Italiji. Tipa: zasto ucimo paskal ili modulu kad ima C++, java se tek nezirala. A php recimo nije postojao.

I tada je usvojena strategija i u Srbiji i svugde gde se studira CS (informatika i sl) da se ide na teoriju, da dakle spreme akademca za naucnu karijeru, a ako nece to onda neka ide sto bolje teorijski potkovan i izostrenih vijuga pa ce mu trebati manje vremena da bilo sta savlada u industriji, a bice i garant poslodavcu da ima potencijal za to.

Danas faksovi i dalje furaju taj fazon, a u medjuvremenu je jos doslo trista stvari - sto znaci da je bila odabrana dobra strategija....

A naravno, fax mora da se bavi teorijom jer nekako se moraju stvoriti kadrovi koji ce sutra raditi u hard sciencu i otkrivati nove stvari.


Studije su bile adekvatne! Moram li da spominjem da se u paskalu adi i moduli članovi niza indeksiraju od jedan, a ne od nula kao u C/C++ i sa te strane su striktniji (kao i u koriscenju interface-implementation blokova umesto header fajlova). A što je jave i php tiče, tu samo može da se kaže da ti jezici nemaju operator overloading (nema ni paskal, ali je iz 1970 kad su kompjuteri imali 64K RAM).Besmislen je jezik u 2014 koji nema operator overloading, uz silne GHz i Gb koje imamo na raspolaganju.

Po mom skromnom mišljenju, najbolje je početi sa nečim što ima poentere i pun OOP, ali je takodje low-level, i prčkati i po low level stvarima (nekim senzorima ili čak malom robotu). Tu postoje C/C++ ili Ada. Sa toga prelaziš bez problema na taj php, jer imaš jednostavnije koncepte i manju biblioteku.

Inače, svakom se jeziku može zameriti - štos je u tome da je bolje da odmah zagrizeš i vidiš da li je programiranje za tebe ili nije. Pisanje skripti u PHP to ne može da dočara ni na koji način, i može samo početniku dati lažnu predstavu da nešto zna - nemam opet ništa protiv onih koji žive od PHP - radi se o tome ne da li neko ima znanje van PHP, već vidi znanje i van PHP.
[ Nedeljko @ 14.04.2014. 08:20 ] @
Citat:
hotchimney: Hm, zanimljivo. Sa druge strane poznati su mi slučajevi studenata koji nisu mogli da dobiju odgovore na svoja pitanja. Šta više u mnogim situacijama asistensti/profesori bi se pravili "blesavi".

Znaš, ne postoje mehanizmi da se spreče manipulacija.

Nađe se tu i tamo poneka budala. Međutim, ovakve priče su neosnovane, osim ako se ne odnose na poneki izuzetak. To su priče loših studenata, protiv kojih se ceo svet urotio, pa zato nisu uspeli. Naravno da možeš da pitaš i na času i na konsultacijama. Tada su dužni da se bave tobom, a pozabave se i u hodniku i drugim vidovima komunikacije.

[Ovu poruku je menjao Nedeljko dana 14.04.2014. u 09:41 GMT+1]
[ bojan_bozovic @ 14.04.2014. 08:25 ] @
Citat:
Nedeljko: Nađe se tu i tamo poneka budala. Međutim, ovakve priče su neosnovane, osim ako se ne odnose na poneki izuzetak. To su priče loših studenata, protiv kojih se ceo svet urotio, pa zato nisu uspeli.


I meni se tako čini.
[ Nedeljko @ 14.04.2014. 08:58 ] @
Citat:
bojan_bozovic: Studije su bile adekvatne! Moram li da spominjem da se u paskalu adi i moduli članovi niza indeksiraju od jedan, a ne od nula kao u C/C++ i sa te strane su striktniji (kao i u koriscenju interface-implementation blokova umesto header fajlova). A što je jave i php tiče, tu samo može da se kaže da ti jezici nemaju operator overloading (nema ni paskal, ali je iz 1970 kad su kompjuteri imali 64K RAM).Besmislen je jezik u 2014 koji nema operator overloading, uz silne GHz i Gb koje imamo na raspolaganju.

Po mom skromnom mišljenju, najbolje je početi sa nečim što ima poentere i pun OOP, ali je takodje low-level, i prčkati i po low level stvarima (nekim senzorima ili čak malom robotu). Tu postoje C/C++ ili Ada. Sa toga prelaziš bez problema na taj php, jer imaš jednostavnije koncepte i manju biblioteku.

Inače, svakom se jeziku može zameriti - štos je u tome da je bolje da odmah zagrizeš i vidiš da li je programiranje za tebe ili nije. Pisanje skripti u PHP to ne može da dočara ni na koji način, i može samo početniku dati lažnu predstavu da nešto zna - nemam opet ništa protiv onih koji žive od PHP - radi se o tome ne da li neko ima znanje van PHP, već vidi znanje i van PHP.

Studije na MATF nis bile odgovarajuće (ali, to ne treba uopštavati na druga mesta) jer se nije radila nijdna GUI biblioteka, niti višenitna obrada, niti konkurentno programiranje itd. Sve je to već postojalo u okviru WinNT-a i UNIX-a. No, od 2000-te stanje se tamo promenilo na bolje.
[ Nedeljko @ 14.04.2014. 09:32 ] @
I još nešto. U pakalu indeksi nizova ne počinju od jedinice, već od bilo koje vrednosti koju upiše progrmer u definiciji niza.

Što se preklapanja operatora tiče, to nema veze se gigahercima, već sa prioritetom operatora, koji je određen jezikom i ne mora odgovarati prioritetu nekoj primeni, pa može da zbuni programera. Recimo, u matematici stepenovanje ima viši prioritet od množenja i desno je asocijativno, dok je u C++ jeziku operator ^ levo asocijativan i ima niži prioritet od operatora *. U javi taođe ne postoje neoznačeni celi brojevi, što takođe nema veze sa gigahercima, već sa greškama koje nastaju prilikom mešanja (od strane programera) označenih i neoznačenih celih brojeva.
[ tdusko @ 14.04.2014. 09:49 ] @
Citat:
Nedeljko: Studije na MATF nis bile odgovarajuće (ali, to ne treba uopštavati na druga mesta) jer se nije radila nijdna GUI biblioteka, niti višenitna obrada, niti konkurentno programiranje itd. Sve je to već postojalo u okviru WinNT-a i UNIX-a. No, od 2000-te stanje se tamo promenilo na bolje.
Nasuprot tome, u moje vreme(pre 9 godina) na FON-u se na principima programiranja, druga godina jos uvek opsta za sve smerove, prvi semestar negde u sredini rade Java GUI biblioteke i visenitno programiranje. Mozes da zamislis koji je to horor. Osim sacice njih koji su dosli iz matematickih gimnazija i nekolicine entuzijasta, ogromna vecina nije bila u stanju da prati ni predavanja, a ni vezbe koje se nisu radile u kabinetima nego u jednoj slusaonici na projektoru sa 100 ljudi. Kasnije, u drugom semestru predavanja je preuzeo drugi profesor sa drugom ekipom gde su se iz nedelje u nedelju studenti postepeno uvodili u principe programiranja, a vezbe su konacno dobile pravi oblik u kabinetima gde je svako radio zadatak na dedicated racunaru. Sad kad pogledam iz ove perspektive, tom profesoru koji studente uci visenitnom programiranju posle 2 meseca na principima programiranja bi trajno zabranio nastavu na tom predmetu jer em sto vecina nije bila u stanju da usvoji ta znanja, kod mnogih je proizvelo otpor ka programiranju i mnogi se nikad nisu od toga oporavili jer su ubedili sebe da to nije za njih.
[ bojan_bozovic @ 14.04.2014. 09:57 ] @
Citat:
Nedeljko: I još nešto. U pakalu indeksi nizova ne počinju od jedinice, već od bilo koje vrednosti koju upiše progrmer u definiciji niza.


Hvala što si me podsetio, tako je.
[ Burgos @ 14.04.2014. 10:27 ] @
E, da se mi onda vratimo na temu :).

Citat:

Besmislen je jezik u 2014 koji nema operator overloading, uz silne GHz i Gb koje imamo na raspolaganju.


Glavni razlog zašto Java nema overloading, ako se sećam dobro Goslingove izjave je slično: "Kada pogledate kod, sve mora da ti bude jasno. Ako u C++-u vidite a + b, vi ne možete znati šta se zapravo dešava, bez da gledate definiciju klase. Mislim da je ovo prilično besmisleno, al' ajde - samo su ostavili prostor drugim jezicima da preotmu deo kolača.

Citat:
Po mom skromnom mišljenju, najbolje je početi sa nečim što ima poentere i pun OOP, ali je takodje low-level, i prčkati i po low level stvarima (nekim senzorima ili čak malom robotu). Tu postoje C/C++ ili Ada. Sa toga prelaziš bez problema na taj php, jer imaš jednostavnije koncepte i manju biblioteku.


D takođe pretenduje da bude dobar izbor, ali mu treba još pet godina da "sazri" (danas defakto postoje dve knjige, koje i nisu baš ažurne, a jezik je u eksploziji).

Edit: pronašao sam izvor

http://www.gotw.ca/publications/c_family_interview.htm


Citat:
There are some things that I kind of feel torn about, like operator overloading. I left out operator overloading as a fairly personal choice because I had seen too many people abuse it in C++. I've spent a lot of time in the past five to six years surveying people about operator overloading and it's really fascinating, because you get the community broken into three pieces: Probably about 20 to 30 percent of the population think of operator overloading as the spawn of the devil; somebody has done something with operator overloading that has just really ticked them off, because they've used like + for list insertion and it makes life really, really confusing. A lot of that problem stems from the fact that there are only about half a dozen operators you can sensibly overload, and yet there are thousands or millions of operators that people would like to define -- so you have to pick, and often the choices conflict with your sense of intuition. Then there's a community of about 10 percent that have actually used operator overloading appropriately and who really care about it, and for whom it's actually really important; this is almost exclusively people who do numerical work, where the notation is very important to appealing to people's intuition, because they come into it with an intuition about what the + means, and the ability to say "a + b" where a and b are complex numbers or matrices or something really does make sense. You get kind of shaky when you get to things like multiply because there are actually multiple kinds of multiplication operators -- there's vector product, and dot product, which are fundamentally very different. And yet there's only one operator, so what do you do? And there's no operator for square-root.
[ Shadowed @ 14.04.2014. 10:36 ] @
Sreca ne zavrsih fakultet jer bih sudeci po Nedeljkovom stavu, morao bih sve i svasta da koristim u poslu a bez cega ovako mogu jer nisam akademski obrazovan.
[ Ivan Dimkovic @ 14.04.2014. 10:36 ] @
Citat:
Burgos
Glavni razlog zašto Java nema overloading, ako se sećam dobro Goslingove izjave je slično: "Kada pogledate kod, sve mora da ti bude jasno. Ako u C++-u vidite a + b, vi ne možete znati šta se zapravo dešava, bez da gledate definiciju klase. Mislim da je ovo prilično besmisleno, al' ajde - samo su ostavili prostor drugim jezicima da preotmu deo kolača.


Pa svaki programski jezik u svojoj osnovi "krije" licne afinitete sopstvenog kreatora.

Eto, Gosling ne voli operator-overloading i, gle cuda, Java nema isti :-)

Kada/ako neki jezik postane dovoljno bitan da o njemu pocne da se brine (i da ga urnise :-) komitet, valjda je suvise kasno za neke korenite izmene pa volje kreatora i dalje bivaju prepoznatljive do neke mere.
[ Nedeljko @ 14.04.2014. 10:43 ] @
@tdusko

Višenitna obrada mora da se uči na studijama u okviru nečega u nekom trenutku. Naravno da ne može tek tako na prvom kursu. Prvo promenljive, nizovi, petlje, funkcije itd, da se stekne osećaj, pa malo rekurzije, pa strategija podeli pa vladaj, pa binarna pretraga, pa pretraga sa vraćanjem u dubinu i širinu da se stekne još bolji osećaj, naravno, sve kroz strukturnu paradigmu, pa OOP, pa onda mogu te razne druge stvari.
[ Burgos @ 14.04.2014. 10:46 ] @
Da, to ste u pravu. Kod nas se učilo u četvrtom semestru, nakon Programiranja 1 i 2 (paskal, računarska aritmetika, C), Algoritama i struktura podataka (hehe) i OOP1 (C++), na Operativnim sistemima 1, i opet je bilo povuci-potegni.
[ Nedeljko @ 14.04.2014. 10:47 ] @
Citat:
Shadowed: Sreca ne zavrsih fakultet jer bih sudeci po Nedeljkovom stavu, morao bih sve i svasta da koristim u poslu a bez cega ovako mogu jer nisam akademski obrazovan.

Ne, fakultet te ne tera ninašta. Samo ne bi izmišljao rupe na saksijama, jer bi znao rešenja do kojih je neko došao pre tebe. To ti je kao biblioteka.

No, problem je u tome što se na isti način rešavaju čitave klase problema, pa se onda problem formuliše apstraktno i da s rešenje za opšti slučaj, a ti onda treba da prepoznaš na koji se apstraktan problem svodi ono što rešavaš. Ako si pravilno svojio gradivo, to nije teško, ali od tabelarnog znanja se niko leba nije najeo.
[ tdusko @ 14.04.2014. 11:02 ] @
Citat:
Nedeljko: @tdusko

Višenitna obrada mora da se uči na studijama u okviru nečega u nekom trenutku. Naravno da ne može tek tako na prvom kursu. Prvo promenljive, nizovi, petlje, funkcije itd, da se stekne osećaj, pa malo rekurzije, pa strategija podeli pa vladaj, pa binarna pretraga, pa pretraga sa vraćanjem u dubinu i širinu da se stekne još bolji osećaj, naravno, sve kroz strukturnu paradigmu, pa OOP, pa onda mogu te razne druge stvari.
Nisam ja ni rekao da ne treba da se uci, nego sam samo ukazivao na besmislenost trenutka u kome se to radilo kada sam ja bio student. Inace sam pobornik toga da ako ne znas u kom trenutku trebas nekoga nesto da poducavas ili ne znas kako to trebas da radis, ne treba to da radis uopste. Mnogo je bolje da izadjes sa fakulteta znajuci dobro osnove programiranja, a da nemas pojma o visenitnom nego da izadjes ne znajuci ni jedno ni drugo kako treba sa stecenom odbojnoscu prema programiranju uopste.

Sto se OOP-a tice, dobro je sto si to pomenuo. Secam se kao juce da je bilo da nam je doticni na prvom casu, znaci tamo negde 5. oktobar objasnjavao principe OOP-a. Secam se nekog slajda sa biciklom gde je objasnjavao kako je neka ponika sa slike objekat klase Bicikl, a okretanje pedala, lupanje zvona itd su metode. Svremena na vreme ubacujuci termine polimorfizam, enkapsulacija itd.
[ Nedeljko @ 14.04.2014. 11:04 ] @
Potpisujem sve. Površno znanje je čak opasno, kad imaš lažan utisak da znaš nešto što ne znaš. Znaj kako treba ono što znaš. To je vrlo bitno.

Lao Ce je napisao

Citat:
Ko ne zna da ne zna, ograničen je.
Ko zna da ne zna, mudar je.
Ko prepoznaje svoju ograničenost, nema granica.
[ Shadowed @ 14.04.2014. 11:07 ] @
Citat:
Nedeljko: Ne, fakultet te ne tera ninašta. Samo ne bi izmišljao rupe na saksijama, jer bi znao rešenja do kojih je neko došao pre tebe. To ti je kao biblioteka.

No, problem je u tome što se na isti način rešavaju čitave klase problema, pa se onda problem formuliše apstraktno i da s rešenje za opšti slučaj, a ti onda treba da prepoznaš na koji se apstraktan problem svodi ono što rešavaš. Ako si pravilno svojio gradivo, to nije teško, ali od tabelarnog znanja se niko leba nije najeo.
Pa, fakultet ne, ali ti da :) Rekao si ranije kako neko ko je akademski obrazovan mora da zna sve i svasta da bi obavljao posao. Ovako bez fakulteta mogu da obavljam posao bez znanja tih stvari.

Elem, najveci problem u ovoj temi je sto ucesnici nemaju zajednicki stav sta se podrazumeva pod pojmom znanja algoritama pa onda svako menja to znacenje po potrebi.
[ Nedeljko @ 14.04.2014. 11:28 ] @
Ne, nisam rekao da mora da se zna sve i svašta, već osnove, koje su zajednički imenilac svih oblasti. Tu spadaju:

1. implementacija u bar jednom programskom jeziku datog algoritma proizvoljne složenosti,
2. osnovni algoritmi,
3. osnovne strukture podataka.

Šta je to osnovno? Pa, ono što se uobičajeno radi na prvim kursevima. To nije sve i svašta. Sve i svašta bi bii klaud, baze, 2D grafika, 3D grafika, zvuk, veb, poslovni sistemi, numerički algoritmi, geometrijski algoritmi, ugrađeni sistemi...
[ hotchimney @ 14.04.2014. 11:44 ] @
Napiso sam ono što sam video i čuo razgovor. Da je to samo slučajni izuzetak onda bi se oni sa Sorbone otimali da studiraju na takvim fakultetima. Ali - ne otimaju se.

Posebna priča su tek svršeni studenti koji preko noći postaju aistenti i kao takvi su potpuno nedorasli poslu koji obavljaju.
[ Shadowed @ 14.04.2014. 11:54 ] @
Citat:
Nedeljko:
Ne, nisam rekao da mora da se zna sve i svašta, već osnove, koje su zajednički imenilac svih oblasti. Tu spadaju:

1. implementacija u bar jednom programskom jeziku datog algoritma proizvoljne složenosti,
2. osnovni algoritmi,
3. osnovne strukture podataka.

Šta je to osnovno? Pa, ono što se uobičajeno radi na prvim kursevima. To nije sve i svašta. Sve i svašta bi bii klaud, baze, 2D grafika, 3D grafika, zvuk, veb, poslovni sistemi, numerički algoritmi, geometrijski algoritmi, ugrađeni sistemi...

Pa, mnoge od tih osnova mi nikada nisu trebale. Banalan primer - linked list. List<T> (dynamic array) je ono sto mi je uvek zavrsavalo posao. Eventualno da kazemo da bi mi trebalo da znam prednosti i mane izmedju List<T> i LinkedList ali implementacija - jok (druga je stvar sto znam da implementiram kao i druge stvari, nije mi trebalo).
Mislim da mi je samo jednom trebalo da implementiram neki sort.
Isto vazi i za razno drvece. Neke znam da implementiram, za neke bih morao da razmislim (ne znam napamet). Ali mi u poslu implementacija toga nikada nije trebala. Znam ih sticajem okolnosti - pomagao sam devojci koja je to tada ucila na fakultetu :)
Binary search mi jeste trebao par puta. Jedino sto mogu da se setim trenutno.

Inace, radim kao developer 6god aktivno (dakle, kao zaposlen plus povremeno freelance) i jos par godina pre toga povremeno ponesto. Naravno, dosta duze sam pravio i isprobavao razne sitnice, ali nije bilo za posao. I zivim od tog rada. Daleko od toga da se, kako ti rece, nisam 'leba najeo.



Ja ne osporavam niti omalovazavam znanje o kojem pricas, dobro ga je imati, cak je dobro raditi te stvari kao trening u razmisljanju. Medjutim, nije tacno da je neophodno da bi se radilo (i zaradilo). Neophodno je za neke, nije za mnoge situacije. Dobrodoslo je uvek.
[ Nedeljko @ 14.04.2014. 11:59 ] @
@hotchimney

Dakle, na osnovu uzorka obima jedan, a odgovorili su oni koji su imali ličnih iskustava kao studenti. Sorbona inače ne postoji od 68, a kvalitet univerziteta varira i uopšte se vrhnski kvalitet ne dostiže tako lako. Profesori će odvojiti vreme i to je to. Na MIT-ju fizičarima predaju nobelovci, a na FF BG ne.

Pročitajte naslov teme i videćete da je Andrej013 pokrenuo off topic u kome smo svi zaglavili. Odgovarajuća tema je ova

http://www.elitesecurity.org/t454427-0#3154773

Ja bih samo korigovao svoj stav iz prve poruke tamo tako što bih C zamenio što lakšim jezikom kao prvim, mada ko hoće da bude jak, trebao bi u nekom trenutku da obradi nešto blisko mašini. Ne mora asembler. C je tu savršen. Takođe bih u tački 4 dodao JSON, a u tački 6 JavaScript. E, posle je lako usmeravati se.
[ hotchimney @ 14.04.2014. 11:59 ] @
Citat:
Shadowed

Sreca ne zavrsih fakultet jer bih sudeci po Nedeljkovom stavu, morao bih sve i svasta da koristim u poslu a bez cega ovako mogu jer nisam akademski obrazovan.

Poznajem ljude koji su završili i po dva fakulteta pa nikad nisu ni pogledali to što su radili na fakultetu iako imaju na stotine miliona linija programskog koda iza sebe. Sve što im je trebalo od programiranja učili su (i danas uče) samostalno.

Tako da niko nema šta da žali za fakultetom.

Znaš, to "akademski obrazovan" je parče papira da okačiš na zid inače samo po sebi ništa ne znači.

Povodom toga, nisam siguran ali mislim da ima primer konstruktora Apple računara (ili nešto slično) koji je diplomirao u 42-goj godini a računar je napravio sa 26 u nekoj šupi.
[ Nedeljko @ 14.04.2014. 12:06 ] @
Shadowed

Nije tebi trebalo da implementiraš listu, ali ti je znanje kako se implementiraju takve stvari pomoglo da implementiraš nešto drugo za šta ne postoji klasa. Kada bi se znalo koje će sve klase ikada zatrebati, onda bi se napravile. Napravljene su one koje koje pokrivaju većinu potreba, ali kao što najveći broj ljudi ne ide samo velikim ulicama, nego ponekad i sokacima, tako je i tebi nekada trebalo da implementiraš nešto donekle slično onome što se uči, ali ne isto.

hotchimney

Jasno je da nisi postigao ništa u životu zato što se ceo svet urotio protiv tebe.
[ hotchimney @ 14.04.2014. 12:15 ] @
Ne znam šta ti smeta to što sam napisao?

Možda ti je žao što si studirao pa si onda uvideo da to što si učio drugi ljudi postižu bez fakulteta?
[ Ivan Dimkovic @ 14.04.2014. 12:20 ] @
Citat:
hotchimney
Poznajem ljude koji su zaavršili i po dva fakulteta pa nikad nisu ni pogledali to što su radili na fakultetu iako imaju na stotine miliona linija programskog koda iza sebe. Sve što im je trebalo od programiranja učili su (i danas uče) samostalno.

Tako da niko nema šta da žali za fakultetom.


Mislim da je uopstavati sa "poznajem ljude" na "tako da niko nema sta da zali" preterano i nema objektivnih osnova za tako necim.

Poznajem i ja ljude, na kraju krajeva ni ja nisam zavrsio fakultet a poslujem u ICT biznisu vec 16 godina - ali ne mislim da mogu da generalizujem i da tvrdim da niko nema sta da "zali" (mada ne znam sta ima da se zali uopste, u pitanju je posao a ne neke emotivne stvari).

Nije nikakva tajna da za gomilu programerskih poslova nije potrebno akademsko znanje, nebitno je koliko linija neko pise.

Sustina kurseva fokusiranih na industriju na fakultetima nije da budu nezamenjivi, vec da ljudima koji izlaze iz srednje skole omoguci da se pripreme za poslove koji zahtevaju znanja veca od srednjoskolskih. Ta znanja nisu tajna ili nesto specijalno poznato samo "iniciranima", mogu da se nauce i drugde (danas je to dostupnije nego ikad u istoriji covecanstva), ali to nije poenta - poenta je da potrebna znanja budu dostupna na jednom mestu, sa integrisanim sistemom provere i sa dostupnoscu ljudi koji mogu da pomognu ako se nesto ne razume, za one kojima je to optimalan nacin ucenja (a takvi su vecina).

Niti su svi sposobni da sami sebe ocenjuju, niti su svi sposobni niti svi koji jesu zele da sami rade odabir gradiva i testova znanja i da traze ljude koji ce im davati savete "na netu". Sve to postoji na fakultetu na jednom mestu.

To im je prednost. Nije nuzda, nije moranje, u ICT biznisu nije ni nezamenljivo - ali svakako ima vrednost i zbog te vrednosti su ljudi spremni i da plate to skolovanje.
[ hotchimney @ 14.04.2014. 12:26 ] @
Pa i ja otprilike razmišljam na sličan način. Sve što se uči na fakultetu može da se nauči samostalno.

Ono što je moje pitanje "šta ja dobijam za novac kojim plaćam studiranje"? Osim diplome, da li ću postići nešto više što ne bih samostalno postigao? Meni se čini, bar kad su ovdašnji fakulteti u pitanju, da je odgovor bar neutralan ako ne i negativan.
[ Ivan Dimkovic @ 14.04.2014. 12:34 ] @
Nemam pojma kakvi su "ovdasnji fakulteti", pa to ne mogu da komentarisem.

Ali evo stvari koje dobijas studiranjem:

- Probrano gradivo
- Strucne predavace koji to gradivo prezentuju i koji su tu da pomognu ako nesto skripi
- Pripremljene testove koji pokazuju da li je znanje usvojeno
- Opremu i infrastrukturu za vezbe (racunare, softver/licence, itd.)
- Akreditovani sertifikat koji potvrdjuje da si zavrsio skolovanje sto znaci da si prosao testove znanja

Da li to vredi? Definitivno vredi. Da ne vredi, ne bi bilo kupaca.
Da li je to nezamenljivo? Definitivno nije, sve ovo gore mozes sam (osim poslednje stavke, ali ta stavka u ICT trzistu odavno nije nezamenljiva), ako imas sposobnosti i mogucnosti da nadjes ljude koji ce biti spremni da ti budu tutori.

Medjutim i to tvoje vreme kosta i umesto sto juris po forumima ljude spremne da odgovaraju na pitanja i da radis selekciju gradiva / testova, mogao bi da se fokusiras na ucenje i vezbanje. Dakle nije dzabe ni samostalno skolovanje - i ono ima mana.

Konacno, kao sto vec rekoh, kljucno pitanje je da li je neka osoba spremna samu sebe objektivno da ocenjuje. I to je nesto sto ne poseduju svi.

Sve u svemu, fakulteti imaju definitivno vrednost, zato sto vec nude upakovan proizvod koji omogucava da se neko samo fokusira na ucenje i vezbanje, dok odabir gradiva, edukaciju i pomoc kada se zaskripi i testiranje radi fakultet tj. uracunato je u cenu samog proizvoda.
[ Shadowed @ 14.04.2014. 12:34 ] @
hotchimney, onaj moj post je bio sarkasticni odgovor na neki raniji Nedeljkov gde je receno prakticno da ako nisi zavrsio fakultet mozes bez nekih stvari a ako jesi ne mozes bez njih. Ispada da ces lakse raditi bez fakulteta.
[ hotchimney @ 14.04.2014. 13:13 ] @
^Ivan Dimkovic

To što si napisao verovatno se odnosi na zapadne fakultete (inače ne bi napisao 'Nemam pojma kakvi su "ovdasnji fakulteti"'). Ne sumnjam da na zapadu moraju da se prilagodjavaju potrebama studenata. Ali u "ovdašnjim fakultetim" baš nisam siguran da postoji neka odgovornost u tom smislu. Mogao bih nabrajati primere da to ilustrujem ali će početi "hajka" od "dežurnih" fakultetlija i omalovažavanje putem "izolovanih slučajeva".

Sad, ovi ljudi što sam ih pomenuo - oni tuku po 1000-2000 znakova po programskoj liniji. Jedna petlja u funkciji im je preko 1000 linija. A sve kontra od onog fakultetskog "lepog programiranja" po kome procedura/funkcija treba biti taman tolika da stane na ekran, pa lepo nazubljivanje. Ma kod njih ima nazubljivanja ali to nazubljeno ulevo pa udesno - Pithon se tu ne bi snašao.

Pitam ih da li (kad uzmu neki posao) pogledaju u knjige sa fakulteta da primene neki algoritam. "Ma jok" kažu oni, knjige nisu ni imali a sveske sa predavanja su pobacali nakon položenog ispita.

Sad, ja se pitam. Čemu sve to - ti algoritmi, rekurzivne funkcije, Gedel i ostali? Mislim, stvarno, gde vi to koristite? Daj i ja da to ubacim negde.

Da li ću ja napisati bolji program ako naučim Akermanovu funkciju? Kako znanje o Akermanovoj funkciji utiče na kvalitet programiranje? Da li se vi preslišavate Akermanove funkcije kad uzmete da radite neki posao?

Naravo, odgovor je potvrdan ako ste dobili zadatak da napišete program za izračunavanje Akermanove funkcije. Samo, koliko će njih tražiti da im napišete takav program? I koliko će platiti?
[ Nedeljko @ 14.04.2014. 13:47 ] @
Naravno da te "fakultetlije" nisu ni pogledale to jer znaju šta im treba, ako ne napamet, ono konceptualno da umeju da izvedu iz tih koncepata šta im treba.

Akermanova funkcija je bitna praktično isključivo istraživačima. Uči se na teoriji izračunljivosti ili teorije rekurzivnih funkcija (što su nazivi za istu oblast). No, to nikako nije obavezno. Njen značaj na nastavi programiranja može da bude samo u okviru ilustracije rekurzija. Uopšte nije bitno da li je rekurentna funkcija koja je uzeta kao primer baš Akermanova ili neka druga. Rekurzija je rekrzija i to je ono što treba da se ponese sa tog časa. Faktorijel je možda lošiji primer jer se u njemu rekurzija lako izbgava, ali je umesto Akermanove funkcije svakako mogla da bude floodfill funkcija npr.
[ hotchimney @ 14.04.2014. 14:23 ] @
Pa vidi, ako me bude nešto zanimalo o Akermanovoj funkciji pitaću ove ljude ovde. Znaš oni su neuporedivo sposobniji od onih kojima je trebala pomoć nastavnog osoblja da završe fakultet. Ovi su fakultet završili bez ičije pomoći.

Mogu prepričati i neke anegdote iz njihovih studentskih dana ako nekog zanima.
[ Nedeljko @ 14.04.2014. 14:30 ] @
Tih koji su završili fakultet bez ičije pomoći je vrlo malo. Za to zaista trebaju velike sposobnosti. Mnogo je umišljenih, koji misle da su završili, a nemaju pojma.

Što se Akermanove funkcije tiče, potpuno si omašio poentu, pa nemoj kriviti ceo svet što nisi ništa uradio.
[ gandalf @ 14.04.2014. 14:35 ] @
Evo jedne prezentacije na temu kako postati dobar software inzenjer, mislim da je poenta pogođena.. Da bi bio dobar treba ti mnogo toga, što više to bolje, i sto bolje znanje iz različitih oblasti da bi mogao da imas širu sliku. Inace izuzetno lepo objašnjeno od strane Jessice McKellar

https://vimeo.com/71763919
[ Burgos @ 14.04.2014. 14:57 ] @
Citat:
hotchimney:
Posebna priča su tek svršeni studenti koji preko noći postaju aistenti i kao takvi su potpuno nedorasli poslu koji obavljaju.


Potpisujem.
[ Ivan Dimkovic @ 14.04.2014. 15:14 ] @
Citat:
hotchimney:
Pa vidi, ako me bude nešto zanimalo o Akermanovoj funkciji pitaću ove ljude ovde. Znaš oni su neuporedivo sposobniji od onih kojima je trebala pomoć nastavnog osoblja da završe fakultet. Ovi su fakultet završili bez ičije pomoći.

Mogu prepričati i neke anegdote iz njihovih studentskih dana ako nekog zanima.


Mislim da se u ovome krije razlog nerazumevanja.

Vidi, na 100 ljudi koji ce na kraju zavrsiti u IT-u dobar deo njih sa 18 godina nije sposoban da sam zavrsi skolovanje bez neke pomoci nastavnog osoblja. Od pitanja za vreme predavanja ili u toku vezbi, nebitno. Zbog toga i postoje skole: zato sto je to za vecinu ljudi najbolji nacin da nesto nauce. Nije sramota pitati. Ne samo da nije sramota vec je to normalno i pozeljno umesto da se ignorise nesto sto nije jasno.

Ljudi koji su u stanju sve sami da skapiraju su retkost. Jos veca retkost su ljudi koji mogu sve sami da skapiraju bez da uopste bilo koga pitaju sta treba da uce.

Da bi bilo koje drustvo funkcionisalo ne moze samo da se oslanja na retke pojave u drustvu vec mora da ima kalibrisan skolski sistem da proizvodi potrebnu radnu snagu od "obicnih" normalnih gradjana prosecne inteligencije. Obicni ljudi su bas to: ljudi koji ne kapiraju u sekundi koncepte bez da pitaju bilo koga bilo sta.

Ima sigurno na ovom forumu puno talentovanih ljudi. Neki od njih su talentovani i samouki su uspeli da potanu profesionalci u informatickoj struci. Svaka cast talentovanim ljudima kao i samoukim talentima kojima nije bila potrebna pomoc da se profesionalno iskazu, ali kada bi se samo talenat zaposljavao ne bi bilo dovoljno radnika ni za sta.

Da ne pricamo o tome da ima i ekstra talentovanih ljudi koji su zavrsili skolu i skola im je pomogla da se jos bolje pronadju u tom talentu.

Ali to nisu bitne stvari za poentu: skole su tu, prvenstveno, zbog "obicnih" ljudi - ljudi koji cine masu radne snage na ovoj planeti.
[ Braksi @ 14.04.2014. 15:26 ] @
Ipak, nemojmo zaboraviti da je fakultet prakticno NEOPHODAN za akademsku IT (CS, whatever) karijeru. Znaci da bi radio PhD i dalje postdoc.
[ Nedeljko @ 14.04.2014. 15:39 ] @
Tako je Ivane, obrazovni sistem je sistemsko rešenje problema obrazovanja.

Ništa gluplje nego misliti da si najpametniji i da ti niko drugi ne treba. Nijedan od velikih ljudi nije tako postao veliki, nego su pokupili prvo ono do čega su drugi stigli i nisu se stideli ni pitanja, ni neznanja, ni nerazumevanja. Nobelovac Ervin Šredinger je čuven po izjavi da ne zna šta je to proces merenja u fizici.

Zato treba imati na umu onaj Lao Ceov citat.
[ Odin D. @ 14.04.2014. 15:46 ] @
Kada skolovani ljudi neko usko-specijalizovano pitanje o balansu odredjenih specificnih znanja/vjestinja u programiranju doguraju to do pitanja da li su svijetu potrebne skole uopste ili nisu - onda razuman covjek tesko da moze da odoli pomisli da u toj sumnji u pogledu potreba postojanja skola uopste za ljudsku civilizaciju mozda i ima nesto pametno.
[ Nedeljko @ 14.04.2014. 15:52 ] @
A kako da proverimo ko su ti ljudi i kakvi su njihovi rezultati? Pljuju sistem anonimno pod pseudonimima i tvrde da su postigli ne znam šta. Hajde da vidimo šta o tome misli, npr. Bil Gejts, koji je batalio studije, ali za koga se zna šta je postigao. Čisto sumnjam da on dovodi u pitanje vrednost obrazovnog sistema.

Jedan univerzitetski profesor mi je pričao kako se na fakultet upisuju brucoši koji su doneli jedino znanje slanja i primanja SMS poruka i sa istim znanjem diplomiraju, jer im to znanje to omogućava, pa posle pljuju sistem jer ne mogu da se zaposle sa diplomom, a prijavili su se na ko zna koliko mesta. Kažu da nema posla. Baš me zanima kome trebaju stručnjaci za slanje i primanje SMS poruka.
[ Braksi @ 14.04.2014. 16:05 ] @
Bil Gejts je preduzetnik, kao i Jobs.

Preduzetnistvo je sasvim druga kategorija od akademije i ne postoji kvalifikacija da bi neko bio preduzetnik kao sto nema zahtevane kvalifikacije za funkcionere: predsednik, ministri i dr...

Medjutim da bi neko bio naucnik mora doci sa akademije. To je jasno kao dan. Bas kao sto predsednik SAD ide na izbore (run for the office), a da bi bio papa to je vec inside job i ne mozes se prosto kandidovati.

Ali jedna druga stvar. U italijanskom gradu Pisa postoji faks za fiziku (Scuola Superiore Normale). Well, da sad skratim opis to je otprilike legija stranaca u akademiji. Znaci pakao nad paklovima. Ja sam to sasvim slucajno saznao jer sam pre dobrih 10 godina upoznao jednog napolitanca koji je zavrsio fiziku tamo za 4 godine sa odlicnim ocenama i onda je pisao doktorat. Pricao mi je da je tamo strebao fiziku 10x vise nego sad na doktoratu i da nije video zensku 4 godine. A tip izgleda kao gejts iz mladjih dana. I pita on mene tako jedan dan, cuo je da se c++ dobro placa pa kako bi on to mogao - dosadila mu fizika. Meni je bilo malo cudno, ali uputim ja njega na neke poznanike iz vremena dok sam se jos bavio programiranjem i stvarno on se meni jako zahvalio.

Sad prateci linkedin, shvatio sam da je on otisao posle da radi u Milano bas kao c++ programer i Quantitavie Analist i to ni manje ni vise nego u Credit Suisse i tamo je vec nekih 5 godina. A nije dakle studirao ni finansije ni programiranje.

Sta hocu da kazem. Jbg, ljudi iz hard sajensa su uglavnom nenadje8ivi za bilo sta cemu se posvete. To su top mozgovi kome svako voli da poveri posao, pogotovo dobro placen posao. Ne samo sto su vrednim studiranjem pokazali da na vreme i sa uspehom izvrsavaju preuzete obaveze od kojih mnoge nisu prijatne, vec su i brilijantni umovi.

[ Odin D. @ 14.04.2014. 16:08 ] @
Citat:
Nedeljko: Hajde da vidimo šta o tome misli, npr. Bil Gejts, koji je batalio studije, ali za koga se zna šta je postigao. Čisto sumnjam da on dovodi u pitanje vrednost obrazovnog sistema.

Zasto bi na temi o popularnosti Jave i C-a pricali o dovodjenju u pitanje vrednosti obrazovnog sistema?!
Mozes li da nadjes nekog na ovoj temi ko je dovodio u pitanje znacaj i vrednost skola u ljudskoj civilizaciji i tako nam objasnio protiv koga se ti ustvari macujes?
[ Nedeljko @ 14.04.2014. 16:13 ] @
Inače, daleko od toga da ja ovaj sistem obrazovanja smatram savršenim. Najveće zlo su ocene i diplome. One treba da budu samo povratna informacija studentu kako je savladao gradivo, a ne ne znam šta. Postoje diplome svakakvih univerziteta. Naravno da nisu iste. Da li je vrednija diploma univerzita A sa prosečnom ocenom 8 ili univerziteta B sa prosečnom ocenom 9?

Država bi mogla da napravi standardizovane testove iz svega živog. Iz svake najuže oblasti ogroman broj pitanja i zadataka. Onda privrednik koji ne može da vrednuje stručnost kandidata kupi testove i koristi njih. Onaj privrednik koji može sam da pita, odradi to sam.

Slično sa medicinom, s tim da tu ne može bolnica da vrednuje lekara, već kandidat polaže državni ispit od mesec dana iz svega živog. Svejedno je gde je pokupio znanje iz medicine, već d li ga ima ili ga nema. Ako je naučio medicinu kako god, ali na odgovarajućem nivou, zašto ne bi mogao da leči ljude.
[ Dragan @ 14.04.2014. 16:13 ] @
Citat:

Pa, mnoge od tih osnova mi nikada nisu trebale. Banalan primer - linked list. List<T> (dynamic array) je ono sto mi je uvek zavrsavalo posao. Eventualno da kazemo da bi mi trebalo da znam prednosti i mane izmedju List<T> i LinkedList ali implementacija - jok (druga je stvar sto znam da implementiram kao i druge stvari, nije mi trebalo).


Zanimljiv primer (pretpostavljam da si mislio na ArrayList vs LinkedList, dve implementacije List interface-a u Javi). Ja to cesto pitam juniore na intervju-u, i obicno ne znaju, i onda ima malo pomognem i sete se i struktura podataka i sta je u kom slucaju bolje. Ono sto mi je neverovatno da retko ko poveze tu naucenu teoriju sa ovako nekim konkretnim primerom, btw Java collections API je pun primera primene raznoraznih algoritama i design patterna.

Gro ljudi koji radi kod nas (cca 250) su fakultetski obrazovani, mislim preko 90%, ogromna vecina ETF/PMF. Kao juniori najbolje prolaze ljudi sa relevantnih fakulteta (pre evga FTN/NS), najbze napreduju kasnije - naravno uvek ima izuzetaka, ovo je na bazi mog iskustva (ne znam ni sam sigurno, bar 200-300 intervjua u poslednjih 5-6 godina, preko 70 ljudi koji su kod mene prosli tehnicki intervju i sa dosta njih kasnije sam i radio, obucavao). Cinjenica jeste da je potraznja velika a samim tim i pritisak da se vise zaposljava, mogucnosti za instant skolovanje jos vece - videcemo kako ce to ici. Ja licno verujem u formalno obrazovanje u ovoj sferi, mada znam nekoliko sjajnih strucnjaka koji nikada nisu zavrsili fakultet (mahom poceli) ali isto znam da su isti sedeli dan i noc da bi usvojili vestine koje imaju. No, ovde pricamo o velikim brojevima a ne o izuzecima, mada je pitanje koliko je moje isustvo relevantno.

Sto se tice TIOBE indexa, ja ga pratim dosta unazad i C/Java su na prva 2 mesta poslednjih 10 tak godina. Mene licno cudi pozicija za Objective-C, mislim jasno mi je da dosta ljudi razvija za iOS ali opet :) mada ovo je "popularity" index, tako da mozda moze da se gleda i u tom svetlu.

Ja sam poceo karijeru sa C/C++, pre nekih 7-8 godina sam se prebacio na Javu. Ono sto se mora odati credit Sun-u ranije a Oraclu sada je da se dosta trude da zadrze backward compatibility, sto na nivou jezika, sto na nivou same platforme (JVMa). Nemojte smetnuti sa uma da Java sledece godine puni 20 godina, pre manje od mesec dana Java 8 je postao GA, a on nam donosi najvece promene u samom jeziku od 5-ice. U konktekstu vremena kada je nastao je uspeo da se nametne kao relativno cist, moderan OO jezik baziran na C-u, mislim da je napravljen solidan kompromis i da tome duguje popularnost. Cenim da ce biti pri vrhu i u narednim godinama, te ima moju preporuku za nekoga ko je na pocetku karijere. Jos nesto, cini mi se da Java ekosistem od pocetka forsira pricu o designu software-a (design patterns, best practices), tako da se obicno i programiranje moze dosta dobro usvojiti posto sam community dosta insistira na tome.


[ Nedeljko @ 14.04.2014. 16:22 ] @
Citat:
Odin D.: Zasto bi na temi o popularnosti Jave i C-a pricali o dovodjenju u pitanje vrednosti obrazovnog sistema?!
Mozes li da nadjes nekog na ovoj temi ko je dovodio u pitanje znacaj i vrednost skola u ljudskoj civilizaciji i tako nam objasnio protiv koga se ti ustvari macujes?

Misliš da je jedna struka tu izuzetak? Šta misliš da Bil Gejts misli o značaju obrazovnog sistema u pitanju, kada je softveraška struka u pitanju? Mislim da su njegovi stavovi relativno poznati.

Braksi, da bi bio naučnik, ne moraš dolaziti sa akademije. Taj formalan uslov ne postoji. Druga je stvar što u poslednjih sto godina nema bogznakoliko primera onih koji nisu diplomirali, a otkrili su ne znam šta. Razlog za to nije formalne prirode. Ima i dan-danas naučnika amatera, koji nisu plaćeni za naučnoistraživački rad, a daju sjajne rezultate (prihvaćene od strane naučne zajednice) baveći se naukom iz hobija. No, imaju formalno obrazovanje iz prostog razloga što je taj nivo skoro pa nemoguće dostići samostalno. Da bi bio plaćen za naučnoistraživački rad, moraš da imaš šare. Inače ne moraš.

Što se privrednika tiče, za to isto postoje poslovne škole. A što se Bilija tiče, on se itekako razume u tehnologiju.
[ Odin D. @ 14.04.2014. 16:28 ] @
Citat:
Nedeljko: Misliš da je jedna struka tu izuzetak?

Ja mislim da ti ne znas citati.
[ Ivan Dimkovic @ 14.04.2014. 16:53 ] @
Citat:
Dragan
Sto se tice TIOBE indexa, ja ga pratim dosta unazad i C/Java su na prva 2 mesta poslednjih 10 tak godina. Mene licno cudi pozicija za Objective-C, mislim jasno mi je da dosta ljudi razvija za iOS ali opet :) mada ovo je "popularity" index, tako da mozda moze da se gleda i u tom svetlu.


Mene ne cudi popularnost Objective C-a ni malo (ne samo subjektivna vec i konkretna u smislu poslova): broj iOS uredjaja je jako veliki + korisnici iOS uredjaja su poznati kao platise softvera, sto sigurno proizvodi potraznju.
[ hotchimney @ 14.04.2014. 17:03 ] @
Citat:
Odin D.

Ja mislim da ti ne znas citati.

To što neko ne može da završi fakultet bez tudje pomoći ne znači da ne zna čitati. Ono što mene čudi kad je neko prepotentan i stalno pokušava drugima da soli pamet "s visine" iako je sam sasvim prosečnih sposobnosti.

Inače, kad je reč o tim algoritmima, ranije sam pisao procedure za sortiranje i primenjivao u raznim prilikama. Danas je to sasvim nepotrebno jer se radi o stvarima implementiranim u programske jezike tako da sam se prilagodio. Činjenica je da su računari sve brži, imaju sve više memorije pa što sve to ne iskoristiti?
[ Braksi @ 14.04.2014. 17:42 ] @
Citat:
Nedeljko:
Braksi, da bi bio naučnik, ne moraš dolaziti sa akademije. Taj formalan uslov ne postoji. Druga je stvar što u poslednjih sto godina nema bogznakoliko primera onih koji nisu diplomirali, a otkrili su ne znam šta. Razlog za to nije formalne prirode. Ima i dan-danas naučnika amatera, koji nisu plaćeni za naučnoistraživački rad, a daju sjajne rezultate (prihvaćene od strane naučne zajednice) baveći se naukom iz hobija. No, imaju formalno obrazovanje iz prostog razloga što je taj nivo skoro pa nemoguće dostići samostalno. Da bi bio plaćen za naučnoistraživački rad, moraš da imaš šare. Inače ne moraš.


mozda i postoje naucnici iz hobija, ali to je zanemarljiva grupa jer top science ti je danas sistemska stvar citava masinerija. Ne postoji leading scientist a da je hobista i da nema neku poziciju jer psorsto sistem je takav.

Sto se tice Gejtsa on nije napustio faks zato sto je bio glup ili zato sto je faks njesra, vec upravo obrnuto. Nalazio se na momentu velikog otkrica i morao je svo vreme i svaki svoj nerv da posveti biznisu. Naravno da je sto puta lakse zavrsiti Harvard nego postati Gejts.

Naravno Gejts ce sasvim sigurno omoguciti svojoj deci top obrazovanje.
[ Nedeljko @ 14.04.2014. 18:19 ] @
Braksi, to da li ćeš biti top u nekoj oblasti zavisi isključivo od toga koliko uradiš u istoj. Nijedan papir ti ne obezbeđuje ama baš ništa top. Činjenica je da hobisti mogu da objavljuju članke u istim naučnim časopisima i da imaju isti tretman.

Da, baš bi bilo čudno da hobisti kojima je nešto sporedna aktivnost budu ispred onih kojima je to glavna aktivnost, ali to se ne može pripisati formalnim kriterijumima. Reši ti PvsNP problem i objavi rešenje. Ako je tačno, to ti je top topova. Druga je stvar što je to toliko težak problem da je malo verovatno da će ga iko od ES članova rešiti.

A što se Gejtsa tiče, upravo je u tome cela poenta. To je stav jednog takvog, a anonimusi sa foruma mogu da cepy kvake do sutra.


@hotchimney

Ja zaista i ne mislim o sebi nešto specijalno, ali prepoznajem "stručnjake za 21 dan". Eto, tebi se znanje algoritama završava otprilike na sortiranju, tako da sav taj jed prema onima koji te šiju (ne prema meni, već onim "fakultetlijama" koji su primljeni tamo gde ti nisi). Da znaš više prepoznavao bi malo više algoritama u realnim situacijama, pa bi znao pod kojim imenom da tražiš nešto i biblioteku za to nešto.

I gde ćeš veće nadobudnosti od "meni drugi ne trebaju da završim fakultet". Koja je to visina. Ti koji su "samouki", zapravo nisu samouki, već su se oslanjali na druge i njihova dostignuća, samo u drugom obliku.
[ Braksi @ 14.04.2014. 18:34 ] @
Citat:
Nedeljko: Braksi, to da li ćeš biti top u nekoj oblasti zavisi isključivo od toga koliko uradiš u istoj. Nijedan papir ti ne obezbeđuje ama baš ništa top. Činjenica je da hobisti mogu da objavljuju članke u istim naučnim časopisima i da imaju isti tretman.


Yeah, kako da ne.

Sad tek vidim koliki si ti amater. Pa ti nemas pojma kako funkcionise danasnja nauka, a misljenje menjas kao i yoyo. Bezveze kontriras. Meni pricas kako nije bitan faks, a drugima kako je faks sve.
[ hotchimney @ 14.04.2014. 18:58 ] @
Citat:
Nedeljko

prepoznajem "stručnjake za 21 dan

Ha, ha, ha! Ne za 21 dan već za 0.21 dan.

Naime, u to doba sam bio tek svršeni srednjoškolac. U srednjoj školi matematiku sam imao 4 časa nedeljno a za elektroniku sam čuo samo na vizoru. U školama se tada nije učilo o računarima jer su tek digitroni uzimali svoje pozicija uz obavezne logaritamske tablice. Za računare je znao samo Milivoj Jugin. Nekako sam se dokopao nečega što su zvali, kako se ono kaže?...? aha "kompjutor"! Neko je čuo da ja imam taj "kompjutor" i došli su kod mene da im napišem program za sortiranje. Zamolio sam decu iz komšiluka da mi uključe u struju taj "kompjutor". I... uradio sam ljudima program za sortiranje sa, kako se to kaže, "komjuteraškom složenošću" O(log n).
U to vreme nisam ni čuo za grafove i ta čuda (A i ko je? Možda M.Jugin?). Tek kasnije sam počeo da čitam Knuth-a u svojoj naivnosti misleći da je to nešto važno.

Toliko o visokotehnološkim zanimanjima poput CS.

Citat:
Nedeljko

Ti koji su "samouki", zapravo nisu samouki, već su se oslanjali na druge i njihova dostignuća, samo u drugom obliku.

Ne kažem ja da su oni izumeli celokupnu nauku. Samo kažem da im asistenti (nedorasli) i profesori nisu pomagali. Sad što ti nisi mogao da završiš fakultet bez tudje pomoći nije ništa za osudu. Pa ja se upravo zalažem da asistenti i profesori pomažu studentima.

[ Nedeljko @ 14.04.2014. 19:11 ] @
Program za sortiranje sa tom složenošću nije moguć. Tvoj program je bio sa ko zna kojom složenošću.

Sedi, jedan!

Pa, je li vidiš da vas prepoznajem. Ne znaš da odrediš ni složenost algoritma za sortiranje. Da nisi bio toliko nadobudan i tražio pomoć, našao bi je. Ovako nisi odmakao dalje od toga.
[ Braksi @ 14.04.2014. 19:16 ] @
Nedeljko je amater kandidat za Nobela iz algoritama koji smatra da skola nije bitna, ali moze veoma mnogo da znaci.
[ Nedeljko @ 14.04.2014. 20:10 ] @
Nemoj meni da prišivaš stavove. Govori u svoje ime.

Vidi, ja se ne bavim naukom, tako da nisam ni amater. Oćeš li na PP reference prema našim uglednim istraživačima (iz naših top ustanova), koji isto ne znaju kako funkcioniše današnja nauka, a od kojih potiče taj stav? Da, navode primere ljudi koji ne rade po naučnim ustanovama, već npr. po sinagogama, a štampaju odlične radove u naučnim časopisima. Nema takvih primera top nauke, upravo zato što top nauka osim top ljudi traži i top vreme, a i ti top ljudi traže mesto gde mogu top vreme da posvete nauci, a to su obično top mesta.
[ hotchimney @ 14.04.2014. 22:29 ] @
Citat:
Nedeljko

Ne znaš da odrediš ni složenost algoritma za sortiranje.

Ha, ha, ha. Upecao si se. Tu se ne govori o složenosti algoritma za sortiranje već "komjuteraškom složenošću".
Ha, ha, ha!

Ne znaš ni da čitaš. Ti zaista nisi mogao da završiš fakultet bez tudje pomoći. I ta je pomoć bila obilata, kao nošenje nepokretnog.
[ Nedeljko @ 14.04.2014. 23:19 ] @
Puko si. Nemaš pojma. A što se pomoći tiče, naravno da je bila obilata i da bih bez nje bio na tvom nivou.
[ Branimir Maksimovic @ 14.04.2014. 23:21 ] @
Dragane , ajde i ja da nit pikujem Java nije nastala iz C-a nego C++-a
i preuzela iskljucivo OO elemente jezika dok je sve ono sto je C odbacila.
Ono sto me najvise nervira kod jezika je to sto zapravo mora dosta
koda da se nabifla i dalje. Java je neke stvari uprostila na ustrb toga
sto moras pisati i dalje gomilu koda mada ima impresivan lib.
I da, mislim da popularnost C-a, nije ni blizu popularnosti Jave.
Pisati kod u cistom C-u ce danas samo neko ko ima i previse
vremena ili ogranicene resurse.
C++ je druga stvar, a to se ovde ne pominje.
C++ je isuvise slozen jezik pa otud valjda manja popularnost
od C-a.
Da jako bitan faktor u izboru jezika je i to koliko je lak
za ucenje.
[ Burgos @ 14.04.2014. 23:55 ] @
Citat:
Branimir Maksimovic:
i preuzela iskljucivo OO elemente jezika dok je sve ono sto je C odbacila.


A i++ i ++i? :). Baš smo pre neki dan na nekoj temi sa jablanom pričali o nepotrebnosti, a i Lippert se složio sa nama (a oni su, valjda, to preuzeli iz Jave):


Citat:
Lots of good answers here so I won't re-state what others have already said, except to emphasize that these operators are horrid features. They're very confusing; after over 25 years I still get pre- and post- semantics mixed up. They encourage bad habits like combining evaluation of results with production of side effects. Had these features not been in C/C++/Java/JavaScript/etc, they would not have been invented for C#


http://programmers.stackexchan...ncrement-operator-in-java-or-c

Kad spomenuste da u Javi "moraš pisati gomilu koda", ja sam prijatno iznenađen kako se čovek lepo, kratko i jasno može izraziti u Skali (tek par meseci petljam sa njom). Kako ocenjujete tržište koje se sve više otvara za funkcionalno (ili objektno orijentisano sa primesama funkcionalnog) programiranje?
[ Branimir Maksimovic @ 15.04.2014. 04:50 ] @
Citat:

A i++ i ++i? :). Baš smo pre neki dan na nekoj temi sa jablanom pričali o nepotrebnosti, a i Lippert se složio sa nama (a oni su, valjda, to preuzeli iz Jave):


Heh ti operatori su prava glavobolja u C i C++-u u Javi imaju strogo definisano ponasanje (valjda) ;)
Jos jedan operator tu smeta a to je ternary ?: ;)
Recimo u Go-u su zabranili koriscenje ovih operatora u izrazima ... a ternari potpuno izbacili.

Citat:

Kad spomenuste da u Javi "moraš pisati gomilu koda", ja sam prijatno iznenađen kako se čovek lepo, kratko i jasno može izraziti u Skali (tek par meseci petljam sa njom). Kako ocenjujete tržište koje se sve više otvara za funkcionalno (ili objektno orijentisano sa primesama funkcionalnog) programiranje?


Funkcionalno programiranje je pravi hit trenutno cini mi se. Prosle godine me kontaktirao head hunter iz google-a zato sto
se zainteresovao za moje znanje Haskell-a ;) Interesantno je da su glavni ljudi koji razvijaju ghc (najpopularniji Haskell kompajler)
iz Microsoft Researcha. Ima tu necega, istrazuju ljudi.
[ Nedeljko @ 15.04.2014. 05:28 ] @
Citat:
Branimir Maksimovic: Heh ti operatori su prava glavobolja u C i C++-u u Javi imaju strogo definisano ponasanje (valjda) ;)

Pa, imaju i u C/C++
Code (cpp):

int& prefix(int &x)
{
    x = x + 1;

    return x;
}

int postfix(int &x)
{
    int y = x;

    x = x + 1;

    return y;
}


[Ovu poruku je menjao Gojko Vujovic dana 15.04.2014. u 13:41 GMT+1]
[ Branimir Maksimovic @ 15.04.2014. 06:03 ] @
Bilo bi dobro kad bi to bilo tako. Te operatore mozes overloadovati i tad nije
problem, problem nastaje onda kad koristis intrinsic operatore ;)
A taj je problem u C++-u cak onda veci jer nikad nisi siguran...
Problem je u tome sto kad koristis intrinsic operator tad nema
tzv sequence pointa pa je moguc undefined behavior
ukoliko se ista varijabla menja dva puta u izrazu istovremeno.
Sto se C-a tice tamo nemas reference pa da mozes simulirati
ovaj operator preko f-je.
[ Nedeljko @ 15.04.2014. 06:29 ] @
U C-u imaš pokazivače, koji su dovoljno dobri da ilustruju suštinu.

Ja ne znam o čemu pišeš. Ovi operatori rade baš ovako. Druga je stvar što je redosled računanja operanada operatora i funkcija proizvoljan. Stoga kod
Code (cpp):

int one() { cout << 1 << endl; return 1; }
int two() { cout << 2 << endl; return 2; }
// ...
int diff = one() - two();
 

može da ispiše 1, pa 2, a može i 2, pa 1. Naravno, diff će imati vrednost -1. No, to nema veze sa tim kako radi binarni operator - u ovom primeru, već sa redosledom izračunavanja operanada, gde je u cilju optimizacije kompajleru dozvoljeno da izabere redosled koji hoće. Koristi funkcije prefix i sufix koje sam napisao i imaćeš isti problem.

Recimo, kod
Code (cpp):

int x = 5;

cout << prefix(x) - suffix(x) << endl;
 

ispisuje 0 u slučaju da se prvo računa prvi operand, a 2 u slučaju da se prvo računa drugi operand.

Bajdvej, formalna verifikacija programa (koja još nije zaživela značajno, mada jeste u nekoj meri) je daleko jednostavnija kada nema bočnih efekata, a iz istih razloga se smatra da je fnkcionaln kod ljudima čitljiviji i jasniji.
[ Shadowed @ 15.04.2014. 07:53 ] @
Citat:
Dragan: Zanimljiv primer (pretpostavljam da si mislio na ArrayList vs LinkedList, dve implementacije List interface-a u Javi). Ja to cesto pitam juniore na intervju-u, i obicno ne znaju, i onda ima malo pomognem i sete se i struktura podataka i sta je u kom slucaju bolje. Ono sto mi je neverovatno da retko ko poveze tu naucenu teoriju sa ovako nekim konkretnim primerom, btw Java collections API je pun primera primene raznoraznih algoritama i design patterna.

Mislio sam na List<T> i LinkedList u .net-u, ali isto vazi za ArrayList umesto List<T> posto je implementacija sustinski ista, samo je jedna bazirana na generics a druga prihvata tip Object pa samim tim sve.
Naravno, bolje je ako znas kako se implementiraju te (i druge) strukture podataka, ali je u vecini poslova dovoljno da znas kako i kada koju da upotrebis, bez da znas kako radi. Ja znam implementacije sticajem okolnosti i zbog licnog interesovanja. Fakultet nisam zavrsio a za posao mi nije trebalo.

Citat:
Dragan: Gro ljudi koji radi kod nas (cca 250) su fakultetski obrazovani, mislim preko 90%, ogromna vecina ETF/PMF. Kao juniori najbolje prolaze ljudi sa relevantnih fakulteta (pre evga FTN/NS), najbze napreduju kasnije - naravno uvek ima izuzetaka, ovo je na bazi mog iskustva (ne znam ni sam sigurno, bar 200-300 intervjua u poslednjih 5-6 godina, preko 70 ljudi koji su kod mene prosli tehnicki intervju i sa dosta njih kasnije sam i radio, obucavao). Cinjenica jeste da je potraznja velika a samim tim i pritisak da se vise zaposljava, mogucnosti za instant skolovanje jos vece - videcemo kako ce to ici. Ja licno verujem u formalno obrazovanje u ovoj sferi, mada znam nekoliko sjajnih strucnjaka koji nikada nisu zavrsili fakultet (mahom poceli) ali isto znam da su isti sedeli dan i noc da bi usvojili vestine koje imaju. No, ovde pricamo o velikim brojevima a ne o izuzecima, mada je pitanje koliko je moje isustvo relevantno.

Pitanje je da li bolje napreduje onaj ko je upravo zavrsio fakultet ili neko ko nije a stekao je isto toliko godina iskustva. Jedino sto to pitanje zavisi od osobe do osobe a ne mozes na istoj osobi isprobati obe varijante :)
U svakm slucaju, ne treba generalizovati. I medju fakultetlijama i medju samoukima ima i dobrih i losih programera. A desavaju se i stvari kao sto je to da neko zavrsi fakultet, ima neko juniorsko znanje programiranja, sql-a i sl. ali ne zna kako se pise port na kraju http adrese u browser-u, ne zna sta je System Idle process (i nije mu ocigledno) i sl. Uostalom, sa toliko intervjuisanih ljudi si se verovatno i sam suretao sa takvima :)
Opet, sto se tice samoukih, najcesce lose situacije su "programiranje se isplati, sad cu ja to da naucim pa da radim". Nekad to da dobre rezultate, cesto ne. Kod samoukih dobre rezultate uglavnom daje ucenje zbog interesovanja a ne zbog zaposlenja.

Citat:
Dragan: Ja sam poceo karijeru sa C/C++, pre nekih 7-8 godina sam se prebacio na Javu. Ono sto se mora odati credit Sun-u ranije a Oraclu sada je da se dosta trude da zadrze backward compatibility, sto na nivou jezika, sto na nivou same platforme (JVMa). Nemojte smetnuti sa uma da Java sledece godine puni 20 godina, pre manje od mesec dana Java 8 je postao GA, a on nam donosi najvece promene u samom jeziku od 5-ice. U konktekstu vremena kada je nastao je uspeo da se nametne kao relativno cist, moderan OO jezik baziran na C-u, mislim da je napravljen solidan kompromis i da tome duguje popularnost. Cenim da ce biti pri vrhu i u narednim godinama, te ima moju preporuku za nekoga ko je na pocetku karijere. Jos nesto, cini mi se da Java ekosistem od pocetka forsira pricu o designu software-a (design patterns, best practices), tako da se obicno i programiranje moze dosta dobro usvojiti posto sam community dosta insistira na tome.

Bez namere da potezem c# vs. java diskusiju jer su u pitanju cisto licne preference, meni se C# vise svidja. Po sintaksi su gotovo isti, medjutim, kod svih jezika imas izvestan trade off izmedju slobode i toga da jezik zna sta je dobro za tebe bolje nego ti sam. C++ vise ide na slobodu a ti moras da pazis na sve zivo. Java opet ide na drugu stranu. Razliciti ljudi preferiraju razlicit odnos izmedju ova dva, nekima je C++ super, nekima Java, meni je C# tacno na pravom mestu :)
Ima tu i tehnickih razloga, kao sto je npr. nepotpuna podska za generics (ne znam koji se termin na srpskom koristi) u Javi (podrzava jezik ali ne i runtime) i sl. No, to ce valjda jednog dana biti implementirano :) MS je ipak imao priliku da sa novijim jezikom iskoristi iskustvo drugih i vidi sta bi trebalo implementirati.

OK, malo flame-a (ipak je advocacy): vidim da je doslo vreme da java kopira od ms-a, nakon sto je ms kopirao stvari iz jave ;] (neki od novih feature-a u verziji 8).
[ Nedeljko @ 15.04.2014. 08:09 ] @
Citat:
Shadowed: Pitanje je da li bolje napreduje onaj ko je upravo zavrsio fakultet ili neko ko nije a stekao je isto toliko godina iskustva. Jedino sto to pitanje zavisi od osobe do osobe a ne mozes na istoj osobi isprobati obe varijante :)
U svakm slucaju, ne treba generalizovati. I medju fakultetlijama i medju samoukima ima i dobrih i losih programera. A desavaju se i stvari kao sto je to da neko zavrsi fakultet, ima neko juniorsko znanje programiranja, sql-a i sl. ali ne zna kako se pise port na kraju http adrese u browser-u, ne zna sta je System Idle process (i nije mu ocigledno) i sl. Uostalom, sa toliko intervjuisanih ljudi si se verovatno i sam suretao sa takvima :)
Opet, sto se tice samoukih, najcesce lose situacije su "programiranje se isplati, sad cu ja to da naucim pa da radim". Nekad to da dobre rezultate, cesto ne. Kod samoukih dobre rezultate uglavnom daje ucenje zbog interesovanja a ne zbog zaposlenja.

Nažalost, stanje sa studijama je takvo, da mada vrednima i zainteresovanima omogućava da nauče, diploma je prestala da bude garancija ikakvog znanja.

Da zavisi od osobe šta joj više odgovara, to je tačno. Da može da se živi i bez akademskog znanja (bilo kako stečenog) je takođe tačno. Ono što bih podvukao je da akademsko znanje i radno iskustvo ne mogu da zamene jedno drugo ni u jednom smeru i da oboje ima svoj značaj.

Što se poslednjeg tiče, smatram da učenje (svejedno kakvo) bez ličnog interesovanja za oblas daje nikakve rezultate. Oni, koji su tu samo zbog kazana uspeju samo slučajno, ako se u toku učenja zainteresuju.
[ Burgos @ 15.04.2014. 10:20 ] @
Citat:
Nedeljko:
U C-u imaš pokazivače, koji su dovoljno dobri da ilustruju suštinu.

Ja ne znam o čemu pišeš. Ovi operatori rade baš ovako. Druga je stvar što je redosled računanja operanada operatora i funkcija proizvoljan. Stoga kod
Code (cpp):

int one() { cout << 1 << endl; return 1; }
int two() { cout << 2 << endl; return 2; }
// ...
int diff = one() - two();
 

može da ispiše 1, pa 2, a može i 2, pa 1. Naravno, diff će imati vrednost -1. No, to nema veze sa tim kako radi binarni operator - u ovom primeru, već sa redosledom izračunavanja operanada, gde je u cilju optimizacije kompajleru dozvoljeno da izabere redosled koji hoće. Koristi funkcije prefix i sufix koje sam napisao i imaćeš isti problem.

Recimo, kod
Code (cpp):

int x = 5;

cout << prefix(x) - suffix(x) << endl;
 

ispisuje 0 u slučaju da se prvo računa prvi operand, a 2 u slučaju da se prvo računa drugi operand.

Bajdvej, formalna verifikacija programa (koja još nije zaživela značajno, mada jeste u nekoj meri) je daleko jednostavnija kada nema bočnih efekata, a iz istih razloga se smatra da je fnkcionaln kod ljudima čitljiviji i jasniji.



Nedeljko, ovo ima undefined behavior u C++-u:

Code:
a = i++ + ++i


Još bolji (naivniji) primer:

i = i++;

Iz standarda:

Citat:
Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression


operator+, kao ni operator= ne stvara sequence point, pa se stvara problem.

Sada, nisu svi operatori slično definisani:

Npr. operator&& generiše sequence point, pa je ovo ok:

a = i++ && ++i;

Tvoje prefix i sufix funkcije rade, zato što se baš pre ulaska u pozvanu funkciju generiše sequence point. Problematično je to što su te funkcije intuitivna reprezentacija ++ operatora, a opet - ne ponašaju se isto. Takođe je problematično da se, baš zato što se kompajleru ostavilo na slobodu da bira, usled različitih redosleda generiše različit rezultat (i = i++ može da bude i 1 i 2).

Kako kaže Branimir, ovo je u Javi (poučeni iskustvom) sve rešeno.

[ Nedeljko @ 15.04.2014. 12:12 ] @
Burgos, kod

a=i++ + ++i;

ima nedefinisano ponašanje i ako operatore uvećanja zameniš funkcijama prefix u suffix, koje sam napisao. To nedefinisano ponašanje je isključiva posledica proizvoljnosti redosleda računanja operanada operatora +.

Sa druge strane, zbog česte potrebe za iskazima oblika

if (p!=0 && *p==5) ...

logički operatori su definisani drugačije, tj. operandi se računaju sleva udesno, pri čemu se ako je levi operand operatora && netačno, onda se desni ne izračunava, već je rezultat netačno. Zato on ima drugačije ponašanje. Definisano mu je ponašanje u potpunosti, uključujući i redosled računanja operanada.

Sa druge strane, u slučaju standardnog operatora uvećanja, iskaz

i=i++;

ima jednoznačno definisano ponašanje, a to je da nema efekta. Zameni operator uvećanja suffux funkcijom i dobićeš isto.
[ Burgos @ 15.04.2014. 12:22 ] @
Moguće da sam pogrešio za funkcije. Međutim, svakako izraz ne bi smeo da ti zavisi od redosleda izračunavanja funkcija.

Što se ovog tiče, grešiš.

i=i++;

nema tačno definisano ponašanje baš zbog ovoga:

Citat:
Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression


Prosto, postoje dva upisa u istu promenljivu u istoj sekvenci, što je nedefinisano.

Pošto ogromna većina kompajlera undefined (ili unspecified) behavior rešava na svoju stranu (ja znam samo za jedan koji to ne radi - CompCert), razrešava ga kao NOP. Međutim,
to je i dalje po standardu undefined behavior i kompajler ne sprečava ništa da u narednoj iteraciji odluči da radi drugačije, npr. postoje ova dva izbora:


Code:

i = 3;
i = i + 1;
int tmp = i;
i = tmp;

Code:

i = 3;
int tmp = i;
i = i + 1;
i = tmp;




(izvor: http://stackoverflow.com/quest...i-i-truly-a-undefined-behavior)



Npr. clang i g++ će sa -Wall (a i dalje mi nije jasno zašto ovo nije default opcija) prijaviti warning:

warning: operation on ‘i’ may be undefined [-Wsequence-point] (g++)

warning: multiple unsequenced modifications to 'i' [-Wunsequenced] (clang)


Npr. VC++ izbacuje 4, a g++ 3.
[ Nedeljko @ 15.04.2014. 14:04 ] @
Prvi kod odgovara iskazu

i=++i;

a drugi iskazu

i=i++;

To nije isto. VC++ krši sva moguća pravila i standarde, pa ga ne treba uzimati za primer. Što se gcc-a i clang-a tiče, oni prijavljuju problem onda kada nemaju dokaza da problem ne postoji, a ne kada problem postoji. U Java i C# jezicima postoji pravilo jasne dodele. Međutim, ono nije zadovoljeno u slučaju

int f(int x)
{
int y = x%2;

y=y*y;
if (y == 0) {return 1;}
if (y == 1) {return 3;}
}

Jednostavno, kompajler nije dovoljno pametan da skapira da su obuhvaćene sve moguće vrednosti za y, pa prijavljuje problem.
[ Burgos @ 15.04.2014. 15:56 ] @
Prosto, kompajler je obavezan samo da implementira standard. To što ti pričaš važi za iskaze

a = ++i;

odnosno

a = i++;

U slučaju i = i++; sve se posmatra kao jedan korak, pa se svi međukoraci mogu preurediti po volji.

U slučaju da u jednoj sekvenci imaš dva upisa u promenljivu (operator= i operator++), imaš undefined behavior i tu je standard prilično jasan - ne propisuje ništa - odnosno jasno kaže da ne propisuje ništa, pa ni VC++ ne krši standard. Inače, ovo je kompajlirano VC++2013, kada je Herb Sutter već 10 godina u VC++ timu i std komitetu (nije VC98 u pitanju), i VC2013 jako dobrim korakom prati standard.

Evo ti ponovo citat iz standarda:

Citat:
Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression.
[ Nedeljko @ 15.04.2014. 17:31 ] @
OK, ali zar ta rečenica ne znači da se to ne može kompajlirati? Hajde, kako to da kompajliraš, a da ni na jednu adresu ne upišeš vrednost više od jedanput?
[ Burgos @ 15.04.2014. 17:42 ] @
Ne kaže tokom celog programa, nego između dva sequence pointa:

Citat:
Between the previous and next sequence point an object shall have its stored value modified at most once by the evaluation of an expression.
;

Citat:

1.
a = 5;
2.
b = a + b;
3.


Ovde imaš tri sequence pointa (ne znam na srpskom). Između 1 i 2, vrednost promenljive a se menja tačno jednom. Između 2 i 3, sačuvana vrednost promenljive b se menja samo jednom (jednom se čita, ali se samo jednom menja).

Dok ovde

Code:
b = a + b++;


vrednost promenljive b se menja dva puta u toku jedne sekvence.

[ Nedeljko @ 15.04.2014. 18:23 ] @
Niko ne pominje ceo program. Rekao si da je cela naredba

i=i++;

između dva uzastopna sequence pointa, tj. da nema nijednog između, pa me zanima kako će cela naredba da se kompajlira a da nema dve dodele promenljivoj i. U onom tvom kodu na oba mesta ima po dve dodele promenljivoj i.
[ Nedeljko @ 15.04.2014. 18:56 ] @
U svakom slučaju, član hotchimney i ja smo se oko nečega složili. Studenti imaju obilatu pomoć nastavnog osoblja, iako nisu masne studentkinje, već npr. muškarci.
[ Odin D. @ 15.04.2014. 19:59 ] @
^ U svakom slucaju, ako se radi o muskom homoseksualnom nastavnom osoblju :)
[ Burgos @ 15.04.2014. 20:33 ] @
Citat:
Nedeljko:
Niko ne pominje ceo program. Rekao si da je cela naredba

i=i++;

između dva uzastopna sequence pointa, tj. da nema nijednog između, pa me zanima kako će cela naredba da se kompajlira a da nema dve dodele promenljivoj i. U onom tvom kodu na oba mesta ima po dve dodele promenljivoj i.


Aha, izvinjavam se, nisam razumeo.

Nisam rekao da je zabranjeno, zato se i kompajlira, pritom je to unutra stvar implementacije kompajlera (može nijednom da ne upiše ništa u memoriju, ako želi) ali kaže - ako ste tako napisali, mi ništa ne garantujemo - može da se desi bilo šta, bilo kako ili da se ne desi ništa - sve je do implementacije kompajlera (a u ovom slučaju, dve implementacije zrelih kompajlera izbacuju dva rezultata, baš iz tog razloga)

Citat:
1.3.24 [defns.undefined]

Undefined behavior

behavior for which this International Standard imposes no requirements
[ Note: Undefined behavior may be expected when this International Standard omits any explicit definition of
c ISO/IEC N3242=11-0012 behavior or when a program uses an erroneous construct or erroneous data.
Permissible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or
program execution in a documented manner characteristic of the environment (with or without the issuance of
a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message).

Many erroneous program constructs do not engender undefined behavior; they are required to be diagnosed.
—end note


O tome je cela priča - ako nisu uključena upozorenja, a neko neiskusan piše ovakav kod (a ovakav kod obično piše neko neiskusan) svašta može da se desi. U Javi su se, hvala Bogu, bar od toga ogradili.
[ Burgos @ 15.04.2014. 20:37 ] @
Moram da se ispravim, upravo gledam, situacija je malo bolja sa C++11, jer je izgleda

i = ++i;

određeno, mada i dalje

i = i++;

nije.
[ bogdan.kecman @ 15.04.2014. 23:29 ] @
Citat:
Burgos:
O tome je cela priča - ako nisu uključena upozorenja, a neko neiskusan piše ovakav kod (a ovakav kod obično piše neko neiskusan) svašta može da se desi. U Javi su se, hvala Bogu, bar od toga ogradili.


Sto znaci samo da je java otpornija na ne-programere. Ne znaci da je "bolja"/"popularnija"... ni Scratch to ne podrzava pa ne znaci da je bolji od bilo cega

To sto se nova programska okruzenja (da ne kazem novi programski jezici) prave tako da, na racun utroska ogromnih kolicina resursa, omogucava(ju) retardima da pisu kod koji kvazi radi, nikako ne moze da znaci da su ta okruzenja / ti jezici "bolji". Java nije VM zato da bi imala GC i da bi nesto moglo ili ne, Java je VM da bi radila na bilo kojoj hw/os kombinaciji a onda vecina restrikcija i mogucnosti proizilazi odatle. Neki drugi su VM samo zato sto je VM jedini nacin da se retardima omoguci da pisu kod koji je sandbox-ed (zato sto doticni developeri OS-a nisu umeli to drugacije da izvedu)... pa im je VM resenje problema koje nisu umeli da rese a ne polazna tacka koja definise ogranicenja..

Rasprava o tome sta ce koji kompajler da uradi za i=i++; ?!?!? svodi se na to da onaj ko to napise u kodu ne treba da se bavi programiranjem nego treba da ide da kosi travu ili secira zabe...

[ Burgos @ 16.04.2014. 00:45 ] @
Nisam rekao da je Java bolja. Ja i ne pišem u Javi, već uglavnom u C-u (i još 10% C++). Samo kažem da bi i C i C++ bili bolji kada bi se ovakve stvari ispravile (a, kao što sam primetio sa onom primedbom za C++11 - već se ispravljaju).

Ono što je neupitno je da razvoj raznih programskih jezika i okruženja i čega već, odgovora svim jezicima/okruženjima, jer se u svakoj iteraciji u svakom jeziku usvajaju najbolje metodologije iz konkurentskih, i mislim da su tu svi na dobitku.


Citat:
Rasprava o tome sta ce koji kompajler da uradi za i=i++; ?!?!? svodi se na to da onaj ko to napise u kodu ne treba da se bavi programiranjem nego treba da ide da kosi travu ili secira zabe...


Nažalost, iako si u pravu, to često nije slučaj. Pogledaj samo prošlu nedelju - ko piše onakav kod ne treba da piše programe, a kamoli da se bakće oko SSL-a, već da kosi travu - a, ipak - piše programe, i to u OpenSSL projektu. Čak ni ja nisam siguran da sam potpuno imun na gluposti - naročito posle 10 sati rada. Ono što bih preporučio svim mladim ljudima (http://www.youtube.com/watch?v=yI-xPpRDrbw#t=241) je da uvek koriste -Wall -Wextra i slično, a poželeo bih da u narednoj iteraciji to bude automatski uključeno.

[ negyxo @ 16.04.2014. 07:52 ] @
Citat:
bogdan.kecman: Sto znaci samo da je java otpornija na ne-programere. Ne znaci da je "bolja"/"popularnija"... ni [url=http://en.wikipedia.org/wiki/Scratch_(programming_language)]Scratch[/url] to ne podrzava pa ne znaci da je bolji od bilo cega

To sto se nova programska okruzenja (da ne kazem novi programski jezici) prave tako da, na racun utroska ogromnih kolicina resursa, omogucava(ju) retardima da pisu kod koji kvazi radi, nikako ne moze da znaci da su ta okruzenja / ti jezici "bolji". Java nije VM zato da bi imala GC i da bi nesto moglo ili ne, Java je VM da bi radila na bilo kojoj hw/os kombinaciji a onda vecina restrikcija i mogucnosti proizilazi odatle. Neki drugi su VM samo zato sto je VM jedini nacin da se retardima omoguci da pisu kod koji je sandbox-ed (zato sto doticni developeri OS-a nisu umeli to drugacije da izvedu)... pa im je VM resenje problema koje nisu umeli da rese a ne polazna tacka koja definise ogranicenja..

Rasprava o tome sta ce koji kompajler da uradi za i=i++; ?!?!? svodi se na to da onaj ko to napise u kodu ne treba da se bavi programiranjem nego treba da ide da kosi travu ili secira zabe...



Uf, uf, mnogo toga napisano a nije bas tacno :)


Jednom prilikom sam radio na nekom ogromnom projektu, vlasnici su se hvalili da imaju preko 2 miliona linija koda, projekat je bio C++/C#, radio je ocajno iz moje perspektive a verujem da su i korisnici mislili isto. No, ono sto je bilo interesantno je to, sto usporenje nije dolazilo od jezika i ostalih slojeva (JIT, GC) nego od loseg programiranja. Tipa, stavis breakpoint i vidis da metod koji treba da se pozove jednom, se pozove 5 puta prilikom ucitavanja, sto je totalno suludo. Elem, poenta je da lose programerske prakse i los code ce uvek biti problem, ne alat, u svemu se moze napisati kvalitetan code ako znas. No to znanje i jeste problem, koja je svrha da znas citavu hierarhiju kako se stvari odvijaju od toga kako se pointeri menjaju u registru, pa do alociranje memorije ako sve sto imas da uradis je da resis neki biznis process?

Kompajleri, kao i razni drugi alati su samo to - alati. Sluze da automatizuju posao. Ako je i = i++ losa praksa, zasto koji persun postoji uopste kao mogucnost da se napise? Automatizuj! Isto tako i lociranje memorije je automatizovano. Sve sto moze da se automatizuje treba da se automatizuje. Krajnji nivo automatizacije je type system, koji mnogi ne razumeju i umesto da puste kompajler (tj. staticku analizu, kompajliranje je tu najmanje bitno) da uradi posao, vecina njih radi rucno. Code se 95% vremena cita, 5% vremena pise - sto bolje definises code da ga masina razume to si bolje posao uradio.
[ jablan @ 16.04.2014. 08:48 ] @
I šta fali Skreču? :D Kad budem učio klinca programiranju sigurno ću pre izabrati skreč nego bilo šta drugo.
[ Nedeljko @ 16.04.2014. 10:22 ] @
Živo me zanima koji je programski jezik najbolji kao prvi, da se pohvataju osnove. Nekada sam mislio da je C, ali ne mislim više tako.
[ dusans @ 16.04.2014. 10:33 ] @
Možda Pascal ali da se izbace forward deklaracije.
[ Shadowed @ 16.04.2014. 10:43 ] @
Citat:
Nedeljko:
Živo me zanima koji je programski jezik najbolji kao prvi, da se pohvataju osnove. Nekada sam mislio da je C, ali ne mislim više tako.

Mislim da to zavisi od onog ko ce uciti i toga da li ce uciti sam ili ce ga neko uciti.
[ gandalf @ 16.04.2014. 11:43 ] @
Mislim da je python. A zbog cega mislim da je python
– Sintaksa najbliza pseudokod–u
– Dobra literatura
– Veliki broj kurseva iz oblasti CS-a koristi python za programski jezik
– Omogucava ucenje vise programerskih paradigmi:
– proceduralno  
– OOP
– Donekle funkcionalno ( map, filter, list comprehension, iteratori, lambda funkcije..)
– Omogucava buducem programeru da se fokusira na problem koji resava a manje na tehnikalije kako to napraviti na racunaru.

Takodje posle toga mislim da bi svako treba da nauci C++ posto obuhvata deo oko low level stvari: memorija, pointeri, kao i OOP. I sve preporuke idu da se nauci i neki funkcionalni jezik ( Scala, Erlang, Haskell.. )
[ jablan @ 16.04.2014. 14:44 ] @
http://programmers.stackexchan...-have-you-taught-your-children :)
[ Ivan Dimkovic @ 16.04.2014. 15:51 ] @
Citat:
gandalf
Takodje posle toga mislim da bi svako treba da nauci C++ posto obuhvata deo oko low level stvari: memorija, pointeri, kao i OOP. I sve preporuke idu da se nauci i neki funkcionalni jezik ( Scala, Erlang, Haskell.. )


Koliko je meni poznato, mozda gresim, u C++-u su pointeri tu samo zbog kompatibilnosti sa C kodom i gomilom biblioteka raspisanim za isti.

"Pravi" C++ kod ne bi trebao da koristi pointere (kao ni, npr, malloc) vec reference, koje su kud i kamo bezbednije od pointera.

Naravno, reference nisu magicno resenje posto mogu da unesu druge probleme ako programeru nisu najjasnije neke stvari, ali tako je sa svim stvarima u zivotu, nista nije dzabe.

Citat:
negyxo
Isto tako i lociranje memorije je automatizovano


Kome treba automatski menadzment memorije, ima GC. Medjutim, postoji gomila jako dobrih razloga zasto je dobro imati i fallback na menadzment memorije "na ruke".

Na primer, pises novi HPC program koji treba da procesira data set na makini sa 8 novih Ivy Bridge EX procesora sa ukupno 120 jezgara.

Tih 8 procesora su podeljeni u 8 NUMA nodova, gde svaki nod ima svoju memoriju.

Ukoliko ne radis alokaciju memorije "na ruke", OS i kompajler nisu dovoljno pametni da ti garantuju da ce memorija biti alocirana optimalno i tako da svaki worker thread bude:

a) Scheduleovan na poseban CPU
b) Radi sa memorijom alociranom u lokalnom NUMA nodu

Za optimalne performanse danas ti >moras< da prvo koristis neki low-level OS API (ili CPU instrukcije) kako bi dobio topologiju sistema, a onda na osnovu te topologije da kreiras optimalan broj radnih niti i "pin-ujes" ih na procesor/jezgro. Takodje, alokacija memorije mora biti takva da radna nit koristi, ako je moguce, memoriju koja je u NUMA nodu na kome trci ta nit.

Ako ovo ne uradis, mozes ocekivati pad performansi koji moze biti drastican ako se radi o memorijski intenzivnoj aplikaciji. Pristup memoriji na stranom NUMA nodu je bar 30-tak% sporiji a cesto i mnogo vise. To nije kraj price, posto pristupi stranim NUMA nodovima, takodje, generisu saobracaj preko processor interconnect bus-a i zauzimaju uncore resurse kada se sve ukombinuje nije iznenadjujuce videti i visestruko veci pad performansi cele aplikacije.

OS ce verovatno rasporediti niti na posebne procesore, ali slabe su sanse da ce ti memorijska alokacija biti optimalna. U najboljem slucaju ce ispasti optimalna u nekim slucajevima i razlikovace se u razlicitim izvrsavanjima programa.

Low-level stvari postoje sa jako dobrim razlogom. Za one kojima trebaju, naravno.

Ako neko kaze "pff, to je HPC... kome to treba" - tacno, HPC spada u <0.1% aplikacija ali operativni sistemi i ozbiljni programski jezici moraju da podrzavaju i HPC, bas kao sto moraju da podrzavaju i mikrokontrolere, ves masine, game konzole, satelite, mobilne telefone i, naravno, Angry Birds. Zbog toga su C/C++ toliko uspesni, zato sto, ako treba, ljudima daju mogucnosti da urade tacno ono sto hoce.

Kome ne treba ta fleksibilnost naravno da je besmisleno da se insistira na rucnoj alokaciji memorije i sl... Ali je isto tako besmisleno insistirati na izbegavanju istih stvari po svaku cenu, zato sto postoje situacije gde su te stvari i te kako potrebne.
[ jablan @ 16.04.2014. 16:03 ] @
Citat:
Nedeljko: ...koji je programski jezik najbolji kao prvi, da se pohvataju osnove...


Citat:
Ivan Dimkovic: ...pises novi HPC program koji treba da procesira data set na makini sa 8 novih Ivy Bridge EX procesora sa ukupno 120 jezgara...


o.O
[ Nedeljko @ 16.04.2014. 16:04 ] @
Hahaha! Bravo jablane! Baš si me nasmejao!
[ Nedeljko @ 16.04.2014. 18:09 ] @
Citat:
Ivan Dimkovic: Koliko je meni poznato, mozda gresim, u C++-u su pointeri tu samo zbog kompatibilnosti sa C kodom i gomilom biblioteka raspisanim za isti.

"Pravi" C++ kod ne bi trebao da koristi pointere (kao ni, npr, malloc) vec reference, koje su kud i kamo bezbednije od pointera.

Naravno, reference nisu magicno resenje posto mogu da unesu druge probleme ako programeru nisu najjasnije neke stvari, ali tako je sa svim stvarima u zivotu, nista nije dzabe.

Grešiš, jer upućivanja ne mogu biti korišćena za stvaranje objekata, već objekti moraju negde prethodno da postoje. Nemoguće je napraviti bez pokazivača program koji radi sa količinom podataka koja nije u programu unapred ograničena. Ne možeš ni listu, ni skup, ni mapu da implementiraš tako. U principu, upućivanja daju podfunkcionalnost pokazivača za prenos parametara i rezultata po adresi.

Naravno, pokazivači mogu biti negde enkapsulirani, ali ih mora biti u nekom obliku. Međutim, čini mi se da čak i nije moguće sve rešiti preko stl-a.
[ negyxo @ 16.04.2014. 18:22 ] @
@Ivan Dimkovic

Ne sporim ja to sto si ti napisao ali kao sto si i sam primetio to su stvari u 1% slucajeva a mozda i manje. Mislim da na celoj temi je mozda problem sto se ne kaze sta se na sta odnosi.

Moja poenta je da se stvari moraju automatizovati, naravno zavisno u odnosu na nivo na kom se radi, recimo zasto ne bi sve pisali low level recimo samo u asambleru. Recimo sve ono sto radi calling convention u C++-u uzeti i rucno uvek pistati. To nije optimalno, tu se stvari ponavljaju i povecava se verovatnoca za gresku. U zavisnosti sta se resava treba prepoznati sta moze da se automatizuje. Zato su low-level stvari problem u "visljim" jezicima (ne zato sto su oni "vislji"). Recimo, nacin na koji ce se memorija locirarati, ako se radi svaki put isto, i mora da se ispuni neki pattern (tipa onaj koji zadnji koristi refrencu treba da releasuje), zasto to onda ne automatizovati, zato sluze alati. Ako programer mora rucno to da pamti i uci, onda tu nesto smrdi. Jos jedan razlog zasto u visljim jezicima sve te stvari ne treba dirati "low level" moglo bi se opisati u onoj izreci "od sume se ne vidi drvece". Prosto, mnogo povezanih stari ima, obimno je i tesko je sekvencijalno postavljati stvari gde jedino ima smisla deklarativno se izrazavati, plus postoji onaj "traffic effect", svi mi bi mogli na malo da u saobracaju optimizujemo putanje tako da nama bude dobro, tipa krenes suprotnom trakom, ides stazom itd. ali ako to svi krenu da rade, na kraju je ceo sistem samo gori ne bolji.
[ Ivan Dimkovic @ 16.04.2014. 18:43 ] @
Citat:
jablan:
Citat:
Nedeljko: ...koji je programski jezik najbolji kao prvi, da se pohvataju osnove...


Citat:
Ivan Dimkovic: ...pises novi HPC program koji treba da procesira data set na makini sa 8 novih Ivy Bridge EX procesora sa ukupno 120 jezgara...


o.O


Hm, probaj da povecas memoriju za pracenje thread-a - iako nick-ovi negyxo i Nedeljko mozda slicno izgledaju moja poruka je odgovor na poruku prve osobe, ne druge.

U pitanju su 2 razlicita... konteksta. Preporucujem par DDR3 modula :-)
[ Ivan Dimkovic @ 16.04.2014. 18:47 ] @
@Nedeljko,

Da se ispravim, filozofija "dobrog C++-a" je izbegavanje pointera kada god je to moguce. U "normalnom" kodu koji je pisan tako da bude "moderni C++" se ocekuje da ces koristiti kojekakve STL-ove, boost-ove i sl... pa ne bi trebalo da postoji potreba da sam baratas preterano sa pointerima u svom C++ kodu.

IMHO, ja nemam nista protiv pointera. Stavise, vise ih koristim nego reference iz navike. Ali razumem ideju da se reference koriste umesto pointera gde god je to moguce zato sto su "bezbednije".

@negyxo,

Tih "1%" su i razlog zasto postoje jezici kao sto su C i C++.

Bilo bi besmisleno zahtevati da se neka poslovna aplikacija, web sajt i sl... pisu u C-u ili C++-u, bas kao sto je besmisleno insistirati na GC-u u svim slucajevima.
[ negyxo @ 16.04.2014. 18:52 ] @
Znas, ovo je jedna od onih tema gde se vec izgubi nit sta tacno ko hoce da dokaze :)

Recimo, to sto ti pricas meni je sasvim jasno i tako stvari treba da stoje.
[ Nedeljko @ 16.04.2014. 21:35 ] @
Citat:
Ivan Dimkovic: @Nedeljko,

Da se ispravim, filozofija "dobrog C++-a" je izbegavanje pointera kada god je to moguce. U "normalnom" kodu koji je pisan tako da bude "moderni C++" se ocekuje da ces koristiti kojekakve STL-ove, boost-ove i sl... pa ne bi trebalo da postoji potreba da sam baratas preterano sa pointerima u svom C++ kodu.

IMHO, ja nemam nista protiv pointera. Stavise, vise ih koristim nego reference iz navike. Ali razumem ideju da se reference koriste umesto pointera gde god je to moguce zato sto su "bezbednije".

Šta znam. Postoje zadaci, koje ja znam da rešim preko pokazivača, ali ne i bez izričitih pokazivača, tj. samo sa enkapsuliranim u biblioteci, osim veštački, tako da mi vektor glumi memoriju, pa da po njemu vršim "alokaciju", a da su mi indeksi "adrese", tj. ne znam upotrebom biblioteke kako treba, bez da imam pokazivače van bibliotečkih klasa. Ne kažem da je nemoguće, ali ima takvih zadataka, koje ja ne znam tako da rešim, a znam preko pokazivača.
[ Ivan Dimkovic @ 16.04.2014. 21:43 ] @
@Nedeljko,

Mislim da je ideja (kazem mislim, posto ne pripadam skoli misljenja "pointeri su losi") da se upotreba pointera minimizuje samo na objekte najnizeg nivoa (tamo gde su neophodni), a i u low-level kodu je ideja koristiti stvari kao sto su smart pointer-i ako je ikako moguce.

IMHO, vezbanje "izbegavanja pointera po svaku cenu" tipa ta ideja sa vektorom zanimljivo sa neke teorijske strane ali prakticno ne znam zasto bi to koristio u produkcionom kodu.

Sto se mene licno tice, kod sa smart pointerima i reference countingom je, za mene, vec dovoljno "visokog nivoa". Ako neko misli da ce daljim sandboxingom da spreci greske programera, sta znam... mislim da je to nemoguca misija i da se problem samo odlaze / premesta na drugo mesto.
[ Nedeljko @ 16.04.2014. 22:04 ] @
U stvari, u pravu si. Taj zadatak znam da rešim sa shared_ptr, za koji ne treba boost, već pripada standardnoj biblioteci. No, nisam siguran da se sve može rešiti tako. Naravno, uz ogradu da me neko ne proziva sa proof of concept-om sa "alokacijom" po vektoru (jer on "rešava" opšti slučaj).

No, svakako sve ima svoju cenu, pa i izbegavanje pokazivača u nekim situacijama može biti "skuplja dara nego mera".

Naravno, ni shared_ptr ne rešava sve probleme. Postoje kružne reference. Odbrana od njih su weak_ptr u kombinaciji sa shared_ptr. Međutim, ni oni nisu "devojka za sve".

Razlog zbog kojeg ne mogu da smislim C je što nema konstruktore i destruktore, pa da mi barem omogući da neke stvari automatizujem pravljenjem odgovarajućeg tipa.
[ hotchimney @ 17.04.2014. 03:18 ] @
Citat:
Nedeljko

U svakom slučaju, član hotchimney i ja smo se oko nečega složili. NEKI (<-- dodao hotchimney) Studenti imaju obilatu pomoć nastavnog osoblja

[ Branimir Maksimovic @ 17.04.2014. 06:01 ] @
Citat:
Ivan Dimkovic:
Citat:
gandalf
Takodje posle toga mislim da bi svako treba da nauci C++ posto obuhvata deo oko low level stvari: memorija, pointeri, kao i OOP. I sve preporuke idu da se nauci i neki funkcionalni jezik ( Scala, Erlang, Haskell.. )


Koliko je meni poznato, mozda gresim, u C++-u su pointeri tu samo zbog kompatibilnosti sa C kodom i gomilom biblioteka raspisanim za isti.

"Pravi" C++ kod ne bi trebao da koristi pointere (kao ni, npr, malloc) vec reference, koje su kud i kamo bezbednije od pointera.

Naravno, reference nisu magicno resenje posto mogu da unesu druge probleme ako programeru nisu najjasnije neke stvari, ali tako je sa svim stvarima u zivotu, nista nije dzabe.


C++ pointeri su preuzeti kao koncept iteratora i siroko se koriste u standardnoj biblioteci. To ne samo da je zacementiralo
koriscenje pointera, nego je napravilo od njih apstraktni interfejs.
Dakle ti funciji sort podjednako mozes baciti dva prava pointera i dva random access iteratora
i f-ja nece primetiti razliku.
[ hotchimney @ 17.04.2014. 09:57 ] @
Citat:
Nedeljko

Živo me zanima koji je programski jezik najbolji kao prvi, da se pohvataju osnove

Mogu da prenesem iskustva nekih nastavnika koji su držali programiranje u srednjoj (elektrotehničkoj) školi a u skladu su sa preferencijama za C.
Učenici obično dobro savladaju osnovne programske strukture i tipove podataka uključujući nizove i liste pa čak i implementaciju steka. Tako da u suštini C nije problem. Napredniji učenici mogu da savladaju i implementaciju polinoma.
Naravno, sve ovo može da se radi i u Paskalu. Ali oni koji će koristiti C bolje da odmah počnu sa C a to će sigurno koristiti elektrotehničari.

Štaviše neki su koristili i VC u nastavi.
[ Nedeljko @ 17.04.2014. 13:15 ] @
Ne zanimaju me iskustva onih kojima su polinomi napredno znanje. Ako učenik ne zna da implementira Ojlerov algoritam, koji mu je dat, za nalaženje Ojlerovog puta u grafu, on nije naučio taj jezik.
[ hotchimney @ 17.04.2014. 14:37 ] @
Ovde je reč o elektrotehničarima (sa 2+2 časa programiranja nedeljno) a ne o matematičkoj gimnaziji. Oni takve stvari ne rade čak ni na takmičenjima.

Osim toga, probaj takav stav da izneseš u realnosti. Zaposli se ui školi, pa i u matematičkoj gimnaziji. I javi nam kako si prošao.

Na kraju poznavanje grafova (pa i Ojlerovog algoritma) ne povlači poznavanje bilo kojeg programskog jezika.
[ Nedeljko @ 17.04.2014. 15:34 ] @
Ja ne pričam o školama u kojima se nešto uči samo da bi se učilo, nego o nekome ko hoće jednog dana da bude softerski inženjer.

A ovo oko grafova je totalno mašenje poente. No, od takih se više ne može očekivati.

Sposobnost da se Ojlerov algoritam, koji je dat, implementira u nekom programskom jeziku, polači poznavanje tog programskog jezika. Baš da vidim kako će bez dobrog znanja nekog programskog jezika neko da implementira u tom jeziku Ojlerov algoritam. Nigde nisam pominjao ni poznavanje grafova, ni Ojlerovog algoritma, već umenje implementacije, kada je on dat.
[ hotchimney @ 18.04.2014. 01:17 ] @
Pročitaj nastavne planove i programe pa nas obavesti kako i u kojoj školi ćeš implementirati Ojlerov algoritam.
[ Nedeljko @ 18.04.2014. 09:21 ] @
O školama uopšte ne pričam, a Ojlerov algoritam je vrlo lako objasniti. Taj program bi se mogao raditi u bilo kojoj školi ili bilo gde drugde, pod uslovom da je nastava nekog programskog jezika ozbiljna. U moje vreme je nastava programiranja u srednjim školama bila ozbiljna. Odavno više nije ni u matematičkoj gimnaziji. Rade se banalne stvari uvijene u oblande.
[ bogdan.kecman @ 26.04.2014. 23:29 ] @
Citat:
negyxo:
Kompajleri, kao i razni drugi alati su samo to - alati. Sluze da automatizuju posao. Ako je i = i++ losa praksa, zasto koji persun postoji uopste kao mogucnost da se napise?


uzmem pistolj i pucam sebi u nogu, greska je u mojoj glavi ne u nacinu na koji funkcionise pistolj.
c/c++ ti daju mnooogo ozbiljnije nacine da se upucas u nogu od i=i++;


Citat:
negyxo:
Automatizuj! Isto tako i lociranje memorije je automatizovano. Sve sto moze da se automatizuje treba da se automatizuje. Krajnji nivo automatizacije je type system,


krajnji nivo te automatizacije je sistem koji trosi 2-200 puta vise resursa nego sto je potrebno i radi 30 do 300000% sporije nego sto bi mogao samo zato da bi u slucaju pucanja sebi u nogu sistem to prepoznao i promasio nogu (i obicno napravio stetu na prozoru, ruci, ili komsiskom detetu posto taj ko zeli da se upuca u nogu ma koliko ga ti zatvarao u neki sandbox on ce naci nacin da napravi stetu).


Citat:
negyxo:
sto bolje definises code da ga masina razume to si bolje posao uradio.


mnogo ces lakse da "definises" koda koji masina moze da "razume" u jeziku nizeg nivoa. u jeziku viseg nivoa, posebno u raznim virtualnim kala... ti ne objasnjavas nista "masini" vec koristis stvari koje je vec neko objasnio (opet u C ili C++ a ne u tim virtualnim....) a pritom si ti vec deklarisan kao retardiran pa ti nije dozvoljeno da sam objasnis masini sta hoces nego si limitiran da koristis gotova resenja.


inace sto se ucenja programiranja tice ja lupam glavu time vec 6 godina radeci na jednom privatnom projektu .. vec sam 4-5 puta promenio misljenje .. logo, prolog, pascal/modula2 i nesto poput scratch-a .. trenutno mi je logo favorit i projekat ide u tom pravcu ali kao sto rekoh vec promenih misljenje vise puta .. no sad moram da ubrzam, klinac vec pregurao 9 meseci...
[ negyxo @ 27.04.2014. 10:36 ] @
Citat:
bogdan.kecman: uzmem pistolj i pucam sebi u nogu, greska je u mojoj glavi ne u nacinu na koji funkcionise pistolj.
c/c++ ti daju mnooogo ozbiljnije nacine da se upucas u nogu od i=i++;



Po ovome se vidi da se bas i ne razumemo. Skocis sa zgrade i greska je u tvojoj glavi, ne u zgradi :) Recmo, ekvivalent bi bio, programiras aplikaciju kao photoshop, i namestis neki cache na FS i kada hoces da oslobodis cache, ti pozoves "format c:" :) Opet, greska je u tvojoj glavi, ne u "format c:". Ne znam da li primecujes, ali zar ne vidis koliko je neprimeren ovaj primer, posto o tome ja nisam sigurno govorio, posto ne mozes automatizovati sve a da nemas sve informacije. Automatizacija o kojoj ja pricam je ona kao recimo automatska kapija, stisnes dugme (ili senzor, zavisi od konteksta) ona se otvori, a ne da stalno izlazis iz auta, otvoris, zatvoris, ako bas hoces, habas i auto svaki put dodatno... O tome pricam, automatizujes tamo gde ima smisla, ne tamo gde je skoro ne moguce automatizovati jer je context veoma sirok, i za to ti treba strong Ai.


Citat:

krajnji nivo te automatizacije je sistem koji trosi 2-200 puta vise resursa nego sto je potrebno i radi 30 do 300000% sporije nego sto bi mogao samo zato da bi u slucaju pucanja sebi u nogu sistem to prepoznao i promasio nogu (i obicno napravio stetu na prozoru, ruci, ili komsiskom detetu posto taj ko zeli da se upuca u nogu ma koliko ga ti zatvarao u neki sandbox on ce naci nacin da napravi stetu).


Prvo, kad trosi? Compile time li runtime? S tim, sto ovo compile time shvati malo sire, posto nije samo kompajler taj koji treba da radi, nego recimo i gomilu ostalih alata mozes tu da ubrojis koji spremaju code. Moje licno iskustvo upravo suprotno govori, vise automatizacije, bolji rezultati.

Drugo, moramo i razjasniti sta je automatizacija - za mene je to sve, bilo koji deo programa koji alat preuzima sa mene i na osnovu informacija koje ima i algoritma po kojem radi moze da odluci brze, bolje i preciznije od mene.

Trece, opet ne znam na sta ciljas kada kazes sporije, da li mislis samo na jezik? Jer ako jeste, onda se opet ne mogu sloziti a da ne kazes pre toga sta se resava, koje vrste aplikacje se pisu? Iz sveta desktop aplikacija (posto tu najvise radim) mogu ti reci da ako nesto lose radi nema veze sa jezikom per-se, nego isklucivo sa raznim nepotrebnim slojevima, API-ma, koji dolaze od samog/ih autora programa. To nema veze sa tim koji si programski jezik izabrao.


Citat:

mnogo ces lakse da "definises" koda koji masina moze da "razume" u jeziku nizeg nivoa. u jeziku viseg nivoa, posebno u raznim virtualnim kala... ti ne objasnjavas nista "masini" vec koristis stvari koje je vec neko objasnio (opet u C ili C++ a ne u tim virtualnim....) a pritom si ti vec deklarisan kao retardiran pa ti nije dozvoljeno da sam objasnis masini sta hoces nego si limitiran da koristis gotova resenja.


Na nizem nivou ne mozes nista da objasnis u vezi code-a. Jedino sto mozes da koristis za objasnjavanje code-a je type-system. I tu su ti manje-vise svi jezici koji imaju staticku analizu (samim tim i tipove) prilicno jednaki medju sobom.
[ kkedacic @ 27.04.2014. 15:52 ] @
Citat:
negyxo: Drugo, moramo i razjasniti sta je automatizacija - za mene je to sve, bilo koji deo programa koji alat preuzima sa mene i na osnovu informacija koje ima i algoritma po kojem radi moze da odluci brze, bolje i preciznije od mene.


Mislim da je stvar u kvantiteti i kvaliteti informacija koje dajes automatizaciji, na low levelu ima vise informacija koje su specificnije, na high levelu mnogo se stvari pretpostavlja i informacije su manje specificne.
[ negyxo @ 27.04.2014. 17:53 ] @
Pazi, sada kada kazes tako, ja niti mogu reci da, niti ne. Sta ti je konkretno high level, a sta low level i koji domen resavas? Da li je assembler dovoljno low level i da li ti je bitno da bi izracunao procenat vlage u silosu u nekom biznis modelu to sto mozes da se igras sa Instruction Pointerom i premestas egzekuciju po volji?
[ Nedeljko @ 28.04.2014. 10:07 ] @
Kapiram ja da treba da se automatizuju stvari koje ima smisla automatizovati. Međutim, ovde se pisalo o neemu sasvim drugom - da radnik ne treba ništa da zna, tj. da njega treba automatizovati.

Naravno da je poenta automatizacije u tome da mašina odmeni čoveka u nečemu, međutim, onda čovek radi druge stvari, koje se još ne mogu automatizovati, pa je ljudski rad u tom pogledu vremenom sve kreativniji i samim tim treba znati sve više, a nikako se manje. Ko hoće da radi na pokretnoj traci, treba da zna da takvih traka koje zahtevaju prisustvo čoveka ima sve manje.
[ bogdan.kecman @ 29.04.2014. 00:28 ] @
Citat:
negyxo:
Po ovome se vidi da se bas i ne razumemo.

ocigledno, ti si kao primer dao i=i++; i "koji persun postoji", ja na to kazem sto pucas sebi u nogu, meni je to odlicno poredjenje sa i=i++;



Citat:
negyxo:Prvo, kad trosi?

obzirom da je prica oko c-a ja mislim na runtime, sto se compile time tice nemam nikakav problem da kompajler potrosi malo vise vremena kada mu se upale sve optimizacije da bi napravio bolji kod. kod nekih jit kompajlera compile time moze da ima znacaj no iskreno ne koristim nista sa jit kompajlerom pa me ne tangira previse

Citat:
negyxo:
Drugo, moramo i razjasniti sta je automatizacija - za mene je to sve, bilo koji deo programa koji alat preuzima sa mene i na osnovu informacija koje ima i algoritma po kojem radi moze da odluci brze, bolje i preciznije od mene.

ti si uveo taj termin i mislim da je pogresan u ovom kontekstu. svaka funkcija ili procedura ti je "automatizacija". realno svaka stvar tu mora posebno da se razmatra, kada je korisno da imas GC a kada nije (a ako hoces mozes da ga imas i u C-u nije nikakav problem) etc etc ... ono protiv cega se ja bunim je restrikcija programera zato sto se apriori ide sa tim da je programer retard. nemam ja problem da mi ti das funkciju za alokaciju memorije koja ce da na koji god nacin radi mem management i cisti zamnom i da ja nikad ne moram da radim free(), ali ako mi zabranis da ja mogu da radim free - hebo jezik ... ako ja znam da mi ova instanca vise ne treba, da mi vise nikad nece trebati nemoj me prcas da moram da cekam da gc dodje na red izbroji svoje potrosi cudo mudo cpu-a i opet odluci da izbaci iz rama nesto drugo a ovo ostavi za sledeci put ..

Citat:
negyxo:
Trece, opet ne znam na sta ciljas kada kazes sporije, da li mislis samo na jezik? Jer ako jeste, onda se opet ne mogu sloziti a da ne kazes pre toga sta se resava, koje vrste aplikacje se pisu? Iz sveta desktop aplikacija (posto tu najvise radim) mogu ti reci da ako nesto lose radi nema veze sa jezikom per-se, nego isklucivo sa raznim nepotrebnim slojevima, API-ma, koji dolaze od samog/ih autora programa. To nema veze sa tim koji si programski jezik izabrao.


desktop aplikacije su uglavnom spore same po sebi, sporo se desavaju stvari, zavise previse od inputa pojedinacnog korisnika .. tu se razni ti problemi slabo vide, osim kada trcis na baterije, tada vrlo brzo primetis da neke aplikacije trose vise struje i vrlo brzo primetis sta je .not aplikacija a sta je native


[ negyxo @ 29.04.2014. 10:23 ] @
Ne ja nisam nista navodio kao primer, nego je to odgovor na tvoj opasku:
Citat:

Rasprava o tome sta ce koji kompajler da uradi za i=i++; ?!?!? svodi se na to da onaj ko to napise u kodu ne treba da se bavi programiranjem nego treba da ide da kosi travu ili secira zabe...


Posto, ne pisu ljudi samo namerno tako nesto, nego i slucajno, i ja stvarno nemam nameru da za sve stvari koje znam da su lose se bavim analizom code-a kada to moze da radi kompjuter mesto mene. Naravno, svestan sam da ne mogu sve stvari da automatizujem, ali sto vise to bolje :)
Drugo, moj odgovor je ujedno bio generalan, ne samo na ovaj primer koji je ne znam ko naveo, za sve te stvari se uvek svodi na isto, ako znas kako nesto da automatizujes, tim bolje, nego da se smaras i ucis bespotrebne gluposti i sto je najgore, vecina tih stvari nema veze sa problemom koji resavas.


Citat:

obzirom da je prica oko c-a ja mislim na runtime, sto se compile time tice nemam nikakav problem da kompajler potrosi malo vise vremena kada mu se upale sve optimizacije da bi napravio bolji kod. kod nekih jit kompajlera compile time moze da ima znacaj no iskreno ne koristim nista sa jit kompajlerom pa me ne tangira previse


Ali ko ovde prica o C-u? Ti si stavio naglasak na "druge" jezike. Valjda su to svi osim C i C++-a. Tako da moje pitanje i jeste upuceno onda u tom contextu. Gde su ti jezici spori, compile ili runtime? Posto i mene bas briga za compile time, bitan je runtime. U runtime, ta usporenja o kojima pricas, kao sto sam vise puta rekao, mogu da dodju samo od losih resenja.

Samo da razjasnim, posto vidim da se vec par puta na tu stranu naginje, ja licno nisam dovodio u pitanje C++ (C je vec drugo, on je apsolutni sh*t, osim za sistemsko programirnanje) i da li je dobro imati vecu kontrolu (osim sto sporim da je ta kontrola sasvim nepotrebna za odredjene vrste aplikacije), nego se ne slazem sa tim stavom da su ostala resenja losa, kao sto nisu, nedostaci nisu u opste nedostaci zato sto to C++ ima a drugi jezici nemaju, jer bas to sto nemaju i jeste ciljano da nemaju kako bi uprostili resavanja domena za koji su namesteni.

Citat:

ti si uveo taj termin i mislim da je pogresan u ovom kontekstu. svaka funkcija ili procedura ti je "automatizacija". realno svaka stvar tu mora posebno da se razmatra, kada je korisno da imas GC a kada nije (a ako hoces mozes da ga imas i u C-u nije nikakav problem) etc etc

Za drugi termin ne znam. Naravno da je i funkcija automatizacija, sve compile time greske su ti automatizacija.

Citat:

... ono protiv cega se ja bunim je restrikcija programera zato sto se apriori ide sa tim da je programer retard. nemam ja problem da mi ti das funkciju za alokaciju memorije koja ce da na koji god nacin radi mem management i cisti zamnom i da ja nikad ne moram da radim free(), ali ako mi zabranis da ja mogu da radim free - hebo jezik ... ako ja znam da mi ova instanca vise ne treba, da mi vise nikad nece trebati nemoj me prcas da moram da cekam da gc dodje na red izbroji svoje potrosi cudo mudo cpu-a i opet odluci da izbaci iz rama nesto drugo a ovo ostavi za sledeci put ..

Ne, nije to zato sto je programer retard, nego njegovo vreme kosta. I ti opet ne vidis siru sliku, ja sam vec naveo primer u saobracaju, lepo je to sto ti vidis kada tebi instanca ne treba i kada znas zasigurno, ali sta je kada ne znas? Tvoje vreme da ispratis gde se kad koja instanca koristi je skupo, i umesto da resavas biznis model, ti pocinjes da trosis resurse na nesto sto moze da se automatizuje i sto u opste nema tako lose performanse o kojima govoris.

Ne znam kako ne vidis to, ali zasto svi masovno ne predju na C++? Po tebi je to zasigurno zasto sto su svi retardi, sto je naravno daleko od istine. Razlog upravo lezi u trzistu, nece tebe niko cekati da ti namestis idealano optimizovan program ako neko ponudi program pre tebe koji radi. Vreme kosta, cije god da je.

[ Nedeljko @ 29.04.2014. 12:33 ] @
nexygo,

Ja nemam ništa protiv pajtona/džave/.neta, već samo protiv lošeg programiranja i stava da je stručnost nepotrebna jer je "problem sortiranja rešen". Biblioteke rešavajz softverske probleme, koliko i kalkulator matematičke.
[ dusans @ 29.04.2014. 13:04 ] @
http://www.joelonsoftware.com/articles/APIWar.html


Automatic Transmissions Win the Day

Don't get me wrong... I think .NET is a great development environment and Avalon with XAML is a
tremendous advance over the old way of writing GUI apps for Windows. The biggest advantage of .NET
is the fact that it has automatic memory management.

A lot of us thought in the 1990s that the big battle would be between procedural and object
oriented programming, and we thought that object oriented programming would provide a big boost in
programmer productivity. I thought that, too. Some people still think that. It turns out we were
wrong. Object oriented programming is handy dandy, but it's not really the productivity booster
that was promised. The real significant productivity advance we've had in programming has been from
languages which manage memory for you automatically. It can be with reference counting or garbage
collection; it can be Java, Lisp, Visual Basic (even 1.0), Smalltalk, or any of a number of
scripting languages. If your programming language allows you to grab a chunk of memory without
thinking about how it's going to be released when you're done with it, you're using a
managed-memory language, and you are going to be much more efficient than someone using a language
in which you have to explicitly manage memory. Whenever you hear someone bragging about how
productive their language is, they're probably getting most of that productivity from the automated
memory management, even if they misattribute it.

Racing car aficionados will probably send me hate mail for this, but my experience has been that
there is only one case, in normal driving, where a good automatic transmission is inferior to a
manual transmission. Similarly in software development: in almost every case, automatic memory
management is superior to manual memory management and results in far greater programmer
productivity.

If you were developing desktop applications in the early years of Windows, Microsoft offered you
two ways to do it: writing C code which calls the Windows API directly and managing your own
memory, or using Visual Basic and getting your memory managed for you. These are the two
development environments I have used the most, personally, over the last 13 years or so, and I know
them inside-out, and my experience has been that Visual Basic is significantly more productive.
Often I've written the same code, once in C++ calling the Windows API and once in Visual Basic, and
C++ always took three or four times as much work. Why? Memory management. The easiest way to see
why is to look at the documentation for any Windows API function that needs to return a string.
Look closely at how much discussion there is around the concept of who allocates the memory for the
string, and how you negotiate how much memory will be needed. Typically, you have to call the
function twice—on the first call, you tell it that you've allocated zero bytes, and it fails with a
"not enough memory allocated" message and conveniently also tells you how much memory you need to
allocate. That's if you're lucky enough not to be calling a function which returns a list of
strings or a whole variable-length structure. In any case, simple operations like opening a file,
writing a string, and closing it using the raw Windows API can take a page of code. In Visual Basic
similar operations can take three lines.

So, you've got these two programming worlds. Everyone has pretty much decided that the world of
managed code is far superior to the world of unmanaged code. Visual Basic was (and probably
remains) the number one bestselling language product of all time and developers preferred it over C
or C++ for Windows development, although the fact that "Basic" was in the name of the product made
hardcore programmers shun it even though it was a fairly modern language with a handful of
object-oriented features and very little leftover gunk (line numbers and the LET statement having
gone the way of the hula hoop). The other problem with VB was that deployment required shipping a
VB runtime, which was a big deal for shareware distributed over modems, and, worse, let other
programmers see that your application was developed in (the shame!) Visual Basic.

Sidebar
Why does automatic memory management make you so much more productive? 1) Because you can write
f(g(x)) without worrying about how to free the return value from g, which means you can use
functions which return interesting complex data types and functions which transform interesting
complex data types, in turn allowing you to work at a higher level of abstraction. 2) Because you
don't have to spend any time writing code to free memory or tracking down memory leaks. 3) Because
you don't have to carefully coordinate the exit points from your functions to make sure things are
cleaned up properly.
[ negyxo @ 29.04.2014. 13:26 ] @
Nedeljko,

Moj stav je naravno da je vise znanja bolje, ali kada se uzme u obzir kontekst gde se sta resava, onda se moram sloziti sa prethodnicima, nije potrebno da znas sta se desava ispod haube, posto ne resavas taj problem, recimo sortiranja nego resavas neki drugi problem gde je sortiranje samo deo resenja tog problema.
[ Nedeljko @ 29.04.2014. 13:45 ] @
Citat:
dusanshttp://www.joelonsoftware.com/articles/APIWar.html


Automatic Transmissions Win the Day

Don't get me wrong... I think .NET is a great development environment and Avalon with XAML is a
tremendous advance over the old way of writing GUI apps for Windows. The biggest advantage of .NET
is the fact that it has automatic memory management.

A lot of us thought in the 1990s that the big battle would be between procedural and object
oriented programming, and we thought that object oriented programming would provide a big boost in
programmer productivity. I thought that, too. Some people still think that. It turns out we were
wrong. Object oriented programming is handy dandy, but it's not really the productivity booster
that was promised. The real significant productivity advance we've had in programming has been from
languages which manage memory for you automatically. It can be with reference counting or garbage
collection; it can be Java, Lisp, Visual Basic (even 1.0), Smalltalk, or any of a number of
scripting languages. If your programming language allows you to grab a chunk of memory without
thinking
about how it's going to be released when you're done with it, you're using a
managed-memory language, and you are going to be much more efficient than someone using a language
in which you have to explicitly manage memory. Whenever you hear someone bragging about how
productive their language is, they're probably getting most of that productivity from the automated
memory management, even if they misattribute it.

Racing car aficionados will probably send me hate mail for this, but my experience has been that
there is only one case, in normal driving, where a good automatic transmission is inferior to a
manual transmission. Similarly in software development: in almost every case, automatic memory
management is superior to manual memory management and results in far greater programmer
productivity.

If you were developing desktop applications in the early years of Windows, Microsoft offered you
two ways to do it: writing C code which calls the Windows API directly and managing your own
memory, or using Visual Basic and getting your memory managed for you. These are the two
development environments I have used the most, personally, over the last 13 years or so, and I know
them inside-out, and my experience has been that Visual Basic is significantly more productive.
Often I've written the same code, once in C++ calling the Windows API and once in Visual Basic, and
C++ always took three or four times as much work. Why? Memory management. The easiest way to see
why is to look at the documentation for any Windows API function that needs to return a string.
Look closely at how much discussion there is around the concept of who allocates the memory for the
string, and how you negotiate how much memory will be needed. Typically, you have to call the
function twice—on the first call, you tell it that you've allocated zero bytes, and it fails with a
"not enough memory allocated" message and conveniently also tells you how much memory you need to
allocate. That's if you're lucky enough not to be calling a function which returns a list of
strings or a whole variable-length structure. In any case, simple operations like opening a file,
writing a string, and closing it using the raw Windows API can take a page of code. In Visual Basic
similar operations can take three lines.

So, you've got these two programming worlds. Everyone has pretty much decided that the world of
managed code is far superior to the world of unmanaged code. Visual Basic was (and probably
remains) the number one bestselling language product of all time and developers preferred it over C
or C++ for Windows development, although the fact that "Basic" was in the name of the product made
hardcore programmers shun it even though it was a fairly modern language with a handful of
object-oriented features and very little leftover gunk (line numbers and the LET statement having
gone the way of the hula hoop). The other problem with VB was that deployment required shipping a
VB runtime, which was a big deal for shareware distributed over modems, and, worse, let other
programmers see that your application was developed in (the shame!) Visual Basic.

Sidebar
Why does automatic memory management make you so much more productive? 1) Because you can write
f(g(x)) without worrying about how to free the return value from g


Ceveno: GC ne osobađa programera od razmišljanja o oslobađanju memorije. Samo ti drži statički pokazivač na objekat koji ti nije više potreban i nikakav GC ti ga neće uništiti. Problem upravljanja memorijom je za sada rešen samo delimično. GC ne pravi razliku između potrebnih i nepotrebnih objekata, već između dostupnih (tj. onih kojima se može pristupiti) i nedostupnih. Programiranjem bez razmišljanja se lako može postići da nikad nijedan objekat ne bude uništen, koliko god da je nepotreban.

Plavo: U deimično rešenje spada i stek, koji je implementiran i u C, pa nije prednost .Net-a.
[ pexxi92 @ 29.04.2014. 13:54 ] @
Memory management je dosta kompleksan problem i za opsti slucaj neresev.
[ dusans @ 29.04.2014. 13:59 ] @
Slazem se, zato ga ne treba ni koristiti! Nema veze što nudi resenje za 99.99% slucajeva.
[ Nedeljko @ 29.04.2014. 14:46 ] @
U slučaju lošeg programiranja on može vrlo lako da obriše 0% nepotrebnih objekata, a u slučaju dobrog programiranja, može da obriše 100% nepotrebnih objekata.

Knjige u kojima piše da programer sa GC-om ne mora više da brine o upravljanju memorijom su loše. U dobroj knjizi će pisati da on značajno olakšava posao čoveka smanjujući broj slučajeva u kojima se mora ručno intervenisati, ali da nikako nije čarobno rešenje za problem curenja memorije i navešće slučajeve koje treba uzeti u obzir.

Čuj, citiraš lika po kome OOP ne podiže produktivnost u pravljenju "desktop aplikacija" (koja može biti PhotoShop, AutoCAD, Maya...) jer nije čuo da postoji nešto iznad GUI programiranja.
[ Burgos @ 29.04.2014. 15:17 ] @
GC je, kao i mnogo toga u našoj branši, mač sa dve oštrice, što kaže Nedeljko. Ima dobrih strana, kao što su closures (nisam siguran da neki jezik bez GC-a može ovo elegantno da implementira - ako može, pišite), circular references (što može biti rešeno i kroz shared i weak ptr, ali je fakat da je ovo lakše), ali ima i groznih strana kao što je moguće napisati program gde ništa nije dealocirano, a da misliš da jeste, ili u nekim jezicima gde GC nije na .NET-ovom nivou, može zaista ubiti performanse, pa većinu vremena moraš kodirati tako da ga što manje pokrećeš (u nekim jezicima se on pokreće u tačno određenim trenucima, npr. pri alokaciji objekta operatorom new), pa treba biti umeren prilikom davanja suda.

Međutim, Nedeljko mi je dao hint sa stekom i sad sam se zapitao - u "user interface" delu aplikacije na kojoj radim (C), ne sećam se da sam u poslednjih godinu dana i jednom napisao malloc/free - takve aplikacije je moguće pisati bez ikakve manuelne alokacije.
[ bogdan.kecman @ 29.04.2014. 18:24 ] @
Citat:
negyxo:
Ne, nije to zato sto je programer retard, nego njegovo vreme kosta. I ti opet ne vidis siru sliku, ja sam vec naveo primer u saobracaju, lepo je to sto ti vidis kada tebi instanca ne treba i kada znas zasigurno, ali sta je kada ne znas? Tvoje vreme da ispratis gde se kad koja instanca koristi je skupo, i umesto da resavas biznis model, ti pocinjes da trosis resurse na nesto sto moze da se automatizuje i sto u opste nema tako lose performanse o kojima govoris.


ne slazem se.
nemam ja problem za milion utl biblioteka koje nesto pomazu, trilion alata koji pomazu i ubrzavaju posao ... da sam imao valgrind pre 25 godina .. danas ne mogu da zamislim razvoj bez istog .. ne pricam ja o tome, ja pricam o tome da mi zabranis nesto zato sto ja time mogu da se upucam u nogu. meni je to idiotski, to je apriori posmatranje programera kao retarda... dakle nemam ja problem sa viskom funkcionalnosti, ja imam problem sa manjkom
[ bogdan.kecman @ 29.04.2014. 18:35 ] @
inace je C++ ozbiljno problematican po mnogo cemu, na primer ima ozbiljne probleme sa exceptionima u threaded okruzenju, tako da ili mozes da cukas C u C++ ili ces da cukas C, ali pravi OO sa exceptionima u C++ ako koristis tredove mozes da zaboravis, a sistem app bez tredova.... i to je ozbiljan problem koji nije resen ni sa C++11 a izgleda ni C++17 nece doneti resenje :( .. ako nije high load aplikacija, nema puno tredova koji se sinhronizuju i slicno ti problemi nisu toliko vidljivi (zato desktop app moze da radi ok u toj varijanti) ali na high load aplikaciji, pakao .. mi smo taj problem naucili na tezi nacin (citaj "falkon")..

da ne idem ja u detalje koga zanima vise
http://www.boost.org/community/exception_safety.html
http://akrzemi1.wordpress.com/2012/11/14/not-using-stdthread/
[ Burgos @ 29.04.2014. 20:18 ] @
Citat:
bogdan.kecman: ne slazem se.
a pricam o tome da mi zabranis nesto zato sto ja time mogu da se upucam u nogu



Slažem se da ne treba da se zabrani, ali je poželjno da bar ispuca warning sa podrazumevanim podešavanjima kao u slučaju

Code:
int i = "Hello World";


Programer nije retard, ali je osoba koja često radi i preko 10 sati bez pauze.



[ negyxo @ 29.04.2014. 22:44 ] @
Citat:
bogdan.kecman: ne slazem se.
nemam ja problem za milion utl biblioteka koje nesto pomazu, trilion alata koji pomazu i ubrzavaju posao ... da sam imao valgrind pre 25 godina .. danas ne mogu da zamislim razvoj bez istog .. ne pricam ja o tome, ja pricam o tome da mi zabranis nesto zato sto ja time mogu da se upucam u nogu. meni je to idiotski, to je apriori posmatranje programera kao retarda... dakle nemam ja problem sa viskom funkcionalnosti, ja imam problem sa manjkom


Bogdane, niko ne posmatra programera kao retrada. Ljudi su namestili nesto zato sto misle da to resava problem a ne da pravi retarde od ljudi. Za sve one kojima to ne pije vodu imaju alternativu. Znas kako, trziste je veliko, sad, ako ti mislis da mozes da konkurises tamo gde vladaju ostali jezici, to ti je onda najbolji nacin da demantujes da nesto nije u redu.
[ Nedeljko @ 29.04.2014. 22:49 ] @
Citat:
negyxo: Ljudi su namestili nesto zato sto misle da to resava problem

A šta ako je činjenica da to NE rešava problem i ako ti isti koji su to namestili ZNAJU za to?

Biće da su to namestili zato što misle da to DONOSI PARE od onih koji misle da to rešava problem.

Druga bi pesma bila da se to ne reklamira kao nešto što to nije, već kao ono što to jeste.
[ negyxo @ 30.04.2014. 05:45 ] @
Nedeljko, malo ti je to nelogicno, po tebi je neko namestio nesto sto ne resava probleme ali donosi pare? Hm, hm, iako su me mnogi ubedjivali a nisam verovao u to da pravimo neke aplikacije koje nista ne rade ali treba da donesu pare, mozda ipak promenim misljenje :)

No druga stvar je sto ne razumem ni na sta ciljas, sta ne radi, sta se reklamira? Ovako pricamo previse uopsteno, tako da mozes naci argment za bilo sta...
[ Shadowed @ 30.04.2014. 07:41 ] @
Ma, Nedeljko samo hoce da ako se kaze da nesto resava problem, mora da resava problem u 100% slucajeva, 99% nije dovoljno. Covek je metameticar :)
No, za vecinu ostalih je dobitak u 99% slucajeva sasvim prihvatljiv.
[ Nedeljko @ 30.04.2014. 09:12 ] @
GC NE rešava problem upravljanja memorijom sam po sebi, već samo ako ga koristi onaj ko zna da ga koristi. U loše napisanom programu, obrisaće on 0% objekata koji se ne koriste.

Neistina je da GC briše nepotrebne objekte. Alat koji bi automatski razlikovao potrebne od nepotrebnih objekata ne postoji. Istina je da GC briše nedostupne objekte (inaccessible). Nedostupni objekti su svakako nepotrebni, ali može biti nepotrebnih objekata koji su dostupni.

Neistina je da sa GC-om programer više ne mora da brine o curenju memorije. Istina je da se GC-om rešava problem curenja ako se nepotrebni objekti učine nedostupnim, što zavisi od programa i samim tim onoga ko ga je pisao.

Kada bi se tako napisalo u udžbenicima, da GC olakšava posao programeru smanjujući broj linija koje treba da ukuca da bi sprečio curenje, s tim da programer treba da se pobrine o... onda bi se u tim alatima napisalo više kvalitetnih, a manje nekvalitetnih programa, ali bi prihod od prodaje alatki bio manji.

Isto to je moglo da se kaže i za stek i za brojanje referenci itd. Poenta je u tome da se priča što bolje proda. Onda onaj ko poveruje u mantru prvo misli da je problem automatski rešen u 100% slučajeva, a kad mu se pokaže da to nije slučaj, on lupi neki procenat niotkuda.

GC je poznat odavno. Prvi jezik koji ga je imao bio je Lisp, s tim da ga nije imao od prve verzije, ali PROLOG ga ima u svim varijantama, počev od najstarije.

Poenta je upravo u ovome što vi pišete, čime dokazujete da ste kupili mantru i time potkrepljujete moj stav.
[ Nedeljko @ 30.04.2014. 09:15 ] @
Da, stvarno, na šta se pozivate kada navodite te procente?
[ negyxo @ 30.04.2014. 09:42 ] @
Nedeljko,

Ovde uglavnom svi potenciraju tu pricu oko GC-a, ako je GC samo problem onda ja nemam problem sa tim :)

Sve sto si rekao za GC je tacno. Posto radim pod .NET-om, znam sta znaci i manged memory leaks posto sam par puta morao da ih resavam i ono sto mogu primetiti u svim slucajevima je samo jedno problem - spageti code, i to kakav spageti. To su razlozi zasto ja ne mogu da prihvatim taj argument kako te recimo .NET ili Java ili neki funkcionalni jezik sprecava da pises dobro optimizovan code, kada sam ja do sada vidjao probleme u samom code-u, ne u tehnologiji.
[ jablan @ 30.04.2014. 09:57 ] @
Citat:
Nedeljko:
Kada bi se tako napisalo u udžbenicima, da GC olakšava posao programeru smanjujući broj linija koje treba da ukuca da bi sprečio curenje, s tim da programer treba da se pobrine o... onda bi se u tim alatima napisalo više kvalitetnih, a manje nekvalitetnih programa, ali bi prihod od prodaje alatki bio manji.

A na šta se ti pozivaš kad tvrdiš ovo?
[ bogdan.kecman @ 30.04.2014. 12:25 ] @
Citat:
negyxo:
Bogdane, niko ne posmatra programera kao retrada.


nije tacno. posmatra. VB je bio direktno napravljen jezik + ide da bi "retardi mogli da programiraju". ne znaci to da su svi koji su klikali vb retardi nego da je sistem napravljen u inat da se pokaze da retardi mogu da programiraju. (molim te da rec retard u ovom kontekstu shvatis ne kao neko sa iq ispod 70 sto je zvanicna definicija reci vec neko ko nije programer, koncept programiranja mu je na nivou retarda, mozda je covek genije za medicinu, biologiju, agroekonomiju.... dakle neko ko nema blage veze sa programiranjem, ne neko ko ima iq ispod neke definisane granice )

dodavanje bloat-a je direktna veza izmedju manufakture os-a, manufakture hardware-a i marketinga tog smeca. potpuno identican program koji radi potpuno identicnu stvar na isti nacin bez ijedne nove opcije verzija danas zahteva 4g rama i win7 i radi 30% sporije od istog tog programa koji je trcao na win3.0 na 386DX + 387 na manje od 100MHz i sa 4MB rama !!!

Citat:
negyxo:
Ljudi su namestili nesto zato sto misle da to resava problem a ne da pravi retarde od ljudi. Za sve one kojima to ne pije vodu imaju alternativu. Znas kako, trziste je veliko, sad, ako ti mislis da mozes da konkurises tamo gde vladaju ostali jezici, to ti je onda najbolji nacin da demantujes da nesto nije u redu.


ali ne resava!
to je ono sto je problem. ne resava taj problem na koji ti mislis uopste.
java nije VM da bi resila ista od tih problema, java je VM da bi "code once run everywhere" ili kako im bese slogan a onda su limiti izvedeni iz toga sto je VM a opet neke stvari omogucene zato sto mogu da budu omogucene i to je opet sve izvedeno iz toga sto je VM. sa druge strane .not nije napravljen zato da bi trcao svuda ili da bi tebi nesto "automatizovao" nego je napravljen zato sto retardi nisu imeli da naprave windoza kernel (izgleda sa 7 i 8 to najzad radi no nisam jos siguran) koji ume da razdvoji kako treba user space i kernel space, koji ume da nedozvoli da dve aplikacije se*u jedna preko druge i slicno pa su onda resili da ako oni ne mogu da u kernelu to rese (kao sto je to ocekivano) oni ce svaku aplikaciju da stave u sandbox .. to je direktno prica developera iz m$-a koja je procurela vise od 3 puta vec .. zasto je nastao .not .. e sad ok, bili su dovoljno inteligentni da uzmu coveka koji je osmislio delfi da im osmisli c# .. brdo limita koje .not uvodi nisu zato da bi nesto automatizovali nego zato sto su limitirani tehnologijom, a onda se marketiraju kao "mi to zbog vas" .. mani me m$ marketinga i m$ fanboy's jos su gori od ovih open source zelota i linux fanbojeva ..
[ bogdan.kecman @ 30.04.2014. 12:48 ] @
Citat:
negyxo:kada sam ja do sada vidjao probleme u samom code-u, ne u tehnologiji.


za vreme pisanja mysql 4.1 (ja nisam ucestvovao) mysql dev tim je prijavio preko 100 kompajler bagova intelu, preko 30 kompajler bagova gcc-u i preko 150 kompajler bagova m$-u.
za vreme pisanja mysql 5.0 (takodje nisam ucestvovao) mysql dev tim je prijavio preko 50 bagova intelu (ako se dobro secam sinisa ih je sve sam popravio), preko 2 bug-a gcc-u i jedno 200 bagova m$-u (~180 u kompajleru i ~20 u windozi)
kada je mysql kupio tim koji radi workbench, prijavljeno je samo u zadnje 2 godine preko 1000 .not bagova m$-u (sto u vm-u sto u c#) i neka sumanuta cifra bagova mono-u (posto wb na linuxu radi preko mono-a)

kao i za c kompajler bagove ni u .not nisam ja ucestvovao, samo sam sad cimnuo dev lead wb tima da ga pitam za cifre (za C sam znao cifre od ranije posto se to sve dogadjalo jos pre nego sam ja usao u taj tim)

kod je dobar, tehnologija ne valja!

kada se ta tehnologija pravi pametna pronalazenje bagova u toj tehnologiji je visestruko teze, GC je samo odlican primer sa kojim su se svi susreli pa se zato spominje

no ne vidim kako sad ova prica uopste ima veze sa popularnosti?
po nekom mom iskustvu VB je imao mnogo vecu popularnost medju genpop nego bilo koji jezik ikad, to ne znaci da valja i da je "dobra tehnologija" ..

c je popularniji od jave, so what? za ono sto ja radim je bolji od jave, za ono sto ti radis je losiji, kakve veze ima ko je "popularniji" kao da je to ikad imalo veze sa kvalitetom
[ negyxo @ 30.04.2014. 14:49 ] @
Citat:
Bogdan
nije tacno. posmatra. VB je bio direktno napravljen jezik + ide da bi "retardi mogli da programiraju". ne znaci to da su svi koji su klikali vb retardi nego da je sistem napravljen u inat da se pokaze da retardi mogu da programiraju. (molim te da rec retard u ovom kontekstu shvatis ne kao neko sa iq ispod 70 sto je zvanicna definicija reci vec neko ko nije programer, koncept programiranja mu je na nivou retarda, mozda je covek genije za medicinu, biologiju, agroekonomiju.... dakle neko ko nema blage veze sa programiranjem, ne neko ko ima iq ispod neke definisane granice )


Da, ali kada je VB bio napravljen, sta si sve trebao da uradis da bi namestio jedan prost program u C++-u? U ono doba su i IDE bili ocajni, i da podesis okruzenje je bila nauka za sebe. Moj matori je bio Clipperas i prelazak na VB mu je bio relativno lak, da si mu dao C++ da uci, verovatno bi digao ruke i bavio se necim drugim. Po tebi je naravno bolje da su svi oni programi koji su nastali od ljudi koji nisu zeleli da budu hardwareski gurui a zeleli da zarade nesto, da se bolje nisu ni pojavljivali. Sorry, ali ne mislim tako, oni su nesto stvorili, makar bilo i losih performansi. Ti i tebi slicnima treba da demonstrirate "to" bolje. Ono sto ti pokusavas da kazes isto vazi i za ostale branse, znaci ako je neki zidar los, onda on ne moze da radi, svi cemo da cekamo 20 zidara koji rade perfektno, ali nema veze sto ostali ne rade... come on...

Citat:

ali ne resava!
to je ono sto je problem. ne resava taj problem na koji ti mislis uopste.
java nije VM da bi resila ista od tih problema, java je VM da bi "code once run everywhere" ili kako im bese slogan a onda su limiti izvedeni iz toga sto je VM a opet neke stvari omogucene zato sto mogu da budu omogucene i to je opet sve izvedeno iz toga sto je VM. sa druge strane .not nije napravljen zato da bi trcao svuda ili da bi tebi nesto "automatizovao" nego je napravljen zato sto retardi nisu imeli da naprave windoza kernel (izgleda sa 7 i 8 to najzad radi no nisam jos siguran) koji ume da razdvoji kako treba user space i kernel space, koji ume da nedozvoli da dve aplikacije se*u jedna preko druge i slicno pa su onda resili da ako oni ne mogu da u kernelu to rese (kao sto je to ocekivano) oni ce svaku aplikaciju da stave u sandbox .. to je direktno prica developera iz m$-a koja je procurela vise od 3 puta vec .. zasto je nastao .not .. e sad ok, bili su dovoljno inteligentni da uzmu coveka koji je osmislio delfi da im osmisli c# .. brdo limita koje .not uvodi nisu zato da bi nesto automatizovali nego zato sto su limitirani tehnologijom, a onda se marketiraju kao "mi to zbog vas" .. mani me m$ marketinga i m$ fanboy's jos su gori od ovih open source zelota i linux fanbojeva ..


O da, resava :)

Znaci po tebi, neki novajlija, onako oran za rad, uzme i klicke po internetu i gleda koja reklama je bolja i onda onako dokon, odluci jednog momenta "E vidi sto je lep ovaj banner od .NOT-a, ovo cu uzeti da ucim"? Sorry, ali za vecinu koju znam da je nesto pocela da uci, pocela je tako sto se raspitivala medju onima koji znaju nesto, ovaj forum ti je dobar primer.

Drugo, spominjes nesto windows kernel, ja o tome nisam pisao u opste, ali kad vec spomenu, kakve to veze ima sa tim da li koristis recimo C++ ili .NET? Jel to moze biti da ako pises program u C++ Windows Kernel je OK, a ako radis u .NET onda nije OK? Pitam, posto stvanrno ne znam, prvi put ovo cujem.

Trece, kakve veze ima covek sto je osmislio Delph sa svime ovim, nisam pohvato bas?

Citat:

za vreme pisanja mysql 4.1 (ja nisam ucestvovao) mysql dev tim je prijavio preko 100 kompajler bagova intelu, preko 30 kompajler bagova gcc-u i preko 150 kompajler bagova m$-u.
za vreme pisanja mysql 5.0 (takodje nisam ucestvovao) mysql dev tim je prijavio preko 50 bagova intelu (ako se dobro secam sinisa ih je sve sam popravio), preko 2 bug-a gcc-u i jedno 200 bagova m$-u (~180 u kompajleru i ~20 u windozi)
kada je mysql kupio tim koji radi workbench, prijavljeno je samo u zadnje 2 godine preko 1000 .not bagova m$-u (sto u vm-u sto u c#) i neka sumanuta cifra bagova mono-u (posto wb na linuxu radi preko mono-a)


I koji je onda zakljucak povodom ovoga? Sta si hteo da kazes, MS ima najvise gresaka, Intel malo manje a Gcc jos manje. Ja ne vidim ovde vezu sa tehnologijom i pricom kojom smo pricali, osim da povezujes odredjene proizvodjace u nekom kontekstu.


Citat:

no ne vidim kako sad ova prica uopste ima veze sa popularnosti?
po nekom mom iskustvu VB je imao mnogo vecu popularnost medju genpop nego bilo koji jezik ikad, to ne znaci da valja i da je "dobra tehnologija" ..

No ne vidim ni ja, ali ne znam zasto si pisao :)
[ bogdan.kecman @ 30.04.2014. 15:10 ] @
Citat:
negyxo
Da, ali kada je VB bio napravljen, sta si sve trebao da uradis da bi namestio jedan prost program u C++-u?


instaliras cbuilder (ili delfi) postoje jos za win3.0 (delfi za 3.0, cbuilder za 3.11) i vozi misko, imao si sve sto danas imas sa modernim C# i jos bolje

Citat:
negyxo:
Ono sto ti pokusavas da kazes isto vazi i za ostale branse, znaci ako je neki zidar los, onda on ne moze da radi, svi cemo da cekamo 20 zidara koji rade perfektno, ali nema veze sto ostali ne rade... come on...


ne, ono sto ja hocu da kazem je da ne treba zbog losih zidara dobrom da zabranis da radi brze bolje i kvalitetnije a to je upravo ono sto se desava

Citat:
negyxo:
Znaci po tebi, neki novajlija, onako oran za rad, uzme i klicke po internetu i gleda koja reklama je bolja i onda onako dokon, odluci jednog momenta "E vidi sto je lep ovaj banner od .NOT-a, ovo cu uzeti da ucim"? Sorry, ali za vecinu koju znam da je nesto pocela da uci, pocela je tako sto se raspitivala medju onima koji znaju nesto, ovaj forum ti je dobar primer.


bas tako, klikce po internetu i odluci da vise nece da bude serviser nego system admin posto vise niko ne popravlja televizore a sysadmini prave pare, pa onda malo jos klikce pa vidi da je taj unix i taj linux i taj cisco to je zahebano aj idemo na ovaj windows, to ima kurs za 2 nedelje postanem sysadmin i dobijem sertifikat - i postane sysadmin .. ili kaze ocu postanem programator vidi kako ovi programatori zaradjuju pare i voze dobre ribe, sad cu ja to da vidim sta je moderno, vidi ima kurs za VB traje 2 dana i ja budem programator .. ili .. daj da se ne lazemo svi znamo bar po 500 takvih ljudi

Citat:
negyxo:
Drugo, spominjes nesto windows kernel, ja o tome nisam pisao u opste, ali kad vec spomenu, kakve to veze ima sa tim da li koristis recimo C++ ili .NET? Jel to moze biti da ako pises program u C++ Windows Kernel je OK, a ako radis u .NET onda nije OK? Pitam, posto stvanrno ne znam, prvi put ovo cujem.


ogromna razlika. ako pises nativ kod ti mozes (ako ne znas, ako imas bug ako ...) da saras po memoriji, piskis okolo i slicno .. e sad, ako je kernel kako valja on te limitira tako da mozes sam sebe da ubijes ali ne mozes da smetas nikome drugom a posebno ne mozes da smetas samom kernelu te srusis masinu. dobar kernel ne moze da dozvoli da ijedna aplikacija na sistemu moze da proizvede kresh sistema. e sad posto m$ nije umeo da napravi dobar kernel (koji moze da obezbedi tu izolaciju) onda su odlucili da te nateraju da pises kod koji je izolovan sam po sebi (u virtualnoj masini). bagovi se svima desavaju, ali ne ocekujem da ce os da se skuca zato sto sam ja zaboravio da inicijalizujem nesto.


Citat:
negyxo:
Trece, kakve veze ima covek sto je osmislio Delph sa svime ovim, nisam pohvato bas?

nista, samo pored toliko stvari koje je m$ uradio lose, jedna stvar koju je uradio dobro

Citat:
negyxo:
I koji je onda zakljucak povodom ovoga? Sta si hteo da kazes, MS ima najvise gresaka, Intel malo manje a Gcc jos manje. Ja ne vidim ovde vezu sa tehnologijom i pricom kojom smo pricali, osim da povezujes odredjene proizvodjace u nekom kontekstu.


ne, nema veze to sa m$-om, najvise gresaka je bilo u m$ kompajleru zato sto mysql developeri koriste m$ kompajler kao unix kompajler i koriste posix stvari a to na m$-u nije uradjeno kako treba, da su windoze developeri bili u pitanju verovatno bi bilo ubodeno mnogo manje win bagova a mnogo vise gcc bagova no nije uopste poenta u poredjenju m$-a i nekog drugog, poenta je u tome da svi kompajleri imaju greske ... mono nije m$ alat a ima najvise bagova .. fora je da tehnologija nije bezgresna, ima mnogo gresaka u samoj tehnologiji i najvise gresaka ima bas u delu gde tehnologija pogadja sta si ti hteo da uradis i "automatizuje" taj proces i u velikom procentu zase*e. druga poenta je da svuda gde se tehnologija kur*i da ce da pogodi sta si hteo i resi problem "brzi/automatski" greske koje se tu dese su extremno teske za debagirati i otkloniti .. naravno ako pricamo o ozbiljnom software-u

isto tako ni linux kernel nije majka mara, ni bsd ni .. win je spomenut samo kao vrlo dobro poznat primer, inace kao sto rekoh i 7 i 8 imaju dosta bolji kernel, mislim da je osmica finalno resila te probleme sa izolacijom no nisam ispratio desavanja u win kernel svetu zadnjih par godina nemam potrebe za tim ..

[ bogdan.kecman @ 30.04.2014. 15:13 ] @
da ponovim jos jednom, ne mislim ja da moraju samo top mega giga programeri da programiraju, ne mislim da VB ne treba da postoji i slicno.. do jaja je sto postoji VB i sto je nekom medicinaru omoguceno da sam sebi skocka na brzaka neki app i ne mora nikoga da moljaka da mu to napravi isto kao sto je do jaja arduino da isti taj medicinar moze da spoji 3 senzora i radi neki experiment koji mu treba i opet ne mora nikog da cima .. dakel ja pozdravljam to, ja samo ne pozdravljam da uvedes da neko profi mora da radi u vb-u ili koristi arduino ili da "zato sto se super pokazalo na arduinu" iz c++ za arm64 izbacis rad sa pointerima
[ negyxo @ 30.04.2014. 15:54 ] @
Citat:

instaliras cbuilder (ili delfi) postoje jos za win3.0 (delfi za 3.0, cbuilder za 3.11) i vozi misko, imao si sve sto danas imas sa modernim C# i jos bolje


Znaci Dephi samo zbog toga sto je imao ekplicitnu alokaciju memorije je skroz OK, ali ostali jezici zato nisu. Plus, C# danas ima dosta stvari, tako da ne bi se kladio u to tvoje "jos bolje" (gde cu napomenuti, da nije samo jezik bitan, posto i API je recimo veoma kljucan).

Citat:

ne, ono sto ja hocu da kazem je da ne treba zbog losih zidara dobrom da zabranis da radi brze bolje i kvalitetnije a to je upravo ono sto se desava


Ne, niko nikome ne zabranjuje. Ne znam gde si to video. Gde si ti video da je nekom zabranjeno da programira Web Development u C++-u, jos ako su bolje performanse i za manje para... Ovde je rec sto ti potenciras da to sto je drugima uskraceno (ti kazes zabranjeno) nesto za nesto sto ni ne znaju, da su zato osakaceni, malo znaju i sta ti ja znam...


Citat:

bas tako, klikce po internetu i odluci da vise nece da bude serviser nego system admin posto vise niko ne popravlja televizore a sysadmini prave pare, pa onda malo jos klikce pa vidi da je taj unix i taj linux i taj cisco to je zahebano aj idemo na ovaj windows, to ima kurs za 2 nedelje postanem sysadmin i dobijem sertifikat - i postane sysadmin .. ili kaze ocu postanem programator vidi kako ovi programatori zaradjuju pare i voze dobre ribe, sad cu ja to da vidim sta je moderno, vidi ima kurs za VB traje 2 dana i ja budem programator .. ili .. daj da se ne lazemo svi znamo bar po 500 takvih ljudi

Pa ajde da se lazemo. Ja znam samo jednog koji me je pitao sta da uci jer je video neke reklame na interentu kao i kurseve koji se placaju, ali pazi, ipak me je na kraju pitao sta da uci, da sam hteo da ga ubedjujem, lako bi ga ubedio da uzme "moju" tehnologiju. On je verovatno video PHP ili neki web development, ne secam se sada i pitao me o tome. Sta je trebalo da mu kazem? "Sine, sedi ti jedno par godina i uci C++ pa ce biti posla za tebe za 10 godina, ali zato ima da tvoj program dere na 286". Svi ostali, koji su me pitali nisu imali nikakvo "vece" predznanje o tome sta da uce. Mozda ti dajes mali znacaj tome, ali presudno je ipak misljenje onoga kome ljudi veruju, a ne sta su videli pre toga.

Citat:

ogromna razlika. ako pises nativ kod ti mozes (ako ne znas, ako imas bug ako ...) da saras po memoriji, piskis okolo i slicno .. e sad, ako je kernel kako valja on te limitira tako da mozes sam sebe da ubijes ali ne mozes da smetas nikome drugom a posebno ne mozes da smetas samom kernelu te srusis masinu. dobar kernel ne moze da dozvoli da ijedna aplikacija na sistemu moze da proizvede kresh sistema. e sad posto m$ nije umeo da napravi dobar kernel (koji moze da obezbedi tu izolaciju) onda su odlucili da te nateraju da pises kod koji je izolovan sam po sebi (u virtualnoj masini). bagovi se svima desavaju, ali ne ocekujem da ce os da se skuca zato sto sam ja zaboravio da inicijalizujem nesto.

Bogdane, ali zar ne mislis onda da je upravo ovo jedna prednost .NET-a (bila)? Placas cenu u performansama ali bar imas stabilnost.

Citat:

fora je da tehnologija nije bezgresna, ima mnogo gresaka u samoj tehnologiji i najvise gresaka ima bas u delu gde tehnologija pogadja sta si ti hteo da uradis i "automatizuje" taj proces i u velikom procentu zase*e. druga poenta je da svuda gde se tehnologija kur*i da ce da pogodi sta si hteo i resi problem "brzi/automatski" greske koje se tu dese su extremno teske za debagirati i otkloniti .. naravno ako pricamo o ozbiljnom software-u

Ne mogu se sloziti ni oko ovoga. Znaci sve sto je automatizovano, iako ti logika nalaze da ces imati vise problema nego koristi, ti ipak automatizujes? Nekako mi nije u opste logicno, mislim da umanjujes faktor onoga sta sve resava a dajes preveliki znacaj kada ne radi idealno.
[ Nedeljko @ 30.04.2014. 16:50 ] @
Citat:
jablan: A na šta se ti pozivaš kad tvrdiš ovo?

Pa, evo:

Kad nekome ko zna znanj ne ide prodaja ni iz džepa, ni u džep, on to napiše ovako:

http://en.wikipedia.org/wiki/G...e%29#Reachability_of_an_object

Navede ti lepo primer semantičkog đubreta.

A kada neko reklamira svoj proizvod, on to napiše ovako

http://msdn.microsoft.com/en-u...ry/0xy59wtx%28v=vs.110%29.aspx

Citat:
it checks for objects in the managed heap that are no longer being used by the application and performs the necessary operations to reclaim their memory.
[ bogdan.kecman @ 30.04.2014. 18:16 ] @
Citat:
negyxo:
Znaci Dephi samo zbog toga sto je imao ekplicitnu alokaciju memorije je skroz OK, ali ostali jezici zato nisu.


ne, delfi i cbuilder su pravili nativni kod a vb je radio kao interpreter trosio cudo rama i cpu-a za pateticne performanse. vb je u poredjenju sa vc/vc+mfc bio mnogo laksi (naklikces i radi) sto si ti malopre naveo ali su delfi i cbuilder isto tako mogli da naklikcu isto to sto si mogao u vb-u, istom brzinom da dodjes do krajnjeg resenja (ili vecom) da bi na kraju dobio nativni kod iskompajliran koji radi milijardu puta brze od tog vb-a ...

Citat:
negyxo:
Bogdane, ali zar ne mislis onda da je upravo ovo jedna prednost .NET-a (bila)? Placas cenu u performansama ali bar imas stabilnost.

ne, ne mislim. to je tacno ono o cemu pricam, umesto da retardirane programere koji rade za kikiriki zamenis pravim programerima i napravis taj os da radi, ti zaposljavas jos kikiriki programera da naprave novi layer izmedju, novu gomilu djubreta, te ce onda problemi da se manifestuju na drugom mestu. jeste cista .not aplikacija ne moze da srusi windozu, ali posto zato iz nje ne mozes nista da uradis onda opet cimas unmanaged kod sa kojim to mozes da uradis te si na kraju dobio kontrapciju koja ima lep gui za development (nesto sto je borland nudio deceniju ranije a microsoft kupio za .not) a koja nit je sigurna nit je stabilna..


Citat:
negyxo:
mislim da umanjujes faktor onoga sta sve resava a dajes preveliki znacaj kada ne radi idealno.


ako ne radi kako treba -> ne radi uopste, to sto "u nekom slucaju nekom radi zadovoljavajuce" je ok, ali onda treba da bude opciono a ne obavezno. ja c++ mogu da pisem sa gc a mogu bez, imam opciju; sa druge strane javu ili .not ne mogu da pisem bez gc; e sad ja cu za javu da prihvatim taj limit zato sto ima smisla, za .not necu da prihvatim taj limit jer nema potrebu, tj ceo koncept vm-a koji radi samo na windozi je retardiran..

no mogu ja ovako u klin do prekosutra a ti u plocu dan duze.. ti ocigledno nemas problem sa retardiranosti .net-a i vecine danasnjih alata, nemas problem sto ti word procesor trosi gigabajte rama za nesto za sta mu treba par kilobajta ili sto ti os kad se butne bez i jedne aplikacije trosi 2G rama .. meni je to problem a jedini razlog za to je ta "automatizacija" koja uz to ne radi
[ Nedeljko @ 30.04.2014. 18:35 ] @
nexygo,

Slažem se ja da treba olakšati neke stvari, ali sam protiv prodaje nečega za bubrege. Neka napišu u dokumentaciji kako se to pravilno koristi i mirna Bosna. Lepo ljudi nauče i rade kako treba.

Nisam ja ni protiv interpretiranja tamo gde je to OK, ali jesam protiv špageti koda, čemu doprinosi širenje dezinformacija.
[ negyxo @ 30.04.2014. 19:41 ] @
Citat:

no mogu ja ovako u klin do prekosutra a ti u plocu dan duze.. ti ocigledno nemas problem sa retardiranosti .net-a i vecine danasnjih alata, nemas problem sto ti word procesor trosi gigabajte rama za nesto za sta mu treba par kilobajta ili sto ti os kad se butne bez i jedne aplikacije trosi 2G rama .. meni je to problem a jedini razlog za to je ta "automatizacija" koja uz to ne radi


Ne, ja ne mislim da je sve to retardirano, zato sto to sto si ti opisao je samo jedan mali deo nekog programa. I ne mozes me ubediti da layeri koji sede iznad toliko sporije rade i kostaju u odnosu na native code. Gledao sam i native i managed code, doduse daleko vise managed. Gledao sam funkcije u C++-u od 1000 linija spageti code-a isto tako i u C#-u. Isto kao ti sam se pitao ko zdere svu tu memoriju za neke trivijalne stvari. Recimo otvorim VS i editujem neki TFS item, probam da promenim velicinu prozora, sklairanje je kao slide show i to na VS2012. Mislis da me ne irtira to, i da se nisam zapitao ko ovo pravi?

Proizvod na kome radim, skoro je dobio Metro style look, vecina nasih proizvoda je radjena pre na Windows Forms, moj tim je radio nas proizvod na WPF, ali posto cela firma ima zajednicke dll-ove, tako je i jedan dll zaduzen za aktivaciju proizvoda, taj deo koristi i dalje Windows Forms gde se koriste neke 3rd party kontrole, ima nekih 10ak dll-ova ova 3rd party kontrola, i sad, posto mi ne koristimo sve to, mi smo primorani ipak da radimo deploy sa 10ak dodatnih dll-ova kako bi nam radila aktivacija, i tako skontas da imas nekoliko slucajeva, svuda po proizvodu gde si usled nedostatka vremena suocen da biras, oces li da jednostavno potrosis vise prostora korisniku, ili ces da radis refactor ali mozda i neces imati korisnika, jer dok ti popravis sve te krive drine (a to samo zarad prostora recimo) on ode kod drugog. Ovo ti je primer nevezan za tehnologiju, a objasnjava ti zasto nesto besportebno naraste. Ovo nema veze sa tim da li koristis GC ili ne, mogao si koristiti recimo C++ MFC i onda da imas tranziciju na Qt, sta bi ti uradio a da imas pritisak na vremenu da uradis sto brze? Trziste je reklo svoje.

Recimo GUI, znas li koliko GUI radi sporo zbog samog API-a, a ne zarad neke virtuelne masine? To su pozivi i pozivi funkcija dok se uradi jedna prosta stvar, recimo iscrta obican button. Recimo binding, omogucava ti da se resis razmenjivanja izmedju kontrola (View) i nekog biznis modela, ali zato u zavisnosti kako si ga definisao ima da se ispali ko zna koliko puta. Sad, onda dodje neko rucno i odradi stvar i odjenom aplikacija postaje responsive. Jeste, to mozes da radis u prostim slucajevima ali kada krene da raste aplikacija, taj rucni deo se iskomplikuje nenormalno, opet ne znas sta ko koga poziva, i opet ovo najmanje ima veze da li je pisano u C++ ili u C# ili Java ili cemu vec.

Za neke stvari da bi resio ne postoji magican stapic, direktno su vezane sa onim ko resava problem za neke stvari naprotiv, treba jos vise automatizacije, tj. pametnijeg code-a koji ce resavati sve ove slucajeve umesto mi da se bavimo.
[ bogdan.kecman @ 30.04.2014. 19:54 ] @
Citat:
negyxo: Ne, ja ne mislim da je sve to retardirano

ja mislim da je vecina toga retardirana, no gledamo stvari iz razlicitih uglova .. ono nedeljkovo "ali sam protiv prodaje nečega za bubrege" je generalno najtacnije, pa neka onda svako odabere sta mu treba

Citat:
negyxo:Gledao sam funkcije u C++-u od 1000 linija spageti code-a isto tako i u C#-u.

nisam ja rekao da je c++ imun na retarde (a ni da samo retardi koriste <stavi koji god hoces sistem ovde>)

Citat:
negyxo:
Proizvod na kome radim

ja vrlo dobro poznajem "vezi konja gde ti gazda kaze" filozofiju i ako nisi na poziciji da se nesto pitas mozes da places do prekosutra... problem je sto ona lazna reklama (i neke malo ruznije stvari no da ne idemo sad u tu pricu) pravi da cak i oni sto se pitaju ne mogu da u potpunosti odluce jer i njima gazda kaze, jeste sve super to sto ti pricas, ali ja bi ipak ovako

Citat:
negyxo:
Recimo GUI, znas li koliko GUI radi sporo zbog samog API-a
...
u C++ ili u C# ili Java ili cemu vec.


oh da :D, pisao svoje kontrole koje su bile te davne 1994 oko 10x brze od motifa da bi na kraju ipak celu aplikaciju prebacio na motif .. jesu moje kontrole brze ali dok napisem sve kontrole ispocetka ode klijent :(, a i trebalo je prodat jace workstation-e :D ... sva sreca vise (osim u retkim slucajevima) ne pipam desktop aplikacije, da radim desktop verovatno bi se mnogo vise slagao sa tobom :)
[ Nedeljko @ 01.05.2014. 11:13 ] @
Ja nemam nikakav problem sa tim da aplikacija bude napisana u čemu god hoće, ako je dobra i cena pristupačna.

Moje potrebe za grafikom su minimalne, pa za vektorsku (jako retko) koristim inkscape, koji je rađen u python-u i potpuno me zabole za to.

Ako te alatke snižavaju cenu proizvodnje, to je sasvim OK, ali ne treba bacati mantru čiji je efekat loše programiranje, nego da se lepo napiše šta je to i kako se pravilno koristi, pa da ljudi lepo nauče i rade kako treba.
[ tdusko @ 06.10.2015. 09:18 ] @
Fast forward u oktobar 2015



Java strikes back :) S obzirom na razliku u popularnosti Objective C u rasponu od manje od dve godine, prirodno je izraziti sumnju u verodostojnost TIOBE indexa, ali sto se bar jave tice njena popularnost se podudara sa utiskom koji ja imam na trzistu na kome poslujem. S obzirom koliko ljudi hate-uje javu, fascinira njena konzistentna popularnost.

Interesantno bi bilo da vidimo da li ima nekoga ko zaradjuje za hleb od jezika koji nisu ni u 50 na listi :)
[ Java Beograd @ 06.10.2015. 09:38 ] @
WTF ? Koliko ljudi "hejtuje javu" ? Ne kapiram kako neko može da hejtuje programski jezik ?
[ tdusko @ 06.10.2015. 09:52 ] @
Ti ili ne interagujes sa programerima ili postoji razlika u shvatanju termina "hejtovanje". Nikad nisi cuo/procitao "PHP je njesra jer nije OOP, java je bloat, javascript je retardiran..."? Moj subjektivni osecaj je da je java ubedljivo najispljuvaniji programski jezik s obzirom na popularnost. Javascript recimo je jos gori sto se hejtovanja tice, njega hejtuje cak i onaj sto ga je izmislio :D, ali popularnost nije ni izbliza javi, a i realno nema alternativu za razliku od jave.
[ mmix @ 06.10.2015. 11:12 ] @
Molim? Java je najgore njesra koje je zadesilo industriju.

[ jablan @ 06.10.2015. 12:22 ] @
Citat:
tdusko: popularnost nije ni izbliza javi

?? Koliko trenutno procesa na tvojoj mašini vrti program u javi, a koliko u JS? :)
[ tdusko @ 06.10.2015. 12:30 ] @
Nemam pojma, sto pitas? Ja sam samo interpretirao sta pise u tabeli.
[ Java Beograd @ 06.10.2015. 12:39 ] @
Citat:
jablan:
Citat:
tdusko: popularnost nije ni izbliza javi

?? Koliko trenutno procesa na tvojoj mašini vrti program u javi, a koliko u JS? :)
'Oćeš da kažeš: što više procesa - to veća popularnost ?
[ jablan @ 06.10.2015. 13:17 ] @
Malo se šalim, ali hoću da kažem da sigurno više ljudi kodira Javascript nego Javu. Ne kao primarni jezik, ali sveukupno gledano sigurno.
[ mmix @ 06.10.2015. 14:30 ] @
Kad pipam weak typed script jezike kao JS, osecam se kao da pipam puzeve golace Gadno, bre.
[ cyBerManIA @ 07.10.2015. 03:48 ] @
^^ haha koji hejt :D
[ negyxo @ 07.10.2015. 05:26 ] @
^^ haha koje neznanje :P


Delim mmix-ovo misljenje potpuno. Type system + static analysis => programiranje. Ovo ostalo lici prilicno na fizikaliju ;)
[ plus_minus @ 07.10.2015. 08:33 ] @
.. 'beš ti takav jezik koji nema foreach ..
[ dejanet @ 07.10.2015. 09:25 ] @
Meanwhile,

javascript pakuju u desktop i store aplikacije.

Ko prije, njemu dvije.
[ cyBerManIA @ 07.10.2015. 17:52 ] @
Citat:
negyxo: ^^ haha koje neznanje :P


Uradi staticku analizu nad textom pre nego sto lupis send. Fora je kako baca hejt (kreativno). Vredjanje != cool.
[ negyxo @ 07.10.2015. 18:17 ] @
chill out, niko te nije vredjao, samo sam hteo na saljiv nacin da se nadovezem na tvoj post (i na isti nacin ;))
[ jablan @ 09.10.2015. 12:51 ] @
Citat:
plus_minus:
.. 'beš ti takav jezik koji nema foreach ..

Beš takav jezik u kome ne možeš da implementiraš foreach nego moraš da ga dobiješ kao deo jezika. :P
[ plus_minus @ 09.10.2015. 13:01 ] @
.. 'beš ti takav jezik koji ima source na izvol'te..
[ Texas Instruments @ 11.01.2016. 14:50 ] @
Vratila se Java na prvo mesto za prošlu godinu.

http://www.tiobe.com/index.php...index.html?languageof2015=java
[ Nedeljko @ 28.05.2017. 16:56 ] @
Citat:
mmix:
Molim? Java je najgore njesra koje je zadesilo industriju.


U poslednje vreme sam imao prilike da se upoznam sa blagodetima jave.

Recimo, prosti tipovi kao int i double se prenose isključivo po vrednosti. Ako hoćeš po referenci, koristi Integer, Double. Onda ti kažu da ne cimaš heap previše. Čekaj, a šta da radim? Ah, da, rešenje je vrlo jednostavno:

Code (java):

class A
{
    private static ThreadLocal<Double> onoZaPrenos = new ThreadStatic<Double>();
}
 


Zatim, mi kažu da java ne voli previše da skuplja otpad. U principu, kada vide da im se nagomilalo zauzeće RAM-a, izričito pozovu GC. To mi kažu za javu 7, dok za javu 8 ne znaju kakva je. Ček, Java je upravljani jezik. Jeeee!

Pa, mislim, nije blesav čika Bili što je pravio C#, koji je kao jezik nalik na Javu, samo kršten (ima i ref i out) .Net koji je nalik na Java platformu, samo kršten (GC radi).

Lično, C je jedini jezik koji mi se sviđa. Za kraće programe koji implementiraju matematičke metode je zasad najbolji Python, koji je uostalom pravio matematičar. Trulo je što Python ne može da ima mnogo rekurzivnih poziva po dubini. Za implementaciju matematičkih metoda to može da bude bitno.
[ Branimir Maksimovic @ 28.05.2017. 22:16 ] @
Pa hm, java ima najbolji GC cini mi se a i kompajler joj je izvrstan. Ljudi forsiraju kolekciju da aplikacija ne bi pauzirala kad ne treba cini mi se. Jezik je pojednostavljen pa je preterano verbozan za moj ukus. A i OOP je prosla stvar.
[ Nedeljko @ 29.05.2017. 05:13 ] @
Šta znam, ljudi kaži da su im se gomilali gigabajti podataka dok nisu pozvali GC. Kažu da tako moraju da rade.
[ dejanet @ 29.05.2017. 05:54 ] @
^ Ocigledno su se negde z*li pa su imali memory leak, najcesce kod socket-a, db konekcije, generalno IO...
[ Nedeljko @ 29.05.2017. 07:05 ] @
A otkud curenje sa GC-om, pri čemu kada se GC ručno uključi, on sve lepo počisti. Onda je problem što ne voli da se uključuje.
[ Branimir Maksimovic @ 29.05.2017. 07:10 ] @
Nisam radio sa javinim GC-om jer javu izbegavam ali tu gde sam radio moze da se podesi inicijalni heap. GC obicno alocira u jednom zahvatu neku kolicinu pa tek kad se to potrosi onda krene da cisti. Dakle ako se stavi manji heap ne bi trebalo da alocira gigabajte.
Verujem da sve to moze da se tvikuje.
[ mmix @ 29.05.2017. 08:55 ] @
MS CLR GC je donekle bolji od Javinog (Mono sa druge strane je katastrofa), ali su danas razlike minorne jer su oba runtime-a evoluirala tokom godina. GC uvek chunkuje memoriju od sistema, to je zajednicko svima jer potpuno izoluje memory management od sistema, ono po cemu se razlikuju je zapravo optimizacija kolekcija. Ono sto danas CLR radi bolje od JVMa su veliki objekti (>85k) gde CLR ne kompaktuje/defragmentira po defaultu vec markira slobodne blokove i "kroji" best fit za nove velike alokacije. Ono sto najvise oduzima vremena u blocking kolekcijama je to kopiranje i defragmentacija. S tim sto i to nije zakucano, ako radis sa velikim prometom velikih objekata i taj deo moze da se ukljuci u periodicne Gen2 kolekcije i da se cak prebaci u konkukretni GC. Dosta stvari u vezi GCa na obe platofrme moze da se tweakuje ali trenutna podesavanja su rezultat visegodisnjeg iskustva, potreba za menjanjem tih konfiguracija je veoma mala.

Koga intersuju fundamentalne stvari o CLR GCu: https://msdn.microsoft.com/en-us/library/ee787088.aspx

[Ovu poruku je menjao mmix dana 29.05.2017. u 10:14 GMT+1]
[ bogdan.kecman @ 29.05.2017. 13:47 ] @
@nedeljko, ne znam dal za123 ili stvarno nemas iskustva sa javom, ako je
ovo drugo, ili taj sto ti je "rekao" nema pojma ili ga ti nisi dobro
saslusao ili nesto izmedju u svakom slucaju vecina tih stvari koje si
napisao o javi ne stoji (nije da je branim ja je licno ne forsiram
nigde) ... te "ljudi kazu..." price, vidi i meni "ljudi kazu da im baza
spora u majcinu" a kad pogledas ispostavi se da ljudi ne znaju cemu
sluze indexi... tako da.. te sto su ti to pricali nemo slusas za bitne
stvari

ogromna je danas razlika izmedju "produktivnosti" i "efektivnosti" nekog
jezika ... zavisi sta i kako radis neki "veoma produktivni jezici" su
zastrasujuce slabo efektivni, neoptimizovani, bloated.. ali jbg,
"zavrsis task za 10x krace vreme" to sto ce gazdi da treba 100x jaca
masina to vec nije tvoj problem :D .. sa druge strane, neki jezici koji
su nekad davno bili u tom stadijumu (neoptimizovani, bloated,
neefektni..) su danas za nekoliko redova velicine bolji .. tako da ..
mozda, nekad, u buducnosti, ako haskel, erlang i njihova deca budu
uvatili trakciju kod developera (kao sto su nekad java i .not), mozda i
njihovi vm-ovi dodju na nivo na kom su sada java i clr ... mozda cak i
mono dodje rame uz rame sa njima ako se pokaze potreba .. no odoh
predaleko od price ..

ja licno kucam 80% C, 10% C++ i sve ostalo 10% ... tako mi se pogodilo,
pa mi lakse da nacukam 100 linija c++ -a nego da nacukam 3 linije
pitona, ne podnosim piton ne pipam ga ako nije potpuno neophodno .. pa
to ne znaci da pitonu ne valja ovo i ono (mogu ja sad da pisem 2 dana
sta meni sve ne valja u pitonu, ko sto su ti tvoji jarani kukali da im
ne valja java, no svodi se na ili licne preference ili nepoznavanje
materije, nema veze sa kvalitetom jezika) vec da sam ja matori pr..avac
koji je suvise zadrt da bi prihvatio doticni
[ jablan @ 29.05.2017. 14:31 ] @
Pogubio sam se, jel se ovde priča o jezicima ili VM-ovima?
[ bogdan.kecman @ 29.05.2017. 15:10 ] @
vm je nezaobilazan danas kao pretprocesori nekad
[ mmix @ 29.05.2017. 17:59 ] @
skript dinamicki jezici nikad ne mogu da postignu performantnost strong typed jezika. Ako za svaki statement moras da radis type adjustment od toga leba nema. U prrincipu sve se svodi na to koliko usporenja je prijhvatljivo.
[ Nedeljko @ 29.05.2017. 19:09 ] @
Bogdane,

Ja stvarno, ali stvano nemam iskustva sa javom. Iznenadio sam se kada sam video da ne mogu int i double da prenosim po referenci (to se tiče jezika).

Očekivao sam da memorija ima fragmentaciju, ali da povremeno GC obavi posao uključujući oslobađanje defragmentaciju (to se tiče platforme).

U svakom slučaju, stekao sam utisak da je C# bolji jezik od Jave, a .Net bolja platforma od Jave. Daleko od toga da sam merodavan.
[ bogdan.kecman @ 29.05.2017. 19:23 ] @
@nedeljko, bolji/losiji - ne bi zeleo da ulazim u tu pricu, sve je to
vrlo subjektivno ... kao sto rekoh, nekome je bitna produktivnost,
nekome performanse, nekome balans .. jbg ja i dalje bar 1-1.5% cukam asm
u 2017 godini ..

to sto ne moze po referenci je deo "razvoja" programskih jezika koji
meni ide na .!. vec mnogo godina i "odbrana" od losih programera tako
sto im zabranis da rade ovo i ono .. no sta je tu je, prihvatis ili ne i
vozis dalje .. tako da to sto nesto "ne moze tako kako si ti navikao" ne
znaci da je jezik bolji ili losiji, samo da je drugaciji... (to
drugaciji tebi moze da bude i gori, tebi personalno, kao sto je meni
personalno python u rangu sa fortranom najveca gadost koja postoji..
primer.. a doticni piton je jedan od najbrzerazvijajucih jezika danas
sto def. znaci da objektivno nije los, koji god da se kriterijum tu
uzima u obzir, nije los bar za nesto)

java ima svoje prednosti, i svoje mane, isto tako i .not .. mada ne
vidim da je ovo tema gde bi o istim trebalo diskutovati (obzirom da je
"popularnost C vs java" tema, .not-a tu nema ni u rtagovima)

@mmx, ko sto rekoh, produktivnost vs performanse, uvek bilo i uvek ce
biti ... kao sto je pre mnogo godina bio asm vs kompajlirano, pa onda
kompajlirano vs interpretirano, sada se te granice polako omeksavaju sa
cistim vm-om, kvazi vm-om ( run time compiling-om), semi
interpreterima/kompajlerima etc etc.. polu kompajlerima .. tako da
dolazimo u sivu zonu ako je "tip izvrsavanja" u pitanju ... a strongly
typed vs loosely typed vs dynamically typed to je tek zasebna prica ...

skoro terah neki foss app koji je pisan u perlu i zbunih se kako radi
dobrih 30% brze od neke nativne c++ aplikacije .. totalni zbun, ono
jeste ova nativna malo pretovarena nekim glupostima ali 30% brze perl od
c++ .. totalni zbun, i nesto mi trebalo da promenim, pogledam ja kod a
prijatelju tamo samo ui u perlu, sav matis, racunica, sve uradjeno u
cistom c-u .. i to se vodi kao perl app samo su "biblioteke" u c-u :D ..
sio mi ga djura :) ..

zivot je suvise kratak za a vs b, kad ti treba a uzmes a, kad ti treba b
uzmes b i teras dalje .. kad znas od a do x posle y i z lako naucis kad
ti zatrebaju.. pa koristis i njih...
[ Nedeljko @ 29.05.2017. 20:14 ] @
Jedan prijatelj mi je dao najbolji odgovor: Ne sviđaju ti se programski jezici? Odlično! Napravi bolji.
[ bogdan.kecman @ 29.05.2017. 21:01 ] @
https://m.xkcd.com/927/

[ Nedeljko @ 29.05.2017. 22:10 ] @
Ne radi se tu uopšte o standardima. Šta će postati standard, vreme će pokazati. Da su svi tako razmišljali, skoro ničega ne bi bilo.

Ako nijednim jezikom nisi zadovoljan, pokušaj da napraviš neki kojim bi bio potpuno zadovoljan. Onda će verovatno još neke srodne duše biti time zadovoljne.
[ DusanSukovic @ 30.05.2017. 05:10 ] @
Citat:
Nedeljko:
Ako nijednim jezikom nisi zadovoljan, pokušaj da napraviš neki kojim bi bio potpuno zadovoljan. Onda će verovatno još neke srodne duše biti time zadovoljne.



Koliko ljudi zna odlicno toliko programskih jezika da bi doslo do ovog nivoa? ;-)
[ dejanet @ 30.05.2017. 08:13 ] @
@Nedeljko: U opste nije iskljuceno da ces na kraju balade biti u pravu sa tvrdim stavom 'back to the basics'. Ovo stanje sa milion frameworka u javi i .net nece moci jos dugo.
[ Branimir Maksimovic @ 30.05.2017. 16:31 ] @
Programski jezik ne vredi nista ako nema dobar kompajler/interpreter, adekvatne libove i razvojne alate.
[ Nedeljko @ 30.05.2017. 17:20 ] @
Ja se neću baviti time. No, stara kineska poslovica kaže da i najduže putovanje počinje prvim korakom.

Dakle, da su svi tako razmišljali, ničega ne bi bilo. Da li baš svako treba da pravi programske jezike? Ne treba. Ko treba? Onaj ko smatra da ima dobru ideju.
[ Branimir Maksimovic @ 30.05.2017. 18:09 ] @
Valjda computer scientists prave programske jezike ;)
Pogle Idris ugradili su dokazivanje teorema pa sad ti vidi ;)
[ Nedeljko @ 30.05.2017. 18:26 ] @
Aha, a ko je napravio uspešne jezike PHP, Python i Ruby?
[ bogdan.kecman @ 30.05.2017. 18:33 ] @
jezike pravi ko zeli kad za to ima potrebu .. to na kojim se studijama
to uci nije preterano bitno (i na telekomunikacijama na etf-u se pre 20+
godina ucilo kako se pisu kompajleri)

php je napisao zend kao diplomski rad na faxu... njegov profesor,
mentor, bio ovde u beogradu tamo 2000 na java danima (kada smo sa
ictt-om dovukli sun-ove inzenjere iz izraela, tad je bio i taj profa, ne
secam se kako se zove, treba da ima negde slika na netu sa tog eventa)
[ Nedeljko @ 30.05.2017. 18:35 ] @
Pravi onaj ko misli da ima dobru ideju. Šta će od toga da uspe, vreme će pokazati.

Ja ne msilim da je budućnost u jezicima nalik na idris i F*.Net, nego u jezicima nalik na Lean. Nisam rekao da će on biti taj, ali nalik na taj. Eto, MS je razvojno krenuo u dobrom pravcu.
[ Branimir Maksimovic @ 30.05.2017. 20:39 ] @
Cek, taj Lean nema ga ni u listi programkih jezika na wikipediji ;p
[ Nedeljko @ 30.05.2017. 20:46 ] @
Pa šta.
[ Branimir Maksimovic @ 30.05.2017. 20:51 ] @
Pa kako ako je buducnost da nema kompajler za njega niti bilo kakav info? Jezici od interesa su Coq, Agda i Idris, to je taj fazon.
[ Nedeljko @ 31.05.2017. 05:12 ] @
https://leanprover.github.io/

Nije bitno ni da li danas ima kompajler. Bitna je paradigma. Naravno da se nijedan jezik neće koristiti pre nego što bude imao sve šta treba. Što se LEAN-a tiče, ima kompajler.

https://leanprover.github.io/

Idris nije taj fazon. Coq donekle jeste.
[ mmix @ 31.05.2017. 10:43 ] @
Napraviti jezik je prosto kao pasulj, ne moras zavrsiti CS da bi to uradio, treba samo da znas Lex&Yacc.
Realni problem zapravo nastaje kad treba da emitujes nesto iz kompajlera, sta je to nesto i koliko je dobro optimizovano, leksicka analiza i parsiranje na koju se svi primaju je najmanje vazna u celoj prici.

Ti pure functional i specijalizovani jezici kao sto su Coq, Idris i Lean, to je niche market, to interesuje samo primace i uzak krug profesionalaca (tipa matematicara). Moracu da vas razocaram ali ti jezici nikad nece videti svetlo dana van tog kruzooka.
[ Branimir Maksimovic @ 31.05.2017. 15:24 ] @
Pa nije bas tako da je prosto. Svaki jezik iza sebe ima neku teoriju, parsiranje dolazi na kraju ...Naravno mozes uvek poceti od postojeceg jezika pa ja onda lakse. Sto se tice funkcionalnog programiranja ono je uslo u mainstream samo ne u svom cistom obliku.
Recimo Haskell je strahovito popularan iako je cist funkcionalan jezik. Idris takodje ima sledbenike iako je kompajler tek pre par meseci dostigao verziju 1.0. Ali to je daleko od nivoa optimizacije koje nudi GHC ...
[ Nedeljko @ 31.05.2017. 16:10 ] @
mmix

Ni ja ne mislim da ce bas ti jezici zaziveti, ali ta paradigma hoce.

Napises specifikaciju, pola implementacije napises ti, a pola masina i na kraju je garantovano da kod odgovara specifikaciji (bug free). Imas compile time error za nesaglasnost koda sa specifikacijom.

Naravno da su Coq i Agda daleko od toga, ali polako. Lean se trudi da bude blizi, mada ce i on u djubre, da bi neki sledeci zaziveo.

Danas je specifikacija odvojena od implmentacije. Nemas compile time error za semanticke greske. Sav kod pises ti i na kraju ti nije garantovano da radi.
[ bogdan.kecman @ 31.05.2017. 16:30 ] @
> Napises specifikaciju, pola implementacije napises ti,
> a pola masina i na kraju je garantovano da kod odgovara
> specifikaciji (bug free).

probano vec mnogo puta, nikad zazivelo, 99.9999% nikad nece zaziveti..

za sada najblize tome je ASN.1 https://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One
a svi znamo koliko (ni)je isti zaziveo

specijalizovanih jezika ce uvek biti, hype-a ce uvek biti, ova situacija sada sa visokoproduktivnim uzasno neefikasnim jezicima (npr maloprepomenuti haskel) nikad nije bila ovako izrazena, i mene zanima kako ce se to zavrsiti.. mada obzirom na to da se ide ka ukidanju desktopa jasno je da javascript uzima ogroman deo kolaca, ma koliko gadno to zvucalo, i naravno ovi mobilni - java i swift .. a bekend mi opet nesto smrdi da ce 95+% posla raditi mikroservisi velikih provajdera (amazon, oracle, google, microsnot..) te ces kod njih imati bazu, queue, storage.. a tvoj app ces biti u stvari samo neka glue logika koju ces moci u bilo kom jeziku da pises ma koliko spor bio.. tako da tu ovi spori-visokoproduktivni jezici imaju neku buducnost..

a onih ~5% ce biti razvoj svih tih servisa i slicno i tu ce uvek dominirati c/c++ uz postapalice php/ruby/piton/..

naravno, mozda sam 100% omasio :D

a sto se razvijanja jezika tice, imam ja jednog poznanika koji je za svaki svoj projekat imao ideju da pise novi jezik, pa je tako bio glavni razlog za unistenje jedne multimilionske kompanije za vreme .com balona .. pritom svaki jezik koji je napravio je bio, po mom misljenju, a i po rezultatima, losiji od svega sto je u tom trenutku bilo dostupno, nego covek voli lex/yac vise nego da ode na internet i informise se o tome sta vec postoji :( .. taj kompleks "ja sam najpametniji na svetu" je sve cesci :(
**
[ djoka_l @ 31.05.2017. 16:48 ] @
Sa novim razvojnim alatom XYZ, čak i oni koji nisu programeri mogu da naprave aplikaciju koja će profesionalno da izgleda.

Ovo slušam već 25 godina. I napravio sam u 50 različitih razvojnih okruženja aplikaciju Hello World koja izgleda profesionalno. Dalje od toga, potrebni su meseci mukotrpnog učenja i čukanje od strane visoko obućenih timova da se bilo šta drugo napravi...
[ Nedeljko @ 31.05.2017. 16:59 ] @
bogdan.kecman

Pa, nije probano mnogo puta. Mozda je Coq prvi pokusaj. Nisi u tom fazonu da znas sta mu pripada, a sta ne. To je kao mesanje panka i hevi metala.
[ bogdan.kecman @ 31.05.2017. 17:15 ] @
coq je samo "kako matematicar vidi resenje tog problema" naravno kroz
svoje matematicarske naocare - ko ima cekic njemu sve ekser.

asn1 jezicki moze da odradi i sve sto moze coq, pitanje je sad
okruzenja, ko/sta ce daj kod posle da procita i sta sa njim radi, coq
ima tu ideju da njegov env radi proveru dokaza i slicno, ali to je sad
externi env, nema veze sa samim jezikom.. jezicki nema nista vise od
asn1 ... asn1 je opet generalno "telekomunikaciono" okrenut (za
transmisiju, enkripciju i slicno) .. te sav njegov env gadja tu pricu ..
ali to je opet env, sam jezik moze da opise sta oces :D ...

no tih raznih "high order abstract syntax" ima dosta, sreo sam bar 10
standardizovanih ili polustandardizovanih sa donekle uradjenim env. koji
radi ovo i ono .. sve se to na kraju svede na "ja sam napravio zato sto
mi treba za X i koristim za X" i onda jos po neko to iskoristi za X i to
je to .. i vrlo je jednostavan razlog - sintaksa je generalno pdim,
kakvu god sintaksu oces to se lako napravi i isparsira .. ono "posle" je
ono sto predstavlja ozbiljan problem, a to posle da napravis
"univerzalno" ... nije jednostavno, a postavlja se pitanje dal za to
uopste ima potrebe
[ Nedeljko @ 31.05.2017. 17:39 ] @
"high order abstract syntax" znaci da su tu rok i narodnjaci isto.
[ bogdan.kecman @ 31.05.2017. 17:41 ] @
yup rok, dzihad, akvarel, ulje na platnu, odeca, radio talasi... zavisi
koliko je "high order" :D
[ Branimir Maksimovic @ 31.05.2017. 17:56 ] @
bogdane haskell je kompajlirani jezik, mozes da pises C u njemu ;)
Ljudi koji stoje iza toga su se potrudili da bude kompetentan bilo cemu. Sad ako hoces da koristis njegov String koji je linked lista karaktera ili ByteString stvar je na tebi ;p
GHC je prosao veliki put i sad je na verziji 8.x i zaista je dobar u tome . Mozda da si me pitao negde 2007 rekao bih batali Haskell ali sad nesto nisam vise ubedjen u to.
Ono sto ovaj jezik ima je neverovatna ekspresivnost da sa malo koda zavrsis posao. Naravno paradigma mora da se menja, i nacin razmisljanja ali sto se tice performansi sasvim je ok.
Cak ima eksperimentalnu podrsku za SIMD u jednoj grani ;)
Ono sto Haskell omogucava je bezbolna integracija sa C-om pa cak ima i StablePtr da mozes iz C-a da petljas sa Haskell podacima a da ne brines da ce GC da pretumbava ;)
[ bogdan.kecman @ 31.05.2017. 18:09 ] @
znam ja dobro sta moze a sta ne, jedan kolega iz svedske je jedan od
core developera tamo, smara non stop sta su novo uradili sta nisu, sta
valja, sta ne valja i slicno .. ide mi na ganglije .. do duse mnogo
bolje poznajem erlang i elixir (jedan od "izmisljaca" erlanga je lik
koji je dosao kao mccge developer u mysql kada smo otkupili mccge tim od
eriksona :D, ne znam dal je norvezanin ili sved, posto ih je bilo nesto
pola pola, mislim da je sved ... i on je do skoro non stop tupeo o
erlangu .. ) .. a danas *sve* moze se integrise sa c-om, ako ne radi
integracija sa c-om jezik ima nikakve sanse da uspe

> negde 2007 rekao bih batali...

nikad nisam bio u fazonu da bilo kome govorim sta da koristi a sta ne,
ako je dovoljno inteligentan znace sta treba da koristi za koju priliku,
ako nije svejedno mu nece pomoci da mu ja tupim sta da radi :D tako da
.. nikad nisam bio od tih koji smaraju da nesto treba ili ne ... ja imam
sta ja volim da kucam, sta mogu da kucam a sta necu da kucam ni pod
kojim uslovima .... ja recimo piton organski ne podnosim a pola sveta ga
obozava.. sigurno necu nikom reci "batali piton"
[ Branimir Maksimovic @ 31.05.2017. 18:36 ] @
Pa pazi ako si prosao kroz nesto, onda coveku ustedis vreme.... da ne mora da prolazi kroz isto. Sto se tice integracije sa C-om, hm , retko koji jezik ima dobru. Recimo Go, katastrofa. Sta mislis zasto za go nema GUI? Pa zato sto su od verzije 1.6 zabranili da prenosis Go pointere u C.
A tek Java? Sto se pythona tice to je interpretirani jezik pa je neefikasan i spor tamo gde ga koristis za bilo kakvu vrstu racunanja. Recimo uporedi ova dva primera resenja problema 512 (jedan u pythonu jeda nu haskellu) na project euleru:

Code:

import math
import sys

class OddPrimeTable():
    def get(n):
        visited_range = n // 2 + 1
        visited = [False for i in range(visited_range)]
        sqrt_n = int(math.sqrt(n)) + 1 
        for i in range(3, sqrt_n, 2):
            if visited[i // 2]:
                continue
            for j in range((i**2) // 2, visited_range, i):
                visited[j] = True
        return [i for i in range(3, n + 1, 2) if not visited[i // 2]]
        
class Problem():
    def solve(self):
        for n in [100, 500000000]:
            print(n, '=>', self.get(n))

    def get(self, n):
        odd_bound = (n + 1) // 2     
        result = [2 * i + 1 for i in range(odd_bound)]
        prime_list = OddPrimeTable.get(n)
        print('odd prime list size =>', len(prime_list))
        for prime in prime_list:
            double_prime = prime * 2
            for j in range(prime, n, double_prime):
                result[j // 2] = result[j // 2] // prime * (prime - 1)
        return sum(result)

def main():
    problem = Problem()
    problem.solve()

if __name__ == '__main__':
    sys.exit(main())



Code:

import qualified Data.Vector.Unboxed.Mutable as V
import qualified Data.Vector.Unboxed as VU
import Text.Printf
import Control.Monad

odd_get n = do
    let visited_range = (n `quot` 2)+1
        sqrt_n :: Int
        sqrt_n = truncate (sqrt (fromIntegral  n::Double))
    visited <- V.replicate visited_range False
    mapM_ (\i-> do
            let ind = (i*i)`quot`2
            v <- V.unsafeRead visited $ i `quot` 2
            when (not v) $ do
                mapM_ (\j-> do
                        V.unsafeWrite visited j True)
                      [ind,ind + i..visited_range-1]
          )      
        [3,5..sqrt_n]
    VU.filterM (\i-> do
                v <- V.unsafeRead visited (i`quot`2)
                return $ not v)
        $ VU.enumFromStepN 3 2 (n`quot`2-1)

get :: Int -> IO Int
get n = do
    let odd_bound = (n+1)`quot`2
    let tmp = VU.generate odd_bound (\i->2*i+1) :: VU.Vector Int
    result <- VU.unsafeThaw tmp :: IO(V.IOVector Int)
    prime_list <- odd_get n
    printf "odd prime list size => %d\n" (VU.length prime_list)
    VU.mapM_ (\prime-> do
        let double_prime = prime*2
        mapM_ (\j-> do
            v <- V.unsafeRead result (j`quot`2)
            V.unsafeWrite result (j`quot`2) ((v`quot`prime)*(prime-1))
            )
            [prime,prime+double_prime..n-1])
            prime_list
    result1 <- VU.unsafeFreeze result
    VU.foldM (\i j->return $ i+j) 0 result1

solve = mapM_ (\n -> do
    getn <- get n :: IO Int
    printf "%d => %d\n" (n::Int) getn) [100,500000000]

main = solve


Ono sto ces primetiti da pitonu treba jedno 5 x vise rama i 5 minuta a haskellu jedno 20 ak sekundi (koristeci llvm bekend) ;p

edit: ne pokusavajte ako nemate bar 16GB rama ;p
Imam i resenje koje ne zahteva mnogo rama ali zato je CPU time mnogo veci, to ni ne pokusavam u pythonu ;p



[Ovu poruku je menjao Branimir Maksimovic dana 31.05.2017. u 20:02 GMT+1]
[ bogdan.kecman @ 31.05.2017. 20:12 ] @
kao sto rekoh, svaki ima svoje ... a vremenom se razvijaju i menjaju,
java je imala odlicnu vezu sa c-om ali su je zapostavili zbog sigurnosti
(i jos nekih stvari po meni o kojima ne smem da spekulisem).. haskel i
erlang su do "juce" bili potpuno neupotrebljivi ali im je visoka
produktivnost (i to da su se lead developeri istih uvalili u neke
povelike firme te oteli ogromne pare na foru) omogucila brz razvoj
kompajlera i rt okruzenja (libs/vm's) .. isto je bilo i sa javom, seti
se jvm-a pocetkom stoleca i pogledaj sad :D .. obzirom na popularnost
pitona moze se desi i on da "poleti" u nekom trenutku u buducnosti.. sve
je pitanje potrebe, hype-a i kolicine nemackoamerickih dinara koje neko
zeli da upuca u razvoj :D

ono u sta sam ja ubedjen je da plebs nece vise pisati nikakav ozbiljan
kod, da ce to biti par procenata unutar velikih igraca i da ce sve
ostalo da bude igrarija sa guijem i koriscenjem raznih apija direkt sa
klijenta + eventualno neki sitan glue na serveru.. mnogo lakse za
odrzavanje, mnogo lakse za spijuniranje, mnogo lakse za cenzuru.. jbg,
ja sam se uvek gadio na termin "kompajliram u javascript" ali evo,
postaje @%$%^&#^!@ realnost :(
[ Branimir Maksimovic @ 31.05.2017. 20:40 ] @
Mikrosoft research najvise ulaze u Haskell iako je primarna platforma Unix ;)
Drugo, ko da pise ozbiljan kod kad danasnje klince uopste ne zanima programiranje? ;)
Pa pogle na krstarici 7 miliona poruka o politici milion o religiji i samo 20 hiljada o programiranju, sve ce ti se kasti....
[ bogdan.kecman @ 31.05.2017. 20:51 ] @
krstarica i dalje postoji?
[ Nedeljko @ 01.06.2017. 07:55 ] @
Bogdane,

Mnogi giganti su poceli iz garaze, tj. kao plebs. Plebs moze da izraste u nesto veliko.
[ mmix @ 01.06.2017. 08:12 ] @
Integracija sa C-om uopste nije tako komplikovana kad se ulozi trud. C# (tj CLR) ima odlicnu integraciju sa C i C++-om i cak ima i managed C++ sa automatskim marshalingom.

Bogdan je u pravu, sve je to stvar hype-a, proliferacija jezika je masovna u poslednjih 10 godina, svaki CS student koji planira master se tripuje da napravi neki svoj jezik, vecina tih jezika je potpuno neupotrebljiva za prakticne primene. Zlatno pravilo je "dont feed the trolls", kad smo preziveli Ruby hype, prezivecemo svaki.
[ jablan @ 01.06.2017. 10:19 ] @
Citat:
bogdan.kecman:
krstarica i dalje postoji?


ES i dalje postoji? ;)

@mmix: Ruby je živo i zdravo, hvala na pitanju... ;)

[Ovu poruku je menjao jablan dana 01.06.2017. u 11:30 GMT+1]
[ bogdan.kecman @ 01.06.2017. 11:46 ] @
@nedeljko, to je van poente onoga sto sam pisao..

@mmx, ya ba, c is forever :D

@jablan, nisam mislio nista lose nego se secam pre skoro deceniju da su nesto umrli i od tada nisam cuo za njih mislio sam da se nikad nisu oporavili, niti me je istu tu deceniju neki search engine bacio na njih te je to ucvrstilo verovanje da su mreli, drago mi je da su jos tu. more the merrier :D... a sto se tice odnosa postova religija, politika i it .. to je ocekivano, meni es zgodan mogu sakrijem sve te forume koji me ne zanimaju (politika, religija..) i ova 2 koja me zanimaju da dobijam na mail.. ali ne verujem ni da je na es-u drugaciji odnos postova nego na krstarici ili bilo kom drugom domacem/stranom forumu koji nije limitiran striktno na jednu tematiku
[ jablan @ 01.06.2017. 12:35 ] @
To što više nema tema o programiranju na forumima je iz dva razloga:

1) socijalne mreže su ubile forume
2) stackoverflow je ubio programerske forume

verujem da se ljudi danas bave programiranjem više nego ikad.
[ Branimir Maksimovic @ 01.06.2017. 15:38 ] @
Hm. Pazi nije to od juce, to je ukupno od svih postova u zadnjih n godina ;p
[ mmix @ 01.06.2017. 15:50 ] @
Ma sve te metrike o popularnostima jezika su blago besmislene i statisticki veoma dubiozne relevantnosti. Ja se ne secam da sam ikad ucestvovao u tim survey-ima, to je zabava za zaludne koji ne znaju sta ce sa sobom

[ jablan @ 01.06.2017. 16:14 ] @
64000 developera nije znalo šta će sa sobom, meni deluje kao prilično dobar statistički uzorak.
[ Branimir Maksimovic @ 01.06.2017. 16:27 ] @
Meni je najbolja metrika IRC na freenode ;)
[ mmix @ 01.06.2017. 17:44 ] @
Ko sve danas sebe zove developerom, i dalje nisam ubedjen u uzorak I dalje stojim pri tome da ako imas vremena i zivaca da popunjavas te upitnike onda imas puno lufta na poslu i neadekvatan menadzment
[ DusanSukovic @ 01.06.2017. 18:20 ] @
Citat:
djoka_l:
Sa novim razvojnim alatom XYZ, čak i oni koji nisu programeri mogu da naprave aplikaciju koja će profesionalno da izgleda.

Ovo slušam već 25 godina. I napravio sam u 50 različitih razvojnih okruženja aplikaciju Hello World koja izgleda profesionalno. Dalje od toga, potrebni su meseci mukotrpnog učenja i čukanje od strane visoko obućenih timova da se bilo šta drugo napravi...



Upravo tako :-)
[ DusanSukovic @ 01.06.2017. 18:22 ] @
Citat:
Nedeljko:
Bogdane,

Mnogi giganti su poceli iz garaze, tj. kao plebs. Plebs moze da izraste u nesto veliko.



Vecina plebsa u Srbiji ne bude nista narocito (including myself) , klanjam se izuzecima..
[ bogdan.kecman @ 01.06.2017. 18:45 ] @
ne mislim ja nista lose kada kazem plebs .. ovi giganti su poceli "iz
garaze" ali su napravili takvu potencijalnu buducnost da ce mogucnost da
se doda novi gigant smanjiti maximalno .. a opet, taj neko ko postane
novi gigant nece bit plebs pa je opet svejedno ... ja pricam o tome sta
ce raditi nas 95% programera -> cukacemo kod za smrdljivi exploder (ili
kako ce se zvati sutra), kompajlirati u jos smrdljiviji javascript i to
je to .. i na "bekendu" neku pateticnu glue logiku i to je to .. sve
"bitno" ce biti tamo negde iza nekog apija koji ti nude razni provajderi
mikroservisa ... a to da se izboris da ti ponudis neki mikroservis je
ono sto kaem da su ovi napravili da ce biti gotovo nemoguce uci u igru :(
[ Branimir Maksimovic @ 01.06.2017. 19:18 ] @
Hm , pa kad ima za svakog ponesto ;p
Kazem ionako je danas 90% skript kidija koji i ne mogu nista drugo...
[ dejanet @ 01.06.2017. 19:45 ] @
Citat:
@bogdan.kecman: cukacemo kod za smrdljivi exploder (ili
kako ce se zvati sutra), kompajlirati u jos smrdljiviji javascript i to
je to .. i na "bekendu" neku pateticnu glue logiku i to je to .. sve
"bitno" ce biti tamo negde iza nekog apija koji ti nude razni provajderi
mikroservisa...


..Pa kada dodje klijent i pita zasto mu ne radi aplikacija, ja ga posaljem googl-u, a ovi ga re-rutiraju na ekipu iz Pendzapa, a oni..... A ako bas ja z*rem onda cekam update java script komponente, a ovi cekaju update Chrome-a, posto verzija 57 nije radila za taj slucaj. Chrome ekipa ceka QA tim iz Bangladesa, a ovi cekaju internet provider-a da pusti net, koji ne radi od poslednjeg update-a ms api-ija. QA ekipa iz Bangladesa, cak i ne moze da prijavi kvar jer provider-u ne radi call center, zbog bug-a u beta verziji webrtc-a ... a ekipa iza webrtc-a..... i tako..

U praksi sve vise lici na gore kosmarni scenario...
[ jablan @ 02.06.2017. 09:55 ] @
http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/ :D
[ Nedeljko @ 04.06.2017. 11:37 ] @
Sad mi iskusan javadžija reče da nikada nije imao potrebe da petlja išta eksplicitno sa GC-om i da alokacija radi brzo.

Međutim, ima novih iznenađenja.

Kada se pokrene java proces, on limitira svoj heap na neku količinu, npr. 512 MB ili neku drugu količinu nebitno i ne može da rate preko toga. To mi liči na ispit iz Pascal koji sam nekad polagao. Nema tu malloc ko u C-u da napraviš niz čija se veličina određuje u fazi izvršavanja, nego se u fazi prevođenja određuje veličinu niza koja piše u sorsu kao konstanta. Dakle, ako stavim mali niz, onda neće moći da radi sa veliim podacima, a ako stavim veliki, zauzimaće mnogo RAM-a čak i ako korisnik radi nešto što zahteva mali deo tog niza. Znam da je savremeni Pascal dobio zamenu za malloc/free.

Koliko se ja razumem u C++ npr., ako se C++ program napravi kako treba, onda se koristi onoliko RAM-a koliko je potrebno prema tome šta korisnik radi. Ako radi nešto što nije memorijski zahtevno, alociraće se malo, a ako radi sa nečim memorijski zahtevnim, onda se alocira više, pri čemu je granica količina raspoloživog RAM-a na sistemu.
[ bogdan.kecman @ 04.06.2017. 13:42 ] @
nije bas tako, nema veze sa primerom iz paskala, ti kada pokrenes
virtualnu masinu ti toj masini alociras neku kolicinu rama i ona ne moze
da "kasnije" uzme vise od toga, tako da ti kad startas jvm ti mu sa -Xms
setujes inicijalni heap, -Xmx maximalni heap (dakle on ce da uzima od
os-a izmedju Xms i Xmx po potrebi) -Xss max thread stack ..

startuj

java -XshowSettings:all

i on ce ti pokaze koje sve propertie vm ima, i sa

java -X

ces da dobijes sve te X parametre (za stek, heap i slicno)

takodje pogledaj -XX* opcije

to je normalno ponasanje, imas virtualnu masinu - podesavas kako hoces
ta masina da se ponasa, zasto max heap nije == max ram hosta, zato sto
garbage collection radi razlicito u odnosu na to koliko heap-a imas
prazno ... ako ti je 50+% heap-a prazno, sto bi uopste trosio vreme na gc :)

sto se "nikada nije imao potrebe da petlja išta eksplicitno sa GC-om" ..
znam ja mnogo "seniora" koji nisu, ali to samo zavisi sta prave i kako
.. ako naguras sve one ogromne frameworke oni u sebi imaju explicitno
drndanje sa gc-om, takodje serverske aplikacije uglavnom ne
startuju/testiraju/podesavaju ti developeri nego sysadmini koji vrlo
dobro znaju da to ne moze tako kako mali perica zamislja inace imas
uzasne pikove svaki put kad se okine gc, tako da imas fore tipa da kazes
da ti GC radi NONSTOP 2% vremena ili 5% vremena ili ako su developeri
losiji i nemaju ideju kako radi java pa kreiraju i unistavaju objekte
non stop 10% vremena ... tako nemas pikove gc radi non stop i app
performanse su vrlo "predictable" ... imas odlican tekst recimo ovde:
http://blog.sokolenko.me/2014/11/javavm-options-production.html takodje
procitaj i komentare ispod posta

sto se c++ dela tice, naravno, tako radi i C i bilo koji drugi nativni
jezik koji ima malloc/new/free/delete .. ideja GC-a u "modernim"
jezicima je da je sve vise "programera pajsera" koji ne umeju da urade
free/delete pa to umesto njih radi GC ... u tom slucaju moras da imas
zauzeto "vise rama" nego sto ti treba zato sto gc-u treba neko vreme da
oslobodi visak .. sa min/max heap ti podesavas virtualnoj masini granice
u kojima hoces da radi .. nista drugacije se ne ponasaju ni "nativni
jezici sa gc-om"

> Nema tu malloc ko u C-u da napraviš niz čija se veličina određuje u
fazi izvršavanja,
> nego se u fazi prevođenja određuje veličinu niza koja piše u sorsu
kao konstanta.
> Dakle, ako stavim mali niz, onda neće moći da radi sa veliim
podacima, a ako stavim
> veliki, zauzimaće mnogo RAM-a čak i ako korisnik radi nešto što
zahteva mali deo tog
> niza. Znam da je savremeni Pascal dobio zamenu za malloc/free.

jok, omasio si skroz, napravis dinamicki niz u javi i on zauzima tacno
toliko mesta koliko treba, cak stavise, napravis, vektor, mapu ili
stagod, i automatski alocira onoliko rama koliko treba kada dodas
objekat u mapu, vektor... i on taj ram alocira sa nekim svojim
"jvm_malloc na primer" sa svog heap-a od jvm-a, pa ako nema dovoljno
rama na heap-u da to odradi on sistemskim malloc poveca heap do max heapa...

fora je u tome sto kada obrises objekat iz vektora, ili kada obrises ceo
vektor ta memorije se ne vrati automatski na heap dok je garbage
collector ne vrati.. nemas mogucnost da ti kazes delete() ili free() i
vratis to nego mora dereferenciras i cekas da gc to vrati "sam". ...
tako da u poredjenju sa C++, sve radi prilicno isto, jedino sto imas
samo malloc() i new, nemas free() i delete, free i delete se pozivaju
"automagicno" :D
[ Nedeljko @ 04.06.2017. 15:08 ] @
Ja hoću da ako korisnik radi nešto malo memorijski zahtevno, da jvm ne zauzme mnogo. Ali, ako korinik radi nešto memorijski zahtevno, da može da alocira ako ima dovoljno RAM-a.
[ bogdan.kecman @ 04.06.2017. 15:31 ] @
pa onda ne koristis javu :D
[ Nedeljko @ 04.06.2017. 16:12 ] @
Da li je .Net normalniji po tom pitanju?

Nije meni frka što će za sitan proces da zauzme 10-tak MB RAM-a. Nego da ne ždere mnogo u startu, ali da može da se naždere ako je neophodno.

[Ovu poruku je menjao Nedeljko dana 04.06.2017. u 19:01 GMT+1]
[ dejanet @ 04.06.2017. 16:25 ] @
Neka mala console app ce ti zauzeti u startu nekih 10-15 MB u .net.

Nisam siguran da je to vazan podatak, nego moguce je da bi ti legao .NET Core, jer mozes da cukas i startujes u lindzi.
[ Nedeljko @ 04.06.2017. 18:06 ] @
A šta radi java? Je li odmah poždere ne znam šta ili ako ne poždere odmah, onda ne može da se naždere po potrebi ili šta?

Kako se Google bori s tim?
[ bogdan.kecman @ 04.06.2017. 18:39 ] @
> Da li je .Net normalniji po tom pitanju?

nemam pojma, mislim da je vise amnje isti, posebno ako ne koristis clr
nego mono da bi radio vam microsnota

> Nego da ne ždere mnogo u startu, ali može da se naždere ako je neophodno

pa stavis mu init heap da bude malecan i uzece ti u startu samo toliko
rama, a max stavis na koliko ocekujes max da ti terba.. default verzije
za init i max su prilicno "odokatvno uzete za prosecni app"

> jer mozes da cukas i startujes u lindzi

mono je i dalje uzasno bagovit :( ... ja licno za "desktop" apps
koristim paskal (lazarus), pokazao se mnogo dobro za linux+osx+windows
app with same code.. mada ja toliko malo desktop app pisem da je to moje
iskustvo ne-preterano-bitno

> Je li odmah poždere ne znam šta ili ako ne poždere odmah, ..

sto bi bilo sta pozdrala odma? alocira odma min heap, i tu radi, kada ne
moze unutar tog heap-a da se snadje povecava do max heap-a, ako joj
zatreba i preko max heap-a pukne zbog nedostatka rama .. nema tu neke
prevelike filozofije tako radi vecina virtualnih masina .. kod jave imas
mogucnost da setujes init i max, kod nekih je po defaultu init neka
malecna vrednost a max = max_available_ram .. ali nacin funkcionisanja
je vise manje isti ... ono sto ne radi ni kod jedne vm je da os moze da
odsvapuje deo rama koji se "nije pipno duze vreme" posto os nema pojma
kako se taj ram koristi jer sto se os-a tice to je sve jedan veliki blob
.. tako da su sve vm aplikacije (i java i .not i erlang i elixir i ..)
nezgodne za memory management (swap je prilicno beskoristan)

> Kako se Google bori s tim?

ako mislis na google-google, nikako, oni jako malo koriste javu, a tamo
gde koriste vrti se "jedan app na serveru" u tom slucaju je podesavanje
vrlo jednostavno - initheap = maxheap = maxavailableram i to je to, os
ne radi nista, jvm hendla sav ram i to je to .. nista drugo se ne vrti
osim tog jednog multithreading procesa na celoj masini .. dal je ta
masina bare metal ili neki opem vm to je nebitno .. no oni skoro sve
vrte na c/c++ tako da je tu java beznacajna

ako mislis na google-android, imas sve probleme koje imas i sa javom na
obicnom desktop/server sistemu.. e sad nisam siguran taj dalvik njihov
kako tacno radi, da li se sve droid aplikacije vrte na jednom vm-u ili
se podize po jedan vm za svaki app, obzirom da na telefonu nemas "spor i
jeftin storage po kome mozes jeftino da pises i brises" swap je nebitan
tako da je memory management bez problema prepusten samom vm-u ... u
svakom slucaju, kao developer, imas sve probleme koje imas i na desktopu
+ tu i tamo po nesto alata vise nego na desktopu za monitoring object
management-a, gc-a i slicno .. i imas sve "benefite" koje ti java pruza
u odnosu na c++

nista drugaciji nije ni swift osim sto na iosu svaki app trci u sendboxu
tako da je sto se nekih stvari tice nezgodniji za development a sa druge
strane opet sigurniji i zgodniji.. (npr na iosu nemas common file system
za sve aplikacije kao na normalnim os-ovima, da bi 2 aplikacije podelile
neki podatak, tipa datafajl, treba da izvodis ozbiljnu gimnastiku)
[ Nedeljko @ 04.06.2017. 18:52 ] @
Hvala vam svima što mi rasvetljavate ovo!
[ jablan @ 04.06.2017. 19:29 ] @
Citat:
bogdan.kecman:
ideja GC-a u "modernim"
jezicima je da je sve vise "programera pajsera" koji ne umeju da urade
free/delete pa to umesto njih radi GC ...

Znaš, umem ja da uzmem motiku u ruke, pa ipak odem u pekaru i kupim lebac.
[ Branimir Maksimovic @ 04.06.2017. 22:47 ] @
bogdane net.core je za servere, nema gui ;)
MS bi se polomio da portuje GUI na Linux, onda bi Windows puko ;p

Sto se GC-a tice, lepo je kad jezik omogucava i rucnu alokaciju/oslobadjanje i GC pa prema potrebi.
[ Nedeljko @ 05.06.2017. 10:04 ] @
Sto se automatskog skupljanja djubreta tice, postoji vise metoda.

1. Stog (stack)

Implementiraju ga strukturni jezici kao C i Pascal i primenjuju se na lokalne promenljive. Ogranicenje mu je da redosled unisrtavanja mora biti obrnut od redosleda stvaranja. Stoga, C i Pascal implementiraju i gomilu (heap) koja nije upravljana.

2. Brojanje upucivanja (reference counting)

Implementira ga C++ kroz pametne pokazivace. Opstiji je od prethodne metode i funkcionise dok nema kruznih pokazivanja.

3. Metod dostiznosti (reachabiliyu method)

Implementiraju ga Java, C#, Python, Ruby, Javascript. Funkcionise pod jos opstijim uslovima, ali ni on nije svemoguc. Garantuje da nece obrisati nesto sto ne sme, ali ne garantuje da ce biti obrisano ono sto sme cak i u slucaju pokretanja GC-a.

Semanticko djubre je objekat koji se ne moze dostici u nastavku izvrsavanja programa, bez obzira na ulaze u nastavku rada. Problem utvrdjivanja semantickog djubreta je algoritamski neresiv.

Zamislimo da imamo programski kod oblika


Code:

String s = nesto;

Neki kod kome s ne treba

print(s);


Ukoliko se kod u sredini nikada ne zavrsava i , bez obzira na ulaze, onda je s nepotrebno i predstavlja djubre. Ako se kod u sredini moze zavrsiti, onda je s potreban.

Naravno, ovde je jednostavno prebaciti s iza tog bloka koda, ali program moze biti slozeniji.

Metod dostiznosti detektuje sta je memorijski dostizno, a sta ne (ne uzimajuci u obzir logiku programa). Ono sto je memorijski nedostizno, svakako je semanticko djubre. Medjutim, ono sto je memorijski dostiznoi, moze biti nedostizno bez obzira na ulaze zato sto je logika programa takva da to vise nece nikada upotrebiti.

To je ono sto mi smeta kod te metode. Ne znam pod kojim uslovima garantuje da nema curenja (recimo da ce se GC paliti povremeno, da to nije problem).
[ mmix @ 05.06.2017. 11:08 ] @
Nedeljko,

.NET radi chunking sa sistemskom memorijom, u zavisnosti od konfiguracije u chunkovima od 16 do 64Mb, ne postoji min I max heap (min je 0, max je kolicina raspolozive virtuelne memorije). Koristi greedy strategiju uzimanja memorije od sistema (uvek ce radije da uradi global alloc nego Gen2), pa zato realno izgleda kao bloat, medjutim pod sistemskim pritiskom radi Gen2 cleanup i dealokaciju chunkova. Radni set CLR aplikacije je isti kao i za native aplikacije, nema potrebe definisati ga unapred. Generalno je optimizovan za veliki promet (alloc/dispose) malih objekata na ustrb prostorne efikasnosti.
.NET objekti nisu indeksirani i uvek imaju tacno jednu i samo jednu kopiju na heap-u i reference su uvek pointeri (na steroidima ) a ne kontrolni blokovi, tako da je svaki objekat moguce "pinovati" i time privremeno/trajno iskljuciti iz GCa i dobiti njegovu fizicku adresu (koja onda moze da se marsaluje unmanaged kodu). To postize tako sto umesto centralizovanog registra objekata (kontrolnih struktura za svaki objekat kao sto npr COM koristi kroz Variant) i 2-step indirektnog poziva, CLR drzi class grafove u seriji root-ova a JIT kompajler insertuje pointer management pozive nakon svakog out-of-scope mesta na kojem potencijalno treba da updejtuje svoje rootove. Ti menadzment pozivi su generalno brzi od klasicnog free poziva i na tome CLR hvata korak sa C/C++-om u odnosu na Javu i druge VMe. Glavni za*eb ljudi sa CLRom je sto ga posmatraju kao apstraktni VM, sto on nije. JIT sav (ali svih 100%) kod kompajlira u native kod optimizovan za platformu na kojoj ucitava asembli i kod se izvrsava direktno na metalu bez nadzora VMa, kao sto bi C++/Delphi radio. GC je vise kao neki lebdeci nadzornik koji se trudi da pohvata sve memory leakove koristeci injected pozive

https://www.simple-talk.com/do...ng-garbage-collection-in-.net/
[ mmix @ 05.06.2017. 11:17 ] @
Odgovor na tvoj poslednji post je da nema jedinstvenog nacina. Memorijski dostizna lokacija koja se vise ne koristi je ista kao i da si u C++ alocirao nesto i onda zaboravio da ga dealociras. Softver ne moze da detektuje da li ce neka lokacija pod nekim uslovom biti kasnije referencirana samim tim analiza nije moguca.
.NET generalno ima resenje za to u dva pogleda, jedno je sistemsko (page boundaries, ako page memorije nije koriscen dugo sam sistem ce ga premestiti u VM i skinuti iz fizicke memorije), drugo je njegovo u vidu WeakReference pointera, koji zahtevaju malo vise truda.

https://msdn.microsoft.com/en-us/library/ms404247.aspx

Generalno to i nije bas toliki problem koliko ti se cini, ako ta klasa bas barata resursima koje ne zalis da budu zauzati dok GC ne ubije objekat postoji Disposable pattern koji omogucava mekano ubijanje objekta

https://msdn.microsoft.com/en-us/library/fs2xkftw.aspx
[ Nedeljko @ 05.06.2017. 13:26 ] @
Citat:
mmix: Odgovor na tvoj poslednji post je da nema jedinstvenog nacina. Memorijski dostizna lokacija koja se vise ne koristi je ista kao i da si u C++ alocirao nesto i onda zaboravio da ga dealociras. Softver ne moze da detektuje da li ce neka lokacija pod nekim uslovom biti kasnije referencirana samim tim analiza nije moguca.

To sam i napisao.

Ali, dripci iz MS lazu narod u MSDN-u.

Kad sam poslednji put proveravao, pisalo je da u potpuno upravljanim programima bez unsafe blokova nema potrebe razmisljati o alokaciji. Kao, savrseni su. How yes no.

Ma, mene zanima kriterijum koji treba program da zadovolji tako da znam da sam na konju da nema curenja.
[ Nedeljko @ 05.06.2017. 13:27 ] @
Momci, hvala vam svima za sve ovo! Sve mi ovo puno znaci.
[ mmix @ 05.06.2017. 21:46 ] @
Pa najefikasniji nacin da smestis objekat na snajper GCa je da jednostavno nulujes referencu (tj sve reference). Time objekat izbacujes iz grafova i bice pociscen. To nulovanje mozes da stavis u managed deo Disposable paterna i voila.

Ali to stvarno nije toliki problem kao sto mislis, potreban je zaista veoma los stil programiranja da dovedes sebe u poziciju da imas toliko nekoriscenih rootova i delova grafova da to postane problem. Ako je stil programiranja iole smislen, stvari ce izspadati iz scope-a regualrno i cela stabla ce biti kolektovana koliko vec u nultoj generaciji.
[ Nothingman @ 11.06.2017. 14:15 ] @
Citat:
bogdan.kecman:

nista drugaciji nije ni swift osim sto na iosu svaki app trci u sendboxu
tako da je sto se nekih stvari tice nezgodniji za development a sa druge
strane opet sigurniji i zgodniji.. (npr na iosu nemas common file system
za sve aplikacije kao na normalnim os-ovima, da bi 2 aplikacije podelile
neki podatak, tipa datafajl, treba da izvodis ozbiljnu gimnastiku)


Mozda sam te pogresno razumeo kada si rekao "nista drugaciji nije ni swift", ali na iOS-u (swift i objective c) nemas garbage collector. Koristi se automatsko brojanje referenci, sistem slican smart pointerima u C++ jeziku. S tim da tamo imas intruzivno brojanje referenci - brojaci se nalaze u samim objektima (moguce je jer u sustini svi objekti nasledjuju zajednicki bazni objekat), a ne eksterno. Takodje, vidjao sam da ovakav sistem koriste i neki endzini u C++ koji su odlucili da ne koriste standardnu biblioteku vec su implementirali svoj sistem sa smart pointerima. Sorry za offtopic :)
[ bogdan.kecman @ 11.06.2017. 14:26 ] @
> nemas garbage collector. Koristi se automatsko brojanje referenci,

brojanje referenci je takodje vrsta gc-a
[ Nothingman @ 11.06.2017. 14:39 ] @
Ok, nemas GC kao u Javi koju si opisivao pre toga :)
Slozices se da postoji velika razlika izmedju ta dva GC metoda, tako da ne stoji ono "nista drugaciji nije ni swift" ;)
[ bogdan.kecman @ 11.06.2017. 14:54 ] @
Citat:
Nothingman: Ok, nemas GC kao u Javi koju si opisivao pre toga :)
Slozices se da postoji velika razlika izmedju ta dva GC metoda, tako da ne stoji ono "nista drugaciji nije ni swift" ;)


nemas ti mogucnost da "normalno"
- da manipulises pointerima direktno
- da zauzimas i oslobadjas memoriju direktno

dakle "nista drugaciji nije ni swift" vezano za ovu pricu o kojoj smo pricali

naravno nije ni isti, zasto bi bio, ima neke fore koje java nema ( UnsafePointer<T> za pocetak ) i za razliku od jave ne trci u vm-u (llvm koncept koji koristi olaksava sandbox pricu ali swift se kompajlira za bare metal ne za vm) zato i radi drugacije... no da ne idemo u creva, to sto sa swiftom skoro pa mozes da odradis neke stvari koje sa javom ne mozes ne pravi neku razliku vezanu za ovu diskusiju, posebno sto je veliko pitanje kako ce se swift razvijati posto je prelazak sa 2 na 3 napravio ogromnu razliku, moje nagadjanje (nadam se da sam u krivu) je da je cela ideja sa prelaskom na swift (sa objc) lagano uvodjenje vm-a na ios jer ne mogu da nagadjaju vise kakav cpu ce biti u telefonu za X godina a hoce da zadrze kompatibilnost, oni vec rade nekakvo rekompajliranje aplikacije (binarne?!) "po potrebi" sa strane appstore-a .. nisam ispratio tacno sta se desava tamo, ali sa dev strane, moze sutra da izadje swift5 koji je potpuno managed i trci u vm-u :(

[ Nothingman @ 11.06.2017. 15:29 ] @
Iskreno, sumnjam u to. Mislim da Apple nije preterano opterecen kompatibilnoscu u bilo kom obliku, a pogotovo ne bi zarad iste zrtvovao performanse/trajanje baterije.
Pre par godina kada su izbacili GC iz upotrebe na desktop aplikacijama samo su napisali (parafraziram): "Od tad i tad vise ne mozete koristiti GC u aplikacijama koje saljete na App Store. Modifikujte aplikacije da koriste ARC". Toliko im je bitno da zadrze neku kompatibilnost :)
[ mmix @ 13.06.2017. 10:37 ] @
Pa sta ja znam, ja bih pre reference counting sistem nazvao auto-release mehanizmom nego GCem. GC mi nekako podrazumeva sweep
[ Nedeljko @ 13.06.2017. 17:51 ] @
Stack takođe spada u GC metode.
[ Nothingman @ 14.06.2017. 20:42 ] @
Stvar je samo u tome koliko formalni zelimo da budemo. Kada neko kaze GC uglavnom misli na ovo sto kaze mmix. Ajde da kazemo da GC kao pojam postoji u sirem i uzem smislu. U sirem smislu obuhvata razlicite metode automatskog upravljanja memorijom, dok u uzem smislu (koji je mnogo cesci u svakodnevnom govoru) obuhvata samo metode poput onih u Javi/.NET-u.