-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Mariusz Marszałkowski" <b...@W...gazeta.pl>
Newsgroups: pl.comp.programming
Subject: Re: jak napisać szybki program
Date: Thu, 21 May 2009 20:20:58 +0000 (UTC)
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 82
Message-ID: <gv4d3a$r0n$1@inews.gazeta.pl>
References: <9...@r...googlegroups.com>
<guooce$u1t$1@news.onet.pl> <gup1i8$rlj$1@mx1.internetia.pl>
<gurkis$5d7$1@news.onet.pl> <gurld3$7gl$1@news.onet.pl>
<gv2hk9$77r$1@inews.gazeta.pl>
<4...@g...googlegroups.com>
<gv3u8g$f6g$1@inews.gazeta.pl>
<3...@s...googlegroups.com>
NNTP-Posting-Host: localhost
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1242937258 27671 172.20.26.239 (21 May 2009 20:20:58 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Thu, 21 May 2009 20:20:58 +0000 (UTC)
X-User: brodacz100
X-Forwarded-For: 89.229.16.190
X-Remote-IP: localhost
Xref: news-archive.icm.edu.pl pl.comp.programming:182098
[ ukryj nagłówki ]Marcin 'Malcom' Malich <m...@g...com> napisał(a):
> On 21 Maj, 18:07, "Mariusz Marsza=B3kowski"
> <b...@W...gazeta.pl> wrote:
>
> > No oczywi=B6cie mo=BFna napisa=E6 program w C++ bez u=BFycia klas gdy=BF =
> sk=B3adnia C++
> > z ma=B3ymi wyj=B1tkami jest nadzbiorem sk=B3adni C. Klas te=BF lepiej nie=
> u=BFywa=E6,
> > bo jak optymalizowa=E6 zapis je=B6li dane s=B1 podzielone na klasy i nie =
> ma
> > wsz=EAdzie do nich dost=EApu? Optymalizacja zapisu to =BFonglerka struktu=
> r=B1
> > danych. Po zmianie struktury danych zmienia si=EA cz=EA=B6ci procedur.
>
> A jak zoptymalizowac zapis jesli dane podzielone sa na struktury w C?
Po prostu jest mniej pracy w C. Zmienne typu strukturalnego w C (zgodnie z
ideą C) deklaruje się globalnie, wszystkie funkcje deklaruje się
globalnie, a dostęp do wszystkich danych i składowych jest publiczny.
W C++ projektując strukturę danych trzeba dodatkowo zastanowić się:
1) jakie metody będą miały dostęp do jakich danych
2) jakie składowe będą w sekcjach prywatnych, jakie w chronionych
3) jakiej hierarchii dziedziczenia użyć
Po zmianie struktury danych w C++ trzeba te kroki przejść na nowo. Te
kroki ułatwiają ponowne wykorzystanie kodu, zmniejszają podatność na
błędy, ale nie ułatwiają optymalizacji zapisu.
Np. pisząc program numeryczny w C, zadeklarujesz globalnie tablicę liczb.
Napiszesz później trzy procedury:
1) pierwsza wczyta dane z pliku do tej tablicy liczb
2) druga wykona zadanie numeryczne
3) trzecia zapisze wyniki do pliku.
Programując to samo w C++ napiszesz:
1) klasę do wczytywania danych
2) klasę do obliczeń
3) klasę do wyprowadzania danych.
Nagle zobaczysz że już podczas wczytywania danych możesz przeprowadzić
wstępne obliczenia - co przyspieszy program. Dla struktury klas w C++ nie
będzie to naturalne, ponieważ struktura danych do obliczeń jest
odseparowana w klasie obliczeń. Będziesz musiał dopisać specjalne metody
do komunikacji pomiędzy klasą wczytywania danych a klasą obliczeniową.
Być może narzut na dodatkowe metody przewyższy zysk z wstępnych obliczeń
podczas wczytywania - ale koszt metod składowych to już inna kwestia.
Natomiast w C masz w całym programie dostęp do wszystkich danych. Od razu
podczas wczytywania zrobisz wstępne obliczenia i zmodyfikujesz globalne
dane. Po prostu w C trzeba zmodyfikować mniej kodu.
Jeśli w końcu dokonasz kilku takich spostrzeżeń i kilku takich modyfikacji
kodu, obojętnie czy pisałeś w C czy w C++, to dojdziesz do wniosku że
pierwotny podział kodu i danych na logiczne bloki nie był najlepszy. Będzie
trzeba przepisać wszystko od nowa. I znów zyskasz pisząc w C, bo omijasz
podział na klasy i nie zastanawiasz się jaką składową umieścić w jakiej
klasie i w jakiej sekcji, żeby po kolejnym spostrzeżeniu cały ten
skrupulatny podział trzeba było zburzyć...
>
> > Obudowywanie danych w klasy (cho=E6by jako sk=B3adowe statyczne, kt=F3re =
> nie daj=B1
> > narzutu) podwaja nak=B3ad pracy przy takim eksperymentowaniu. Wi=EAc pows=
> taje
> > programowanie w C przy u=BFyciu kompilatora C++ :)
>
> Narzutu czego?
>
> Nie potrafie zrozumiec do czego zmierzasz :>
Narzut na dodatkowe zaprojektowanie klas. Dobre zaprojektowanie jest
czasochłonne. Klasy projektuje się po to aby kod ponownie wykorzystać
bez ponownego wnikania w ich szczegóły implementacyjne. Zaprojektowane
tak klasy nie są w żaden sposób podatne na późniejsze "sprytne modyfikacje"
w celu przyspieszenia.
Pzdr.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Następne wpisy z tego wątku
- 21.05.09 21:04 Jacek Czerwinski
- 21.05.09 21:55 Mariusz Marszałkowski
- 23.05.09 21:59 Maciej Sobczak
- 24.05.09 00:06 A.L.
- 28.05.09 19:32 Mariusz Marszałkowski
- 30.05.09 05:15 Mariusz Marszałkowski
- 07.06.09 05:20 Remek
- 07.06.09 14:40 A.L.
- 07.06.09 17:35 Mirosław Habarta
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-21 Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 2024-12-21 Ideologia Geniuszy-Mocarzy dostępna na nowej s. WWW energokod.pl
- 2024-12-21 ciekawy układ magnetofonu
- 2024-12-21 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2024-12-21 Warszawa => Java Developer <=
- 2024-12-21 Zalesie Borowe => Medical Equipment Service Engineer <=
- 2024-12-21 Żerniki => Specjalista ds. Employer Brandingu <=
- 2024-12-21 jak tacy debile
- 2024-12-20 Precedensy politycznie motywowanego nie wydawania w UE
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Obrońcy
- 2024-12-20 Gdańsk => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-20 czyste powietrze
- 2024-12-20 Katowice => Analyst in the Trade Development department (experience wi