Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Lokalna kopija!

[es] :: C/C++ programiranje :: Lokalna kopija!

Strane: 1 2 3

[ Pregleda: 7858 | Odgovora: 40 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Lokalna kopija!23.08.2003. u 12:24 - pre 251 meseci
Citat:
Dragi Tata:
Code:

void DoDrawRect(const Rectangle& theRect);


Beneficija: mala dobit u performansama (nema kopiranja objekta).


Naravno, ko god je malo ozbiljnije kodirao u C++-u ce tu funkciju tako napisati... Tacnije, ko zeli da programira na malo visem nivou. Nista ne bih imao protiv da se prosledi pokazivac na objekat!
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Lokalna kopija!23.08.2003. u 13:41 - pre 251 meseci
Citat:
Dragi Tata:
Zašto mislite da funkcija DoDrawRect treba da bude članica klase?


Sad, pošto su drugi odradili advocacy :) mogu da nastavim da se ježim na knjigu iz edicije * za 21 dan (* ovde čitati kao bilo šta, pa i c++ :) ). DoDrawRect treba da bude članica _neke_ klase koja se bavi crtanjem, dakle ne nužno klase Rectangle, recimo pod firmom da se onda Rectangle može tumačiti na različite načine: kao skup tačaka koje treba spojiti pravim linijama ili kako skup tačaka koje treba koristiti kao vođice za neki spline ili šta već.

Da odgovorim na tvoje pitanje drugim pitanjem: zašto je u datom kodu DoDrawRect van klase, a recimo DrawShape unutar klase? Zašto je odabrao prenošenje po vrednosti sa kopiranjem objekta kada to nije dobar način da se objekat prenese? Zašto je postavio nepostojeću default granu u onaj switch? Da li je napomenuo koji su mogući problemi pri tome?

Čini mi se da je autor proizvoljno rascepkao kod kako bi pokazao nekoliko koncepata; pritom je međutim ilustrovao i par čudnih odluka u vezi sa dizajnom koda. Posmatram i u svetlu onog prethodnog jako čudnog koda sa pamćenjem koordinata, gde ne samo što duplira podatke već i dizajnom klase dozvoljava korisniku da duple podatke izvede iz sinhronizma.

Ako se sećate, pamćene su i koordinate gornje leve i donje desne tačke, kao i četiri vrednosti za krajnje koordinate -- što je prosto suvišno u tom primeru -- a još je dozvolio da se svaka od tih 6 vrednosti posebno zadaje tako da ja mogu, namerno ili nenamerno, da postavim vrednosti koje će mi dati nepostojeći pravougaonik -- a to dobar dizajn nikada neće dozvoliti. Sad, to sa dupliranjem podataka može da bude korisno u slučajevima kada želimo da amortizujemo troškove nekog računanja, recimo kada pri push-u uvećamo brojač elemenata na steku iako se broj elemenata uvek može sračunati prolaskom kroz kontejner koji ga implementira, ali dozvoliti da ispravnom upotrebom objekat može da dođe u neispravno stanje, to već nije kako treba.

Zaključak je da primere iz knjige verovatno treba uzimati sa zrnom soli -- ili da treba promeniti knjigu.

f
 
Odgovor na temu

brcha
Filip Brčić
Beograd, Serbia

Član broj: 440
Poruke: 436

Jabber: brcha@kdetalk.net
ICQ: 40994923
Sajt: brcha.com


+2 Profil

icon Re: Lokalna kopija!23.08.2003. u 14:29 - pre 251 meseci
Dobro sad, pass by value je tu verovatno zato sto su tek u sledecem poglavlju pokazivaci. Pretpostavljam da ce posle da se vrati na primer i da kaze da je bolje sa pokazivacima i da ce na kraju da predje na reference. Odn. nadam se da je tako.

A ova default grana je svakako glupost koju je autor ocigledno prevideo. Mozda je pisao knjigu 21 dan ;)

Citat:

