eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingjak napisać szybki programRe: jak napisać szybki program
  • 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/

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: