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

Konverzija iz T*& u const T*&

[es] :: C/C++ programiranje :: Konverzija iz T*& u const T*&

Strane: < .. 1 2 3

[ Pregleda: 8634 | Odgovora: 55 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-165.bvcom.net.



+1064 Profil

icon Re: Konverzija iz T*& u const T*&02.10.2008. u 16:05 - pre 189 meseci
Roundoff error postoji na svakom harveru. Definise se kao greska nastala usled neke aritmeticke
operacije u odnosu na preciznost masine.
Preciznost masine je najmanji decimalni broj te masine koji dodat na 1.0 daje nesto drugo od 1.0 ;).
Drugo je pitanje konverzije, tj 0.1 u binarnom valjda ima beskonacno decimala dok u dekadnom ima
1 pa kompjuter ne moze to da prikaze kako treba.

E sad, naravno za predstavljane novcanih iznosa na racunu zbog toga je pozeljno da
se vrednost cuva u dekadnom brojnom sistemu ;)

No kalkulacije se i dalje vrse u float ili fixed pointu sa time da se numericka analiza
bavi uracunavanjem greske u proracune.

Evo imas recimo http://finance.bi.no/~bernt/gcc_prog/index.html finansijske algoritme u c++
gde se koristi floating point.

Pozdrav!


 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.microsoft.com.



+6 Profil

icon Re: Konverzija iz T*& u const T*&02.10.2008. u 18:22 - pre 189 meseci
Citat:
Nedeljko: OK, kad su toliko zabrinuti za stvari koje se smatraju sitnicama (da li ce nesto sto se inace moze lepo isprogramirati i bez toga, moze jos malkice optimizovati), jesu li se setili da ubace i neki tip podataka za novcane iznose?


Intel ima biblioteku koja to pokriva: http://software.intel.com/en-u...al-floating-point-math-library
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2789 Profil

icon Re: Konverzija iz T*& u const T*&02.10.2008. u 20:36 - pre 189 meseci
Citat:
Branimir Maksimovic: Roundoff error postoji na svakom harveru. Definise se kao greska nastala usled neke aritmeticke operacije u odnosu na preciznost masine.


I usled konverzije iz jednog pozicionog sistema u drugi. Matematičku podlogu greške zaokrugljivanja u računarskoj aritmetici sam detaljno opisao na citiranoj temi, tako da ne znam zašto meni ovo pišeš, ali nema veze. Na citiranj temi imam nekoliko postova. Možeš da ih pročitaš.

Ne kažem da je neki veliki problem ako su finansijski izveštaji samo približno tačni, ali možda ipak nije loše postići "knjigovodstvenu tačnost" da neko ne bi cpao što je 0.754999 zaokrugljeno na 0.76 umesto na 0.75. Pod "knjigodstvenom tačnošću" podrazumevam računanje kod kojeg je svaka pojedinačna operacija vršena sa dogovorenom tačnošću uz korektnu primenu pravila zaokrugljivanja. Primera radi, ako računamo na dve decimale iza decimalne tačke, jedini "knjigovodstveno tačan" rezultat računanja izraza 100/3+100/3+100/3 je 99.99 (rezultat 100.00 nije prihvatljiv).



Hvala, već sam napisao C++ biblioteku za to. Šta misliš, odakle mi ove silne cifre?

http://www.elitesecurity.org/p2008383
http://www.elitesecurity.org/p2012445
http://www.elitesecurity.org/p2012460

Biblioteka koju sam napisao, pored ostalog omogućava tačno izračunavanje (u dekadnom sistemu) vrednosti memorisane u tipovima float, double i long double.

No mene je zanimalo, kada se ekipa koja standardizuje C++ toliko brine za rvalue reference, brine li se bar upola toliko za neke "prizemnije" stvari, koje su u široj upotrebi.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-165.BVCOM.NET.



+1064 Profil

icon Re: Konverzija iz T*& u const T*&02.10.2008. u 21:57 - pre 189 meseci
Ona intelova biblioteka za decimalnu kalkulaciju je vec u g++ 4.3, a mislim da ce pored gomile stvari
koje ce dodati u c++09 tu biti i podrska za ovo sto te zanima.

http://software.intel.com/en-u...l-floating-point-math-library/


Pozdrav!
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2789 Profil