Posmatram i u svetlu onog prethodnog jako čudnog koda sa pamćenjem koordinata, gde ne samo što duplira podatke već i dizajnom klase dozvoljava korisniku da duple podatke izvede iz sinhronizma.


Da, secam se tog primera. I to je bilo iz C++ za 21 dan?

F
... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
 
Odgovor na temu

Pretender

Član broj: 12407
Poruke: 100
212.124.182.*



Profil

icon Re: Lokalna kopija!23.08.2003. u 15:49 - pre 251 meseci
Sve sto je receno (meni; a i dosta ostalog) je understood.

Hvala brchi i filmilu (ali i ostalim ucesnicima u diskusiji, jer su se mogli cuti razliciti, zanimljivi stavovi).

Sto se tice kvaliteta knjige; i sam sam malo ustuknuo pred njenim naslovom prilikom kupovine (delim filmilovo misljenje o takvim naslovima), ali sam je na kraju (paradoxalno) verovatno zbog njega i kupio, ocekujuci da cu tako u razmerno kratkom roku ovladati nekim bazicnim konceptima C++ i OO, obzirom da ne nameravam da se na tome zaustavim.

Kakva je da je, sad sa pola puta nema nazad. Uostalom to je jedna od samo 2 (opseznije) prevedene knjige koje su na raspolaganju. (Mislim da je na pocetnickom nivou (gde je za razumevanje osnovnih koncepata vazan svaki zarez), bolje da knjiga bude prevedena, osim ako se pocetnik ne sluzi engleskim jezikom kao maternjim.)

However, nadam se da ce posluziti za upoznavanje sa C++ i OO, a za posle cemo da vidimo.
Postoji pri tom (ocigledno) i opasnost pogresnog usmerenja, ali tu se eto uzdam u Vase sugestije, koje su mi i do sada bile od velike pomoci.


Pozdrav
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-2.dialup.nethere.net



+6 Profil

icon Re: Lokalna kopija!23.08.2003. u 18:50 - pre 251 meseci
Elem, nisam znao da su Scott Meyers i Herb Sutter nikakvi autoriteti za programera kao što je Leka. Moraćemo da predložimo Bjarnetu da ih izbaci iz komisije za standardizaciju C++a i da umesto njih ubaci Leku :)

Uglavnom, poenta je sledeća: za razliku od nekih drugih programskih jezika, u C++u nije obavezno, pa čak ni poželjno trpati svu funkcionalnost u klase. Postoje neka "kruta pravila":

- virtuelne funkcije su uvek članice
- unarni operatori su uvek članovi
- binarni operatori ne treba nikad da budu članovi (mada sintaksa to omogućava)
- funkcije kojima je neophodan pristup podacima članicama (očigledno) moraju da budu članice.

Van toga, sve je stvar procene (ne "ukusa"). Šta vodi kodu koji je lakši za održavanje, proširivanje, razumevanje?

Recimo, ako se javi potreba da uvedemo neku operaciju nad objektima klasa A i B. Da li ćemo tu operaciju staviti u klasu A, u klasu B, da li ćemo napraviti neku treću klasu (medijator) C ili ćemo jednostavno da napišemo funkciju ne-članicu? Zavisi od procene i konkretnih okolnosti. Ali ne od ukusa. Pitanje ukusa je npr, gde stavljate vitičaste zagrade i da li koristite tabove ili spejsove za identaciju. Odluka da li se neka operacija implementira kao članica ili ne može imati posledice na kvalitet dizajna, a samim tim i na troškove proširivanja/menjanja/održavanja koda, a to više nije stvar "ukusa".
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-2.dialup.nethere.net



+6 Profil

icon Re: Lokalna kopija!23.08.2003. u 18:58 - pre 251 meseci
Citat:
brcha:
Apsolutno nema nikakve razlike da li se koristi referenca ili se poziva funkcija clanica. ...


Da ne bismo skretali priču na optimizaciju, samo da napomenem da sam performanse pomenuo u kontekstu slučajeva kad je funkcija ne-članica (prosleđivanje po vrednosti vs po referenci), a da nisam uopšte razmatrao slučaj kad je funkcija članica.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-2.dialup.nethere.net



