- Poruka
- 6.510
Ne, nisi me razumeo, ne mislim ja da sam najbolji i najveci (a ne patim za najvecim, kao sto i sam rekao, najvaznija je tehnikaUh sto volim ljude poput tebe koji misle da su najbolji, najveci i sa najvecim. Ja sam ti dao konktretan primer kada je indeksiranje u pitanju i da mnoge baze podataka nude vise nacina da se uradi indexiranje.

Ti ako ne znas nista o algoritmima izabraces neki pa ces sa njim dobiti bolje rezultate a pitanje je da li bi sa drugim nacinom indexiranja dobio jos bolje rezultate. Pa da bi to razumeo treba da se upustas u algorimte za sortiranje. Pa kada krenes da izucavas svaki od tih algoritama tu onda potajno lezi matematika u celoj prici oko odredjivanja kompleksnosti algoritama itd...
Ja na pominjem po vec 10 put da mozes ti da budes programer i bez velikog znjanaj matematike i da napises cas i operativni sistem samo kada dolazi pitanje optimizacije koda ti sve na sta mozes da se oslonis je zdravorazumski rezon dok meni pored toga stoji na raspolaganju ceo matematicki aparat.
Jesto, u ptavu si, ali negde valjda ima kraj optimizaciji, ili cemo cekati, dok neko ne izvrsio "optimizaciju svih optimizacija.." da bi se program lansirao?
Za mene je optimizovan program, koji odradjuje posao onoliko brzo koliko je za rad klijenta neophodno, da ne gusi druge procese, da se izvestaji i rezultati vide "optimalnom" brzinom. Ne zelim da patim od perfekcije, nikad je niko nije dostigao...
Na primer, jedna od mojih zadnjih aplikacija, radi sa mnogo baza, ali 4 su zaista velike (preko 1 milion slogova je generisano u svakoj od te 4).
Zadatim uslovom, koji stavlja 3 baze u relacije, a cetvrta sadrzi "dimanicke" slogove po datumima, vrstama i jos po nekim atributima, izvlacim rezultate jako brzo, naravno brze nego sto stampac stampa. Izmerio sam, rezultat je privremena baza, koja se popuni za 2 do 2.5 sekunde (oko 250 slogova je izdvojeno u proseku, jer se tako postavlja datumski rang). A koristi podatke iz SVAKE od 4 velike baze, stim, sto je 4-ta puna pojedinacnih rezultata, za zadati datumski rang. Sto se mene tice, optimizacija mi nije porebna. A ni klijentu. Pri tome se i napise HTML strana, posalje preko okeana, sto je zapravo najduzi proces... Pa sta da jos optimizujem? TO je zapravo srz moje diskusije ovde.
I slazem se ja sa tobom, moze se sve uraditi bolje, optimizovanije. ALi zatim, ponovo bolje i optimizovanije itd.
Samo sto se mene tice, efikasnost programa i brzina rada (i naravno tacnost, no to je druga tema), je uvek bila na nivou, gde se nije osecala ni najmanja potreba za daljom optimizacijom. Zato tvrdim da se moze i ovako, ali i onako, iskustvo tu mnogo posla vrsi.
Osim toga, postoje i hardverski limiti. Ma kako ti napravio brz algoritam, ako hardver (ili Internet konekcija), ne moze da propusti, dzaba ti bilo i "warp brzinske" optimizacije... Postoje limiti.
Vidis, koliko si zapeo za matematikom.Ma nije to bre filozofija, primera radi pomenuo si bouble sort algoritam, i on koristi isti skup funkcija kao i quicksort algoritam(funkcije poredjenja i indeksiranje elementa u nizu i operaciju dodele, plus jednu for petlju), pa se tvoj bouble sort izvrsava u slozenosti O(n*n) a quick sort radi brzinom O(n*logn) e sada ako ne znas sta je to ti uzmi digitron pa izracunaj koliko je za npr n = 100 000 vreme izvrsavanja jednog ili drugog algoritma.( Mada posto verujem da si windows programer i da baratas sa C/C++ uzmi borland c++ builder tamo imas cini mi se primer koji je radio sa threadovima i koji je demonstritao 3 razlicita algoritma za sortiranje pa ces videti slikovno o cemu ja ovde pricam)
Pa ne treba meni nista drugo do funkcija i komanda za indeksiranje i pretragu. Zasto mislis da bih imao potrebu za ispitujem slozenost sortiranja? Sta god da radim, imam u vidu PODATKE, od kojih je mnogo vazno kakvog su tipa takodje. Ako primenujem neki index (sortiranje ne koristim, jer indeksiranjem, postavljanjem "scope" i relacijama izdvajam podatke), ne mogu mnogo da ucinim ako jednom primenjujem to na datumske+stringove+numerike - a drugi puta numerike+stringove, nisu uvek isti problemi i zahtevi, itd...
Ako cu ogromne podatke da izvlacim za 2 sekunde, postoji granica gde ce SVAKI klijent biti zadovoljan. Ne govorim naravno o inzenjerskim programima i slozenim proracunima, gde je i piko sekunda vazna. Govorim o "poslovnim" programima, gde je na primer vazno saznati, od cega je neki proizvod napravljen, koliko elemenata sadrzi, koliko je sve to kostalo (razdvojeno po ceni elemeneta, radnika, transporta itd itd). Ako to odradim za bilo koji proizvod na primer, za manje od 2 sekunde, svi zadovoljni

To sam uzeo samo kao primer, jer tehnicki orijentisane programe nikada nisam radio, sigurno i zbog pomanjkanja znanja matematika, to priznajem.
Ma necu polinome, ne znam sa njima, ( a ilice mi na polipe), samo hocu da u Grckoj startujem obradu nad stoitinama hiljada elemenata, izvucem podatke u sekundama, napravim HTML u letu, posaljem u USA i odande se vrati "thank you..". Ako sve to odradim za veoma kratko vreme, polinomi me stvarno ne interesuju, jer znajuci rad sa njima, nista ne mogu bolje dobiti...Hoces recimo da mnozimo 2 polinoma velikih stepenova pa da vidimo ko ce brzi algoritam da napravi. Ili hoces recimo da vidimo ko moze brze da podeli ceo niz sa jednom konstantom, ili ko moze brze da izracuna sve kvadrate od 1 pa do nekog n ? To su sve proste stvari koje eto kada se matematikom zabavis a relativno cesto mogu da se iskoriste, ili mozda da mozda vidimo ko moze brze sinuse i kosinuse da izracuna za sve stepene od 0 do 90 stepeni, za svaki stepen ili recimo pola stepena.
Ne, naravno, inace ne bi preziveo, ali sigurno postoje pozicije i situacije, koje vec po strukturi prepoznajes, pa koristis neku ranije razradjenu tehniku... A to je ono sto ja radim takodje. Sad, da li sam ja do takvih "prepoznatljivih" resenja dosao metodom pokusaja i gresaka, ili kao ti, svestranom matematickom analizom, druga je stvar. Mozda je moj put bio "bolniji" ali se zavrsava negde sa iskustvenim pristupom, vec prema "prepoznatoj" ili "slicnoj" situaciji od ranije. Da ne pominjem UDF, koje se napisu jednom za odredjene slicne situacije, pa sam do daljeg miran.A sta mislis da ja radim sedim i racunam jedan problem po hiljadu puta pa sve do uzaludnosti.
Vec sam rekao da stvarno ne zivim od analize algoritama i razrade svega u detalje. Kada bih tako radio kao sto predlazes (googlovao da nesto takvo nadjem i analiziram), davno bih ostao bez hleba.Vec sam ti pomenuo malo ranije da pogledas algoritme za sortiranje, iako recimo "zdravorazumski" quickqost izgleda komplikovanije i duzi je po broju linija koda, a opet je drasticno brzi. Ako ne znas o cemu pricam pogledaj primer u builderu ili na googlu a ako bash ne uspes da nadjes nije problem poslacu ti par algoritama za sortiranje pa ces moci da vidis uzivo sta matematika radi na zivom primeru. A od algorimata za sortiranje svaka baza podataka mnogo zavisi jer se time skracuje vreme pretrage mnogo.
Nopevama prosecnim programerima ostavimo da pisete gui, a mi uglavnom odradimo ono iznutra i uzmemo 10 puta vise para od vas
. Uostalom pogledaj samo ko je sve izumeo vaznije algoritme u istoriji prorgamiranja. Videces da su tu 80% matematicari, brojke sve govore.
Slazem se, bez genijalaca koji su sve to zapoceli, nigde ni nas ne bi bilo, ali sve se uproscava i svodi na neki nivo gde i mi "prosecni" uzimamo lovu, a ne moram da znamo kako je neko do svega toga dosao.
Recimo pre nekog vremena sam zavrsio jedan program u xHArboru (verzija xBase kompajlera), i tamo postoji komanda/funkcija koja od mnogo stotina hiljada slogova a mnogo polja, pronadje slozenu konstrukciju indeksa za manje od desetinke sekunde. Stvarno ne znam kako je to napisano ali sto se mene tice, slozim index, zatrazim da mi nadje i to je to. Pa necu valjda pisati moje rutine za to. Neko je to perfektno uradio ako mi nadje sta treba za "blink" oka...
E o tome pricam.
A ako ti govoris o izradi ovakvih funkcija i algortmima za njih, onda brate sve vreme pricamo o dve razlicite stvari.
U svakom slucaju, ne sporim da je veoma znacajno poznavanje matematike i aniliticki i prakticki je koristiti. Samo ne mogu se sloziti da bez nje ce programi biti losi, a sa njom dobri. To jednostavno nije tacno.
Sidji malo sa visine matematickog gurua, pa zadji po raznoraznim programerskim kucama u Beogradu. Svi nesto rade, prodaju programe a ako negde nadjes da je u ekipi OBAVEZAN i dobar matematicar (osim ako se ne bave nekim visoko tehnicki orijentisanim programima), onda mi molim te kazi, da vidim to cudo. Govorim o klasicnim "poslovnim" (ili kako hoces da ih nazovem) aplikacijama. A od toga se zivi.
Nema previse posla za visoko specijalizovane programerske poslove, to valjda znas i sam. Treba raditi i programe od koji se za 'leba zaradjuje.
I slazem se, ako "ubodes" posao napolju na programiranju specijalivanih prorgama gde se trazi i veliko matematicko znanje, tu lezi lova (bez matematike neces ni do recepcije doci). Ali koliko ljudi ima srece da takvo mesto dobije?
Ostali programer, izgleda da ce po tvome morati da se zadovolje "prosecnim" programiranjem, jer nisu vrsni matematicari. gde li sam samo to vec cuo?
Al' ajde, smorismo ljude ovom nasom diskusijom, stvarno ti iskreno zelim uspeha u radu, sa znanjem koje posedujes, nadam se da ces uspeti. MI programeri smo neka posebna kasta izgleda, nismo sujetni i uvek smo spremni na saradnju.
To sto neki puta diskusija bude zucna, nikako ne znaci da smo neprijatelji. I dalje se ne slazemo, ali to nije razlog da se i svadjamo. Ne mogu te ubediti, ne mozes me ubediti. A mozda i ne slusamo jedno drugo dovoljno dobro?
Zdrav mi budi.