C nebo C++ v serverove aplikaci na Linuxu - delsi

Ing. Miloslav Ponkrác miloslav.ponkrac na infos.cz
Úterý Červenec 2 10:13:39 CEST 2002


>stojim v soucasnosti pred zasadnim rozhodnutim ohledne jazyku pro
implemetaci
>aplikacniho serveru (berte prosim obecneji jako aplikace obsluhujici
desitky
>az stovky spojeni ). Da se rici, ze v soucasne dobe davam dohromady
argumenty
>pro i proti C a C++ a rad bych ziskal sirsi podklady pro rozhodovani:


V zásadě bych se rozhodl pro C++ už z důvodu, že prakticky obsahuje skoro
celé C. Dle mého se týmový projekt napíše podstatně lépe v C++.

Pokud bych mohl poradit, spíše bych se zabýval tím, jakou část C++ bych
použil. Protože různé kompilátory przní různé části standardu C++. Aspoň
tomu je tak nyní. To znamená budete, a nebo nebudete používat: výjimky,
šablony, různé divočejší konstrukce.

>Pro C++ hovori predevsim robustnost (samozrejme je podminena dobrym
>objektovym navrhem), vyjimky a typova kontrola. Jako nejpodstatnejsi zapor
>vidim dobu potrebnou pro komplexni objektovy navrh a urcitou ztratu
rychlosti
>oproti kodu v C. Pro C hovori rychlost, nicmene jako nevyhodu zde vidim
>potencialni nachylnost k mensi stabilite - zde prosim me nekamenujte, to je
>pouze zkusenost - proste ne vzdy vsechny chyby odchytite :-( Pak mi
vychazi,
>ze bych mohl zkusit hybrid typu C kod prolozeny vyjimka kompilovany g++,
ale
>.... no to taky neni uplne ono.

Trochu to ne mě působí marketinkovým způsobem. Já píšu léta v C++. A řeknu
Vám toto, záleží více na koncepci programu a návrhu více, než na jazyce.

Když se kouknete třeba do glibc, tak tam jsou funkce typu fopen, fclose,
fseek, atd.. psány "objektově" v čistém C.

Není IMHO rozdíl v ryzhlosti mezi C a C++, rozdíl v rychlosti může být
způsobem jiným návrhem.

Co se týká odchytu všech chyb, pak je to pouze za podmínky, že všechny chyby
převedete ve výjimky, což také nemusí být tak jednoznačné. Ono poctivé
odchycení chyb i bez výjimek má také něco do sebe.

Znovu musím zopakovat, já osobně bych dnes už v čistém C nepsal, nemusím li.
Raději bych zvolil C++, protože obsahuje téměř celé C, a i když nepoužijete
třídy, stále máte přetěžování funkcí, výjimky, atd.. Kód v C++ je daleko
přehlednější, pokud se o to snažíte, méně problémů s konflikty názvů, atd..

Na druhé straně je potřeba říci, že asi díky gcc budete muset být při zemi,
tj. nepoužívat všechny možnosti C++, protože je otázka, zda to všechno gcc
umí. Ale také je otázka, zda třeba nepoužít i jiný kompilátor, ale to záleží
na účelu.

>Budu vdecny za veskere postehy a namety, ale uz ted Vas zadam,
nerozjizdejme
>zde diskusi proc je C++ lepsi nez C nebo obracene.


Nejdůležitější je co chcete napsat, a způsob návrhu pak už je to jedno. Já
bych preferoval C++. Protože je dle mého nadmnožinou C a přináší
nezanedbatelné výhody oproti C.



S pozdravem

Miloslav Ponkrác



Další informace o konferenci Linux