+6 Profil

icon Re: Lokalna kopija!23.08.2003. u 19:04 - pre 251 meseci
Citat:
filmil:

Da odgovorim na tvoje pitanje drugim pitanjem: zašto je u datom kodu DoDrawRect van klase, a recimo DrawShape unutar klase? Zašto je odabrao prenošenje po vrednosti sa kopiranjem objekta kada to nije dobar način da se objekat prenese? Zašto je postavio nepostojeću default granu u onaj switch? Da li je napomenuo koji su mogući problemi pri tome?



Ako želiš da kažeš da je primer fundamentalno loše odrađen, tu ćemo da se složimo. Rasprava je samo oko toga da li bi guranje te funkcije u (bilo koju) klasu unapredilo dizajn.
 
Odgovor na temu

brcha
Filip Brčić
Beograd, Serbia

Član broj: 440
Poruke: 436

Jabber: brcha@kdetalk.net
ICQ: 40994923
Sajt: brcha.com


+2 Profil

icon Re: Lokalna kopija!23.08.2003. u 19:09 - pre 251 meseci
Citat:
Dragi Tata:
- virtuelne funkcije su uvek članice
- unarni operatori su uvek članovi
- binarni operatori ne treba nikad da budu članovi (mada sintaksa to omogućava)
- funkcije kojima je neophodan pristup podacima članicama (očigledno) moraju da budu članice.

Van toga, sve je stvar procene (ne "ukusa"). Šta vodi kodu koji je lakši za održavanje, proširivanje, razumevanje?


Ok, slazem se, "ukus" je malo glupa rec. Ja sam pod "ukusom" i "osecajem" podrazumevao procenu.

Sto se tice binarnih operatora, oni se mnogo logicnije i lepse pisu kao friend funkcije nego kao clanice. Usput, slazem se sa pravilima.

... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
 
Odgovor na temu

brcha
Filip Brčić
Beograd, Serbia

Član broj: 440
Poruke: 436

Jabber: brcha@kdetalk.net
ICQ: 40994923
Sajt: brcha.com


+2 Profil

icon Re: Lokalna kopija!23.08.2003. u 19:10 - pre 251 meseci
Citat:
Dragi Tata:
Citat:
brcha:
Apsolutno nema nikakve razlike da li se koristi referenca ili se poziva funkcija clanica. ...


Da ne bismo skretali priču na optimizaciju, samo da napomenem da sam performanse pomenuo u kontekstu slučajeva kad je funkcija ne-članica (prosleđivanje po vrednosti vs po referenci), a da nisam uopšte razmatrao slučaj kad je funkcija članica.


Ok, jasno je da pass by value ovde ne valja. A i ona moja "optimizacija" nema bas mnogo smisla jer par clktckova vise ili manje ne cini prolece

... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Lokalna kopija!23.08.2003. u 19:18 - pre 251 meseci
Citat:
brcha:
Ok, slazem se, "ukus" je malo glupa rec. Ja sam pod "ukusom" i "osecajem" podrazumevao procenu.


Interesantno je da upravo čika Bjarne govori o dizajnu programa koristeći iste termine: practice, patience, taste. Ne bih baš da se zaletim u parafraziranju, ali ono čega se sećam (i ako ima interesovanja pokušaću da pronađem i iscitiram) da je o dizajnu programa govorio u krajnje subjektivnim kategorijama poput gore pomenutih.

f
 
Odgovor na temu

brcha
Filip Brčić
Beograd, Serbia

Član broj: 440
Poruke: 436

Jabber: brcha@kdetalk.net
ICQ: 40994923
Sajt: brcha.com


+2 Profil

icon Re: Lokalna kopija!23.08.2003. u 19:29 - pre 251 meseci
Citat:
filmil:
Interesantno je da upravo čika Bjarne govori o dizajnu programa koristeći iste termine: practice, patience, taste. Ne bih baš da se zaletim u parafraziranju, ali ono čega se sećam (i ako ima interesovanja pokušaću da pronađem i iscitiram) da je o dizajnu programa govorio u krajnje subjektivnim kategorijama poput gore pomenutih.


