Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
10Wprowadzenie
23
.Wolnośćdlaprogramistówibogactwofunkcjonalności-zarównoniskopoziomowe,jak
iwysoceabstrakcyjnekonstrukcjemogąbyćwykorzystywanewwielukontekstach.
Takjakwprzypadkuszwajcarskiegoscyzoryka,istniejeniebezpieczeństwoichnie-
poprawnegoużycia,alewolnośćibogactwofunkcjonalnościprowadząnanajwyższe
poziomyproduktywnościwwielukontekstachiszerokichzastosowaniach.Cojednak
najważniejsze-kochamywolność.
.Wysokawydajność-byłtozawszegłównyceltegojęzyka.Najważniejszewtymaspek-
ciejestto,bymócdostosowaćwieleprogramistycznychfunkcjonalnościdokonkretnej
potrzebybezdużegonarzutu.C++zostałzaprojektowanytak,byspełnićtenwymóg.
Możnatosparafrazowaćwnastępującysposób:flniepłaćzacoś,zczegoniekorzystasz”.
Jakzwyklepojawiasięjednakcena,którątrzebazapłacić,takajakniezainicjalizowane
zmienneczyniezwolnionezasoby.NowewłasnościwspółczesnegoC++sprawiająjed-
nak,żeproblemytemniejpoważne,pozwalająckodowinapisanemuwC++nadal
plasowaćsięwnajwyższejlidzewydajności.
.Systemowe,nisko-iwysokopoziomoweprogramowaniezorientowaneobiektowo(ang.
objectorientedprogramming,wskrócieOOP)natejsamejplatformie-C++jestwy-
korzystywanedoimplementacjisystemówwymagającychniskopoziomowegodostępu.
Wwieluprzypadkachjęzyktenwykorzystywanyjestdokonstruowaniapomostów
m.in.językami:np.wdziedzinieanaliznumerycznychdoFortrana,awdziedzi-
nieprogramowaniasystemówdoClubAssemblera.Ponadtotensamjęzykjestwy-
korzystywanydoimplementacjiwysokopoziomowychaplikacji,takichjakedytory
tekstu,platformyCAD,bazydanychigry.C++tojęzyksilniezorientowanyobiek-
towo(ang.objectoriented-OO)spełniającywszystkieparadygmatytegopodejścia,
takiejakabstrakcja,enkapsulacja,dziedziczenie,polimorfizm,możliwośćprzeła-
dowaniaoperatorówitd.Własnościte,wzmocnioneprzezszablonyiwzorcepro-
jektowe,mocnowspierajątworzenieoprogramowania,wszczególnościdlawielkich
systemów.
.Silnatypizacjajęzyka-każdyobiektscharakteryzowanyjestprzezswójtyp.Tensilny
wymógdotyczącytypuprowadzidopowstaniakodu,któryjestweryfikowanyprzez
kompilator,anieprzezużytkownikawczasiewykonania,jakdziejesięwprzypadku
niektórychjęzyków,którenieposiadajątejcechy.Niemniejjednakobiektymogązostać
przekonwertowanezjednegotypunadrugidziękiwbudowanymlubstworzonymprzez
użytkownikaoperatoromkonwersji.Relatywnienowemechanizmydedukcjitypuze
słowemkluczowymautoznacznieuprościłyteżużycietypówizwyczajniepozwoliły
zaoszczędzićnampisania.
.Obsługawyjątków-to,jaknależyobsłużyćproblemyobliczeniowewtrakciewykonania,
zawszebyłoistotnympytaniem.Naprzykład,copowinnozadziaćsięwkodzie,jeśli
plikzkluczowymiustawieniaminiemożezostaćotwartylubgdydoszłododzielenia
przezzero?Dobrysystemobsługiwyjątkówzwbudowanymmechanizmemodwijania
stosuwdużymstopniuułatwiazarządzaniewtakichsytuacjach.
.Wejścieiwyjście(IO)-C++byłpierwszymjęzykiem,którypobiłswojąkonkurencję,
wprowadzającjasną,rozszerzalnąiwysoceefektywnąhierarchięobiektówIOiuzyskał
kontrolęnaddziesiątkamistylówformatowaniaiflag.Cechata-choćniebezpewnych
ograniczeńiszczyptykrytycyzmu-możezostaćwykorzystanadododaniazdolności