Re: Argumenty: Co zamiast Windows 95?

Autor: jstopa_at_bear.com
Data: Sat 08 Mar 1997 - 21:03:38 MET


Hmmm, postanowilem dalej isc z tematem Windows 95 i dodaje swe 3 grosze
;-)

In article <33208A80.2237_at_ibm.net>,
  Andrzej Lewandowski <lewando_at_ibm.net> wrote:
>
> ptauz_at_omk.il.pw.edu.pl wrote:
> >
> > > >ptauz_at_omk.il.pw.edu.pl wrote:
> > > >> A ja w C++ mam
> > > >> funkcje operatorowe ktore pozwalaja przypisac dzialania macierzowe
> > > >> zwyklym operatorom arytmetycznym i wykonywac je po ludzku tzn.
> > > >> DOWOLNE (a nie tylko jedno) wyrazenie macierzowe w JEDNEJ LINII z
> > > >> nawiasami itp.
>

Zgadzam sie z powyzszym.

> Dobra. Niech A, B i C beda macierzami 20,000 X 20,000. Rzadkimi
> oczywiscie.

 Oczywiscie, nie oznacza to koniecznosci alokacji 20,000 x 20,000
elementow!

>
> Teraz napisz w C++
>
> X = A*(B+C)
>
> Normalny kompilator zrobi rzecz nastepujaca:
>
> 1. tmp = B+C
> 2. X = A*tmp
>
> czyli wygeneruje "na chwile" macierz tmp, tez 20,000 X 20,000

Owszem, ale nie koniecznie 400 mln elementow! (a moze np. 8 bajtow?!)

> ILE TO BEDZIE TRWALO???? Co wiecej, w praktycznych przypadkach
> nierozsadne operacje na macierzach rzadkich wcale niekoniecznie
> musza dac macier rzadka, trzeba wiec uwazac co sie robi. Kompilator
> za ciebie nie bedzie uwazal...
>

To prawda! Dlatego, iz operatory sa w gruncie "zwyklymi" funkcjami
mozna podczas biegu programu (run-time) stosowac te funkcje, ktore
maja sens (inne do macierzy rzadkich, inne do malych, inne do ...).

Zapis zostaje taki sam! No, ale nie zawsze jest to proste do zrobienia.

> I czy tak samo aprogramujesz to w Fortranie?
>
> Problem jest znany w kregu C++ numerykow jako "problem
> of temporaries". Sa specjalne techniki na radzenie sobie z
> tym problemem, ale przy nich czytelnosc programu Fortranowego
> jest jak krysztal. Ludzie pracuja nad wprowadzeniem pewnych
> rozwiazan do nowego (ktorego z kolei NOWEGO???) standardu C++,
> ale poki co nic nie ma. No i poki co, Fortran jest najlepszy
> do obliczen numerycznych. Postudiuj sobie Computers in Physics
>

Eee, wszystko co stare i znane, to zle! ;-)
W ten sposob przeciez nauka idzie do przodu! (A moze jednak nie zawsze?).

W C++ da sie zrobic wszystko. I to w sposob bardzo efektywny. Prawda
jest, ze moze to byc bardzo (oj, jak bardzo) trudne.

Ciekawe jest podejscie proponowane przez J. Bartona, L. Nackmana "Algebra
for C++ Operators" w jednym z numerow C++ Report, stosujace "templates".

A moze ktos wpadnie na pomysl i stworzy (wykorzysta?) jakis STL do
dzialan (numerycznych) na macierzach, tak jak faceci z HP?

Janusz Stopa

-------------------==== Posted via Deja News ====-----------------------
      http://www.dejanews.com/ Search, Read, Post to Usenet



To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 15:58:03 MET DST