Da, ali rec "ukus" moze pogresno da se shvati. A ta procena ne moze da bude nesubjektivna jer ne moze da postoji tacan algoritam procenjivanja. Odnosno, procena je stvar znanja, iskustva, osecaja i ukusa.

Ajde, ako nadjes link, posalji ga.
... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Lokalna kopija!23.08.2003. u 19:51 - pre 251 meseci
Citat:
brcha:
Ajde, ako nadjes link, posalji ga.


U pitanju je odlomak knjige C++ programming language, tako da ću morati da sačekam da se otvori biblioteka... :)

f
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-3.dialup.nethere.net



+6 Profil

icon Re: Lokalna kopija!23.08.2003. u 19:55 - pre 251 meseci
Hajde da odstupim još mao pa da dopustim da u nekim slučajevima izbor dizajna može i da bude stvar ukusa. Međutim, ako zbog "ukusa" dobijemo klase kao što je gorepomenuta CWnd, onda smo napravili grešku koja može da košta $$$$, a onda možemo da popijemo otkaz i onda se priča o ukusu završava.

Uglavnom, nadam se da više niko ne smatra da su funkcije ne-članice apriori greška u dizajnu.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.telia.com

Sajt: dejan.lekic.org


+2 Profil

icon Re: Lokalna kopija!24.08.2003. u 15:59 - pre 251 meseci
Citat:
Dragi Tata:
Elem, nisam znao da su Scott Meyers i Herb Sutter nikakvi autoriteti za programera kao što je Leka. Moraćemo da predložimo Bjarnetu da ih izbaci iz komisije za standardizaciju C++a i da umesto njih ubaci Leku :)


Nemanja, shvati da se prosto nasa misljenja ne poklapaju i zivi sa tim. :) Smatram da je "dobra programerska" praksa individualna stvar, za razliku od tebe i tebi slicnih koji mislite da ce Vas neke "face" nauciti dobroj programerskoj praksi.

Zasto mislim da je programerska praksa individualna stvar? - Zato jer programer u svom zivotu moze da radi na razlicitim tipovima projekata. Programer koji celog zivota radi biznis aplikacije ce raditi prema dobro definisanim sablonima. Programer koji mora da radi na malo visem nivou, a licno je programer nizeg nivoa ce u nekim svojim projektima koji su po pravilu nizeg nivoa da koristi raznorazne precice, cake kojih se C++ programeri klone, a samim tim ih kasnije cak i ne "kapiraju". Nije ni cudo da nekad naidjem na C++ programera koji se totalno izgubi u C++ kodu koji je napisao C programer. I ko ce meni da da za pravo kada kazem "e to ne treba da se radi tako, vec to uradi ovako?" ? Ja prosto smatram da cak ni Bjarne nema, niti sme da ima, tu moc. - Dok kod radi posao za koji je napisan, sve je okej.

Znam, znam, pocece se prica o tome "a koliko vremena treba nekom drugom programeru koji slucajno treba da nastavi tu gde je prethodni stao?"... Za razliku od drugih kojima ovo mozda ne pada na pamet, ja bih rekao prosto da taj drugi programer nije dostigao nivo prvog programera - jer razmislja sablonski. Cak stavise, otisao bih u krajnost i rekao da su takvi programeri malo "brainwashed"...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-4.dialup.nethere.net



+6 Profil

icon Re: Lokalna kopija!24.08.2003. u 17:56 - pre 251 meseci
Lepo, svi imamo svoje mišljenje.

Setih se jedne izreke koja u prevodu glasi "Razlika između Boga i C++ programera je ta što Bog zna da nije C++ programer" :)
 
Odgovor na temu

sspasic
Sasa Spasic

Član broj: 3261
Poruke: 175
*.medianis.net

Jabber: sspasic@elitesecurity.org
ICQ: 35454521


Profil

