narzędziaW innych językach
|
C++
C++ - język programowania ogólnego przeznaczenia. Umożliwia abstrakcję danych oraz stosowanie kilku paradygmatów programowania: proceduralnego, obiektowego i generycznego. Charakteryzuje się wysoką wydajnością kodu wynikowego, bezpośrednim dostępem do zasobów sprzętowych i funkcji systemowych, łatwością tworzenia i korzystania z bibliotek (napisanych w C++, C lub innych językach), niezależnością od konkretnej platformy sprzętowej lub systemowej (co gwarantuje wysoką przenośność kodów źródłowych) oraz niewielkim środowiskiem uruchomieniowym. Podstawowym obszarem jego zastosowań są aplikacje i systemy operacyjne. C++ został zaprojektowany przez Bjarne'a Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i silną statyczną kontrolę typów. Zachowanie zgodności z językiem C na poziomie kodu źródłowego pozostaje jednym z podstawowych celów projektowych kolejnych standardów języka. W latach 90. XX wieku język C++ zdobył pozycję jednego z najpopularniejszych języków programowania ogólnego przeznaczenia. Na początku XXI wieku liczbę programistów języka C++ szacowano na około 3 miliony [1]. Od 1998 obowiązuje standard ISO/IEC 14882:1998 (Standard for the C++ Programming Language) z drobnymi poprawkami zatwierdzonymi w 2003 r. (ISO/IEC 14882:2003). Ogłoszenie nowego standardu (tzw. C++0x) planowane jest na 2009.
[edytuj] Cechy standardówProjekt języka C++ usiłuje zachować możliwie jak największą zgodność (na poziomie kodu źródłowego) z językiem C. Projektanci C++ za idealną uznaliby sytuację, w której język C byłby podzbiorem języka C++ (tj. każdy program w C byłby takim samym programem w C++, ale nie odwrotnie). Zgodność pomiędzy obydwoma językami nie zawsze była całkowita, ale jak dotąd ewentualne różnice były w praktyce nieistotne[2]. Większym problemem związanym ze zgodnością była niekompatybilność kompilatorów języka C++ w zakresie obsługiwanej składni - przez wiele lat programy napisane pod jednym nie działały pod innym. Biblioteki C++ związane z interfejsami systemów nie są przenośne poza ich obręb, co wynika z faktu, że takie interfejsy są specyficzne dla danego systemu i nie jest to specyficzne tylko dla C++. Większość użytecznych programów w C++ wymaga stosowania bibliotek niestandardowych. Są one łatwo dostępne w Sieci zarówno jako produkty własnościowe, jak i jako FLOSS. W szczególności programy napisane w C++ mogą korzystać z ogromnych zasobów bibliotek języka C. Język C++ posiada swój oficjalny standard (aktualnie jest to ISO/IEC 14882:2003 z 2003). Język C++ nie jest własnością żadnej osoby, instytucji czy korporacji. [edytuj] Właściwości języka
[edytuj] HistoriaJęzyk C++ został stworzony w latach osiemdziesiątych XX wieku (pierwsza wersja pojawiła się w 1979 r.) przez Bjarne'a Stroustrupa jako obiektowe rozszerzenie języka C. Poza językiem C, na definicję języka C++ miały wpływ takie języki, jak Simula (z której zaczerpnął właściwości obiektowe) oraz Algol, Ada, ML i Clu. Początkowo język C++ był dostępny w takim standardzie, w jakim opracowano ostatnią wersję kompilatora Cfront (tłumaczący C++ na C), później opublikowano pierwszy nieformalny standard zwany ARM (Annotated Reference Manual), który sporządzili Bjarne Stroustrup i Margaret Ellis. Standard języka C++ powstał w 1998 roku (ISO/IEC 14882-1998 "Information Technology — Programming Languages — C++"). Standard ten zerwał częściowo wsteczną zgodność z ARM w swojej bibliotece standardowej; jedyne, co pozostało w stanie w miarę nienaruszonym to biblioteka iostream. Początkowo najważniejszą rzeczą wprowadzoną w C++ w stosunku do C było programowanie obiektowe, później jednak wprowadzono do niego mnóstwo ulepszeń, czyniąc ten język wygodniejszym i bardziej elastycznym od swojego pierwowzoru. Nie od rzeczy jest też wspomnieć, że niektóre zmiany w standardzie języka C były w większości zainspirowane językiem C++ (np. słowo inline w C99). Nazwa języka została zaproponowana przez Ricka Mascitti w 1983 roku, kiedy to po raz pierwszy użyto tego języka poza laboratorium naukowym. Odzwierciedla ona fakt, że język ten jest rozszerzeniem języka C. Wcześniej używano nazwy "C z klasami". Nazwa języka C++ nawiązuje do faktu bycia "następcą języka C", przez użycie w niej operatora inkrementacji "++". Inkrementacja to zwiększenie liczby o 1, w języku C++ do jej wykonania wykorzystywany jest w/w operator; dla przykładu: zapis: i=i+1; // zmiennej "i" przypisujemy jej aktualną wartość, powiększoną o 1 ... jest równoważny:
i++; // również powiększamy wartość zmiennej "i" o 1.
Nazwa C++ jest więc symbolicznym stwierdzeniem, iż jest to język C, unowocześniony, o znacznie większych możliwościach. Pierwsze kompilatory języka C++, podobnie jak Cfront, były wyłącznie translatorami na język C. Kompilatory takie dostępne są i dziś. Jednym z nich jest Comeau C++ — jeden z niewielu kompilatorów oferujących pełne wsparcie dla standardu języka. Pierwszym kompilatorem natywnym (produkującym od razu kod asemblerowy) dla języka C++ był g++ z pakietu GCC, którego pierwszym autorem był Michael Tiemann, założyciel Cygnus Solutions. Obecnie (2007) trwają prace nad rewizją i rozszerzeniem standardu C++ zwane roboczo C++0x. Wprawdzie przewidziane są nieznaczne zmiany w samym języku C++, ale rozszerzana jest przede wszystkim biblioteka standardowa języka. Rozszerzenia te znane są pod nazwą TR1 (od Technical Report No. 1) i zawierają przede wszystkim komponenty przejęte z biblioteki Boost. [edytuj] Przykładowy programPoniższy program wyprowadza na standardowe urządzenie wyjścia napis "Hello world!": #fff3f2e <iostream> int main() { std::cout << "Hello world\n"; } [edytuj] Nowe cechy języka C++ względem języka ANSI C z 1989 rokuUwaga: niektóre z poniższych elementów trafiły do standardu języka C z 1999 roku (tzw. C99).
Przypisy[edytuj] Zobacz też[edytuj] Linki zewnętrzne
Tutoriale
wieloparadygmatowe: Ada • C++ • Common Lisp • D • Fortran • Icon • JavaScript • Nemerle • Perl • Python • Ruby • Snobol proceduralne i strukturalne: AWK • C • COBOL • Forth • Modula-2 • Oberon • Pascal • PL/SQL • Rey • REXX • sh obiektowe: C# • Eiffel • Java • Object Pascal • Objective-C • PHP • Smalltalk funkcyjne: Erlang • F# • Haskell • Lisp • ML • Ocaml • Scheme inne: ABAP • Asembler • C-- • GAUSS • Lustre • MCPL • SAS 4GL • SQL • Visual Basic • VB.NET • occam • QCL ezoteryczne: INTERCAL • Brainfuck • BeFunge • Unlambda • Malbolge • Whitespace • FALSE • HQ9+ • Shakespeare • Whirl • Ook historyczne: ALGOL • APL • BASIC • Clipper • JAS • Lisp • MUMPS • PLAN • PL/I • PL/M • SAKO • SAS (asembler) • Simula |
|||||||||||||||||||