icon Re: Konverzija iz T*& u const T*&03.10.2008. u 08:51 - pre 189 meseci
Kad smo već debelo otišli u off topic, zna li se zašto C++ nikako da dobije standardizovanu podršku za GUI, za baze, Web itd., kao što recimo ima Java. Java programeri retko imaju potrebe da izlaze van API-ja. To su uglavnom neke specijalizovane stvari. Sa druge strane C++ programeri malo toga mogu unutar API-ja da urade. Valjda zato što se želi da C++ pude blizak kako mašini, tako i OS-u.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.dynamic.sbb.rs.



+9 Profil

icon Re: Konverzija iz T*& u const T*&03.10.2008. u 10:09 - pre 189 meseci
Citat:
Nedeljko: Kad smo već debelo otišli u off topic, zna li se zašto C++ nikako da dobije standardizovanu podršku za GUI, za baze, Web itd., kao što recimo ima Java. Java programeri retko imaju potrebe da izlaze van API-ja. To su uglavnom neke specijalizovane stvari. Sa druge strane C++ programeri malo toga mogu unutar API-ja da urade. Valjda zato što se želi da C++ pude blizak kako mašini, tako i OS-u.


Jeste želja da C++ bude blizak mašini.
Java je sasvim drugačija priča u startu u odnosu na C++. Potreba je da bude binarno portabilna, zato i ima toliko veliki API. Iz te potrebe direktno sledi da ona mora da ima i podršku za GUI, baze...itd.
Komitet za standardizaciju C++-a i dizajneri jezika se teško odlučuju da usvoje neku novinu u samom jeziku (tako je sada, iako nekom komplikovan, C++ možda najbolje dizajniran jezik), a sve ostale stvari se ostavljaju piscima biblioteka.

Imaš dosta biblioteka koje pokrivaju sve ovo što si nabrojao..ali evo, uzmimo za primer GUI:
Ako hoćeš recimo neke (L)GPL biblioteke (na Linuxu je najinteresantniji GTK i Qt, zar ne?:)
Qt - i Windows i Linux
gtkmm (GTK C++ API) - i Windows i Linux

Na Windowsu, VCL, Windows Forms (.NET, C++/CLI), itd... + imaš odlične RAD alate.
--
E sada, znam da tebe zanima zašto se recimo GUI bibliotekama ne bave ljudi koji standardizuju sam jezik. Mnogo je teže razvijati takve biblioteke koje treba da "gađaju" više operativnih sistema (bez postojanja bilo kakve VM). Lako (lakše) je razviti portabilan API za Javu kad ona već ima VM na više OS-a.
C++ teži da ostane jezik opšte namene (ozbiljne igre sigurno nećeš pisati u Javi, bilo kakve time critical aplikacije gde je usput možda neophodno i racionalnije koristiti memoriju (gde ne želiš GC), drajveri (naravno, neće ti trebati OOP, ali templejti i bolji type sistem verovatno da))
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2789 Profil

icon Re: Konverzija iz T*& u const T*&03.10.2008. u 11:09 - pre 189 meseci
Ipak mislim da je glavni razlog taj što C++ standardizuje gomila ljudi iz celog sveta, a Javu samo jedna firma. Naravno da je moguće osnovne GUI elemente standardizovati. Kad je moguće napisati prenosivi Qt, moguće je i razviti standardizovanu prenosivu podršku za GUI, web, klijent/server... Ali, onda treba ogroman komitet da se nateže i složi oko nečega.

Čak i da je toliki problem standardizovati GUI, u čemu je problem sa klasama tipa BigInt? Zar nije u matematici "standardizovano" šta je zbir, šta razlika, šta proizvod dva cela broja, i šta su količnik i ostatak pri euklidskom delenju dva cela broja? Potpuno je jasno šta treba da bude output za neki input.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.dynamic.sbb.rs.



+9 Profil

icon Re: Konverzija iz T*& u const T*&03.10.2008. u 11:36 - pre 189 meseci
Bitno je imati sve te stvari standardizovane ako želis ABI kompatibilnost i hoćeš da praviš VM.

A ovako, to zaista nije toliko bitno. Recimo, sve do skora, do izlaska TR1 dokumenta, ti nisi imao standardizovane pametne pokazivače (izuzmimo auto_ptr, koji i nije previše pametan :), a opet su skoro svi u te svrhe koristili implementacije Boost biblioteke. Isto tako i što se tiče multithreadinga. Prosto, nije toliko bitno da li je nešto zvanično deo Standarda ako je dobro, tj. ako to razvija izvrsna ekipa. Vremenom se to i "uvuče" svima pod kožu (i pokaže se da je kvalitetno i skalabilno) i koriste ga kao da je deo Standarda.

