Autor: Pawel Baranowski (baranows_at_uci.agh.edu.pl)
Data: Fri 23 Aug 1996 - 14:43:45 MET DST
In <1.5.4.16.19960823104245.1b978e70_at_lodz1.p.lodz.pl>, zylla_at_lodz1.p.lodz.pl (Romuald Zylla, Tech.Univ. of #sd< Poland) writes:
>>> > maly przyklad - ile to (a++)-(a++) w C?
>>
>> ^^^^^^^^^^^
>> Tak nie wolno pisac !!!!!!!! wynik moze byc rozny na
>>kazdym kompilatorze. elementarne zasady programowania w C sie
>>klaniaja.
>
> A mowilo sie, ze jezyki programowania maja zwiazek z matematyka:
> sa scisle; teraz widac, ze C jest zwiazany raczej z
> nowa dziedzina matematyki - teoria chaosu.
>
Dlaczego akurat C ? Norma Fortraniu 77 tez nie precyzuje wielu rzeczy
np okresla, ze zmienne podwojnej precyzji (DOUBLE PRECISION) maja
wieksza precyzje niz rzeczywiste (REAL) - nie podaje w ogole ile maja bajtow.
Implementacja normy zalezy juz od firmy piszacej kompilator, ktrora jeszcze
dodaje czesto rozne nieformalne, ale znane rozszerzenia ( np DO .. END DO, czy
INCLUDE - jesli chodzi np. o Fortran 77) + wlasne pomysly, co pozniej prowadzi
do nieprzenosnosci zle (tzn niezgodnie z norma) pisanego kodu.
Jesli chodzi o standaryzyzacje C, to gdzies przed rokiem byl cykl artykulow
(chyba PC Q (?) ) i jak to z tego niewiele wychodzi.
>> Jak ktos pisze w ten sposob programy, niech sie nie dziwi ze nie
>>wszedzie dzialaja tak samo. A jak dzialaja, to raczej przez przypadek.
>
> Klaniaja sie programy z M$ - wszystkie sa kompilowane w C
Raczej kompilatorami M$, ktorych jakosc jest nienajlepsza - dwie ich wpadki:
- MS C 6.0 - maly programik w ANSII C dawal zle wyniki w obliczeniach, udalo mi
sie wysledzic linie gdzie sie to dzialo -proste dzielenie dwoch liczb typu
double generowalo nieprawidlowy wynik. Zmiany opcji kompilatora
nic nie dawaly ( sprawdzalem tylko optymalizacje - nie zmienialem
opcji dla linkera - biblioteki !!! - uzywalem emulacji koprocesora i malego
modelu pamieci ), po czym skompilowalem to Turbo C 2.0 i bylo OK.
- MS Fortran 5.1 - program w FORTRANIE z opcja doloczajaca do kodu
symboliczna informacje dla CodeView ( opcja /Zi ) powodowal
blad w pamieci i zawieszenie komputera, a bez niej chodzil
prawidlowo.
Od tamtej pory obchodze wszystkie ich produkty programistyczne z daleka.
Podsumowujac normy normami, a to co robia z nimi firmy celowo lub nie to co
innego.
Apropos- moze mi ktos wyjasnic co to jest format liczb "Microsoft binary format"
liczb zmiennoprzecinkowych ( jak wyglada ). Do konwersji na format IEEE sluzyly
funkcje dieeetpmsbin,dmsbintoiee,fieeetomsbin,fmsbintoieee.
Pawel Baranowski
-----------------------------------------------------------------------------
E-mail:owski_at_slc1.geol.agh.edu.pl
baranows_at_uci.agh.edu.pl
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 12:52:37 MET DST