icon Re: Lokalna kopija!24.08.2003. u 21:13 - pre 251 meseci
Nisam mogao da odolim

Citat:

This joke was told at a Yourdon seminar by Julian L. Morgan.

Question: What is the difference between an object methodologist and a terrorist?
Answer: You can negotiate with the terrorist.

 
Odgovor na temu

brcha
Filip Brčić
Beograd, Serbia

Član broj: 440
Poruke: 436

Jabber: brcha@kdetalk.net
ICQ: 40994923
Sajt: brcha.com


+2 Profil

icon Re: Lokalna kopija!25.08.2003. u 04:22 - pre 251 meseci
Citat:
leka:
Znam, znam, pocece se prica o tome "a koliko vremena treba nekom drugom programeru koji slucajno treba da nastavi tu gde je prethodni stao?"... Za razliku od drugih kojima ovo mozda ne pada na pamet, ja bih rekao prosto da taj drugi programer nije dostigao nivo prvog programera - jer razmislja sablonski. Cak stavise, otisao bih u krajnost i rekao da su takvi programeri malo "brainwashed"...


Leko, ne mogu da se složim sa tobom. Da bih ja koristio Qt, ne moram da radim u Trolltech-u, već samo moram da znam kako da ga iskoristim za svoje potrebe. Znači, uopšte ne zalazim u to koliko ja (ili bilo ko drugi) znam o C-u i C++-u ili o bilo kom jeziku, već pričam samo o tom nastavljanju programiranja. Jedna od, po meni, najznačajnijih karakteristika OO programiranja je to što mogu i moram objekat da gledam kao BlackBox. Odn. uopšte me ne zanima šta se dešava u objektu, dokle god on putem svojih metoda izvršava ono što mu je rečeno. To omogućava da bez ikakvog znanja o strukturi neke biblioteke mogu da je iskoristim. Ne kažem da poznavanje unutrašnje strukture objekata škodi, ali ne sme da bude presudno u korišćenju objekta. Ovo sve se ne odnosi samo na OO programiranje, nego na mnogo još štošta iz realnog sveta!

Pozdrav
F
... and the aliens sent an android down to earth, to slow down mankind's development
... and they named it Bill Gates.
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.et.tudelft.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Lokalna kopija!27.08.2003. u 11:47 - pre 251 meseci

Citat:

[ ... ] there can be no cookbook method for creating good software. Detailed "how-to" descriptions can exist for specific well-understood kinds of applications but not for more general application areas. There is no substitute for intelligence, experience and taste in programming.


Bjarne Stroustrup, "The C++ Programming language", second edition, pp 362, section 11.1, Addison-Wesley Longman, ISBN 0-201-53992-6
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.microsoft.com



+18 Profil

icon Re: Lokalna kopija!28.08.2003. u 18:33 - pre 251 meseci
I na kraju se vracamo na ono sto pricam od pocetka, a to je da je dizajn programa in the real world jedna neegzaktna i subjektivna stvar. Neke opste principe je naravno moguce formalizovati, ali na kraju sve je to stvar ukusa, koji se izmedju ostalog formira i iskustvom.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: Lokalna kopija!28.08.2003. u 19:54 - pre 251 meseci
Opet se ne slažem. Kvalitet dizajna se da lako "izmeriti" količinom vremena (novca) potrošenim za održavanje (proširivanje) sistema. Prošle godine sam imao prilike da krpim neki RPC sistem koji je naš tadašnji "guru" (otpušten u međuvremenu) sklepao - otišlo je skoro pola godine dok ga nisam očistio od bagova. Tip je koristio gomilu nekih globalnih promenljivih u višenitnom okruženju - recept za propast. Da je malo manje sledio svoj ukus, a više čitao o dizajnu višenitnih aplikacija, nikad ne bismo došli u tu situaciju.

Programiranje (u širem smislu te reči) nije umetnost, već inženjerska disciplina kao i svaka druga.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Lokalna kopija!

Strane: 1 2 3

[ Pregleda: 7858 | Odgovora: 40 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.