Kažem ti, ako praviš VM, onda da, treba da standardizuješ mnogo više API-ja nego inače (tj. dosta biblioteka treba zvanično da bude deo standarda ako očekuješ da VM može da vrti aplikaciju, što i jeste cilj Jave), a u slučaju C++-a imaš biblioteke koju su kvalitetne, ali ne postoji prevelika potreba da budu deo Standarda (važnije je da one poštuju Standard, kako bi kod bio portabilan)
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.microsoft.com.



+6 Profil

icon Re: Konverzija iz T*& u const T*&03.10.2008. u 20:33 - pre 189 meseci
Neke od odgovora možeš da nađeš u Stroustrupovom radu: http://www.research.att.com/~bs/hopl-almost-final.pdf

Posebno pogledaj poglavlje 5.5 - What Wasn’t Done
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p6-165.bvcom.net.



+1064 Profil

icon Re: Konverzija iz T*& u const T*&03.10.2008. u 21:52 - pre 189 meseci
Citat:

Kad smo već debelo otišli u off topic, zna li se zašto C++ nikako da dobije standardizovanu podršku za GUI, za baze, Web itd., kao što recimo ima Java. Java programeri retko imaju potrebe da izlaze van API-ja. To su uglavnom neke specijalizovane stvari. Sa druge strane C++ programeri malo toga mogu unutar API-ja da urade. Valjda zato što se želi da C++ pude blizak kako mašini, tako i OS-u.


Pa ti iniciras off topic pricu. ;)

[rant on]
Pazi jedno je standardizovati programski jezik, drugo biblioteke.
Recimo bas kad pominjes javu a vec je receno ona je zamisljena kao izolovana platforma
koja se vrti na nekoj drugoj platformi. Zamisli sad koji je problem da dodjes do native
api-ja ;) JNI ne bih pozeleo ni najgorem neprijatelju.
E sad uporedi recimo native gui aplikacije sa onim sto izgleda kad se uradi u javi.
I po performansama i po izgledu i po zauzecu memorije. Nista bolje ne mislim o .netu,
mada je on usko vezan za windows.
Kada imas standardizovan api to povlaci i sablon dizajna gde su ti ruke prakticno
vezane i sve stancujes uvek na isti nacin.
Medjutim, taj dizajn mozda i nije najbolji, mozda hoces da uradis nesto drugacije.
Eto recimo java programeri su bili ograniceni da koriste thread po konekciji sve dok se neko
nije setio da uvrapuje select i to nazove nio.
Ili probaj da napravis svoj dizajn za threading model u javi. Uradis neki jaci poduhvat
i slicno.
Sta ako izadje neka super duper funkcionalnost o kojoj mora da sanjas dok se
to ne inkorpoira u lib. Da ne govorim recimo bas o c++ strimovima.
Moj kolega je rekao da je to jedno veliko zlo ;)
A zna se koju funkcionalnost nudi linux native file suport a koju strimovi ;)
Mislim c++ pruza mogucnost da se strimovi ishakuju ali tad kod nije
portabilan ;)
Mislim, sve to izgleda elegantno, ali na kraju vidis da su ti usta upregnuta u ular
i nema mrdanja.
Cisto sumnjam da bi neki standardizovani gui framework pio vodu, naravno osim
onima koji kvalitet aplikacije podredjuju portabilnosti.
A tek portabilnost u javi. Koji je to tek mit. Java program je portabilan
samo na jedan vm i jedan kompajler. Promeni kompajler ili vm i gle nista ne radi ;)
[rant off]

Bas sam se ispucao ;)

Pozdrav!
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
195.222.97.*



+2789 Profil

icon Re: Konverzija iz T*& u const T*&04.10.2008. u 18:58 - pre 189 meseci
Citat:
Goran Arandjelovic: ...tako je sada, iako nekom komplikovan, C++ možda najbolje dizajniran jezik


Sa ovim se debelo ne bih složio. Toliko je dobro koncipiran da je nemoguće napisati kompajler, koji bi za svaki ulazni fajl stao u konačnom broju koraka sa jednim od dva izlaza:

1. Porukom o grešci ako u ulaznom fajlu nije ispravan C++ program.
2. Komapjliranim programom ako je u ulaznom fajlu ispravan C++ program.

Postojeći C++ kompajleri su samo aproksimacija ovoga.

