Re: Fatalne obliczenia w C

Autor: lewando_at_ibm.net
Data: Sun 25 Aug 1996 - 02:11:14 MET DST


In <wgalazka.186.840765403_at_zoolook.chem.uw.edu.pl>, wgalazka_at_zoolook.chem.uw.edu.pl (Wojciech Galazka) writes:
>In article <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:
>>From: zylla_at_lodz1.p.lodz.pl (Romuald Zylla, Tech.Univ. of #sd< Poland)
>>Subject: Re: Fatalne obliczenia w C
>
>>>> > maly przyklad - ile to (a++)-(a++) w C?
>
>> Klaniaja sie programy z M$ - wszystkie sa kompilowane w C
>
>POWYZSZE NIE JEST I NIE MOZE BYC NAZWANE PROGRAMEM W C
>

Powyzszy kod JEST programem w C. Jest syntaktycznie poprawny i kompilator
generuje kod ktory moze byc wykonywany. Jedyny problem to taki, ze ten
fragment jest semantycznie niejednoznaczny co spowodowane jest przez "side
effects". "Side effects" to nie tylko wlasciwosc jezyka C. Programy
niejednoznaczne semantycznie mozna wyprodukowac w prawie wszystkich
jezykach. Z tym, ze w niektorych (jak w C) jest to dziecinnie proste, a w innych
trzeba sie solidnie nameczyc.

Tak na marginesie, programowanie obliczen numerycznych w C to szczegolny
przypadek masochismu. Ten sam algorytm napisany w Fortranie jest ok. 2 razy
szybszy, na co wskazuja rozmaite testy. Roznica w szybkosci spowodowana
jest przez pointery - optymalizator kodu w C nie jest w stanie przeprowadzic
tak dokladnej analizy programu jak optymalizator kodu w Fortranie. Szczegoly
mozna znalezc w czasopismie "Computer in Physics" z roku 1995 (nie pamietam
numeru, nie mam kopii pod reka). Dla C++ jest jeszcze gorzej. Jak raportowano
na konferencji Object Oriented Numerics, zastosowanie C++ i obiektowych bibliotek
obslugujacych obliczenia macierzowe wydluzylo obliczenia 10 krotnie w stosunku
do podobnego programu napisanego w C.

A.L.



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 12:52:43 MET DST