Branimire,

Da, ja sam krivac za off topic, ne sporim. No, ako se tebi ne sviđa QDateTime klasa, niko ti ne brani da napišeš svoju i koristiš je u Qt programu. Isto važi i za Javu i sve ostalo. Java ima JNI ako zatreba, preko koga možeš da implementiraš takve stvari (izlaskom iz Jave) umesto da čekaš. Razlika je u tome da li imaš bar neko isporučeno rešenje, pa onda pravi svoje ako baš moraš, ili nikakvo isporučeno rešenje, gde si prinuđen da praviš svoje.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Konverzija iz T*& u const T*&05.10.2008. u 02:26 - pre 189 meseci
Citat:
Branimir Maksimovic: Pa ti iniciras off topic pricu. ;)

[rant on]
Pazi jedno je standardizovati programski jezik, drugo biblioteke.
Recimo bas kad pominjes javu a vec je receno ona je zamisljena kao izolovana platforma
koja se vrti na nekoj drugoj platformi. Zamisli sad koji je problem da dodjes do native
api-ja ;) JNI ne bih pozeleo ni najgorem neprijatelju.


Postoji nešto gore od samog JNI-a. A to je pisanje maven skripte za kompajliranje JNI-a na windows-u i linux-u...

Svojevremeno sam radio na projektu koji je zahtevao da se napiše par JNI-a za pristup nekim sistemskim servisima dok bi GUI bio Java+Swing ili samo Java i sve je to trebalo ubudžiti u maven. Glavni arhitekta u toj firmi se kleo u maven kao nešto najbolje izmišljeno posle točka i pored toga što "olakšava" kompajliranje java projekata navodno je lečio i sidu...

U teoriji maven zvuči super ali u stvarnosti to je nedovršena alatka sa očajnom dokumentacijom i pluginovima prepunim bagova.

Problemi se posebno javljaju kada se poželi uraditi nešto van standardno predviđenih akcija.... kako sam samo zamrzeo celo to zamešateljstvo....


Tko leti vrijedi
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2789 Profil

icon Re: Konverzija iz T*& u const T*&06.10.2008. u 09:59 - pre 189 meseci
Hajmo malo u 3ayebanciju, kad smo već debelo off topic.

1. Nemoguće je napisati C++ kompajler (matematički dokazano).
2. Na osnovu 1. ne postoji ni jedan C++ kompajler.

Od čega žive C++ programeri?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Branimir Maksimovic

Član broj: 64947
Poruke: 5534
c-bg-d-p1-10.BVCOM.NET.



+1064 Profil

icon Re: Konverzija iz T*& u const T*&06.10.2008. u 21:10 - pre 189 meseci
Hehe, pazi prvi c++98 full compliant compiler je uradjen
2002 ;)

1. tesko je uraditi potpun C++ compiler

2. na osnovu 1. postoje nepotpuni c++ kompajleri ;)

Pozzzzzzzzzzz!

 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-1.sezampro.yu.



+395 Profil

icon Re: Konverzija iz T*& u const T*&07.10.2008. u 23:48 - pre 189 meseci
Citat:
Goran Arandjelovic
Imaš dosta biblioteka koje pokrivaju sve ovo što si nabrojao..ali evo, uzmimo za primer GUI:
Ako hoćeš recimo neke (L)GPL biblioteke (na Linuxu je najinteresantniji GTK i Qt, zar ne?:)
Qt - i Windows i Linux
gtkmm (GTK C++ API) - i Windows i Linux

I jos :
http://en.wikipedia.org/wiki/Cairo_(software)
http://www.cairographics.org/
GTK+ od svoje 2.8 koristi cairo engine za svoje widgete
Pogledaj listu backend OS-ova, cak su je i AmigaOS developeri koristili za cuveni workbench :)



Viva lollapalooza
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.sbb.rs.



+2789 Profil

icon Re: Konverzija iz T*& u const T*&08.10.2008. u 10:37 - pre 189 meseci
Sve je to lepo. I KDE se oslanja na Qt,, pa kada je Trolltech odlucio da promeni arhitekturu u verziji 4, onda se KDE tim cesao i tamo gde ga ne svrbi, ne bi li izbacio novi KDE zasnovan na Qt-u 4.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Konverzija iz T*& u const T*&

Strane: < .. 1 2 3

[ Pregleda: 8634 | Odgovora: 55 ] > FB > Twit

Postavi temu Odgovori

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