Rozdział 1. Co to jest język C++

06 października 2012
1 gwiadka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek

Część I: Programowanie w języku C++

Ciekawi Cię programowanie w języku C++, ale boisz się, że to dla Ciebie za trudne? Kurs ten jest przeznaczony dla osób początkujących, które nigdy wcześniej nie miały do czynienia z programowaniem, tak jak Ty! W tym kursie dowiesz się, na czym polega programowanie i jakie programy trzeba zainstalować oraz poznasz podstawowe techniki, które pomogą Ci rozpocząć pracę.

C++ to jeden z najbardziej znanych języków na świecie. Ma wiele zastosowań, jest używany między innymi do programowania gier komputerowych, w których ważne są wydajność i duże możliwości. Mówiąc krótko język ten jest niezbędnym narzędziem pracy wielu programistów.

Język C++ jest potomkiem języka C. Mimo iż na pierwszy rzut oka te dwa języki mogą się wydawać bardzo podobne do siebie, w istocie bardzo się różnią. W języku C++ wprowadzono wiele nowych funkcji, jak chociażby możliwość programowania obiektowego. W wyniku tego powstał bardzo potężny język pozwalający pisać programy w całkiem innym sposób, niż się to robiło w języku C.

W kursie tym poznasz także bibliotekę o nazwie Qt, która znacząco rozszerza możliwości języka C++. Za jej pomocą można tworzyć okna i menu oraz korzystać z funkcji sieciowych komputera!

Obraz kilku programów napisanych w języku C++

Kilka programów napisanych w języku C++

Jeśli podoba Ci się ten kurs, to może polubisz też książkę Programmez avec le langage C++ tych samych autorów, którą można kupić w Site du Zéro. Znajdziesz w niej ten kurs przystosowany do wydania papierowego oraz kilka niepublikowanych nigdzie indziej rozdziałów.

1. Co to jest język C++

Informatyka jest Twoją pasją i chcesz nauczyć się programować? Czemu nie! Na pierwszy rzut oka może się wydawać, że programowanie to cos trudnego, ale tak naprawdę jest to prostsze niż wielu myśli!

Zapewne nieraz zastanawiałeś się od czego zacząć, czy język C++ jest dla Ciebie odpowiedni, czy nie lepiej zacząć od jakiegoś innego języka… Pewnie próbowałeś dociec czy za pomocą tego języka uda Ci się zrobić wszystko, co chcesz oraz jakie są jego słabe i mocne strony…

W tym rozdziale spróbuję rozwiać wszystkie te wątpliwości.

To jest kurs dla początkujących. Nie jest wymagana żadna wstępna wiedza. Jeśli jednak nigdy do tej pory nie miałeś żadnej styczności z programowaniem, to musisz czytać części tego kursu po kolei niczego nie pomijając i wszystkie zadania wykonywać na bieżąco!

1.1. Programy

Programy są podstawą informatyki. To właśnie dzięki nim możesz wykonywać różne czynności na komputerze. Weźmy na przykład poniższy zrzut ekranu z mojego komputera:

Trzy okna programów napisanych w C++

Widać na nim trzy okna trzech różnych programów. Oto ich nazwy od tego, który jest na wierzchu:

  • Przeglądarka internetowa Google Chrome, za pomocą której można przeglądać strony internetowe.
  • Eksplorator Windows, za pomocą którego można zarządzać plikami zapisanymi w komputerze.
  • Edytor tekstu Microsoft Word, za pomocą którego można redagować listy i inne dokumenty.

Jak widać, każdy z tych programów służy do konkretnego celu. W tej samej kategorii możemy też wymienić rozmaite gry komputerowe służące do rozrywki, takie jak: Starcraft II, World of Warcraft, Worms, Team Fortress 2 itd. Każda z nich to inny program.

Nie wszystkie programy muszą być widoczne. Niewidoczne mogą być na przykład aktualizacje komputera, a także do pewnego stopnia programy antywirusowe. Programy te działają w tle i często nie mają okien, ale to im nie przeszkadza w aktywnym wykonywaniu swojej pracy.

Zrzut ekranu Starcraft II

Gry komputerowe (tu Starcraft II) są najczęściej pisane w języku C++

Przede wszystkim mierz siły na zamiary. Aby utworzyć taką grę jak Starcraft II, trzeba zatrudnić na pełny etat kilkudziesięciu programistów i dać im kilka lat na wykonanie pracy. Dlatego nie stawiaj sobie zbyt wysokich wymagań.

Jeśli jednak ukończysz ten kurs, zdobędziesz solidne podstawy programowania. W części praktycznej napiszemy nawet prawdziwą przeglądarkę internetową (oczywiście uproszczoną) taką, jak Mozilla Firefox czy Google Chrome! Nauczysz się tworzyć programy okienkowe, a jeśli poświęcisz odrobinę więcej pracy, będziesz mógł nawet napisać własne gry 2D i 3D. Mówiąc krótko, z czasem jeśli będziesz wytrwały możesz daleko zajść.

Ach tak, wracając do postawionych na początku pytań. Chcesz wiedzieć, jak się pisze programy. Programowanie to bardzo obszerna dziedzina. Języki programowania służą do mówienia komputerowi, co ma robić. Zobaczmy w takim razie czym dokładnie są te języki programowania.

1.2. Języki programowania

Twój komputer to niesamowita i bardzo skomplikowana maszyna. Na najbardziej podstawowym poziomie język jakim się on posługuje składa się tylko z zer i jedynek. Dla niego taki ciąg znaków, jak poniższy:

1010010010100011010101001010111010100011010010

może oznaczać np. ?Wyświetl okno na ekranie?.

Ojej! Ależ to jest strasznie skomplikowane! Czy będę musiał nauczyć się tego języka? Na szczęście nie. Gdyby trzeba było się nim posługiwać (jest to tzw. język binarny), to napisanie takiej gry, jak Starcraft II zajmowałoby nie lata, lecz tysiące lat (nie żartuję)!

Aby ułatwić sobie życie, informatycy wynaleźli języki pośrednie, które są prostsze od binarnego. Aktualnie istnieją setki języków programowania. Jeśli chcesz zobaczyć ile tego jest, możesz sprawdzić listę języków programowania w Wikipedii. Każdy z tych języków ma cechy, o których tu będzie mowa.

Każdy język programowania ma jeden cel: umożliwić komunikację człowieka z komputerem w sposób prostszy, niż pozwala na to język binarny. Oto jak to działa:

  1. Programista pisze instrukcje dla komputera w wybranym języku programowania (np. C++).
  2. Instrukcje te zostają przetłumaczone przez specjalny program na format binarny.
  3. Komputer odczytuje dane binarne i dzięki temu wie, co programista od niego chciał.

Proces ten przedstawia poniższy schemat:

Schemat przedstawiający proces powstawania programu

Ten wspominany już kilkakrotnie program tłumaczący to kompilator. Jest to narzędzie niezbędne do przekształcenia kodu źródłowego programu w jednym z języków programowania na postać wykonywalną.

Poniżej przedstawiam jeszcze raz poprzedni schemat, ale z zastosowaniem poprawnej terminologii informatycznej:

Schemat przedstawiający proces powstawania programu 2

Chciałbym abyś zapamiętał te informacje, ponieważ mimo iż nie jest to nic wielkiego, to stanowi to podstawę, którą koniecznie trzeba znać!

No właśnie, ale jak mam wybrać język programowania? Sam napisałeś, że są ich setki! Który jest najlepszy? Czy C++ to dobry wybór?
Ogólnie rzecz biorąc każdy programista zna przynajmniej kilka języków programowania. Rzadko się zdarza, aby ktoś koncentrował się tylko na jednym wybranym.

Ale oczywiście od czegoś trzeba zacząć! Dobra wiadomość jest taka, że na początek można wybrać taki język, jaki się tylko chce. Podstawowe zasady we wszystkich językach są mniej więcej takie same, dzięki czemu nauka kolejnych języków jest już znacznie łatwiejsza.

Zobaczmy w takim razie jak język C++ wypada w porównaniu z innymi językami programowania. Nie zapominajmy, że mimo wszystko kurs ten dotyczy właśnie języka C++!

1.3. Porównanie C++ z innymi językami programowania

1.3.1. C++: język wysoko- czy niskopoziomowy

Niektóre języki programowania są bardziej popularne, a inne mniej. Jeśli chodzi o C++, to bez wątpienia jest to jeden z najpopularniejszych języków na świecie. Jeśli chcesz, to możesz zajrzeć np. do serwisu langpop.com, w którym publikowane są informacje na temat tego, które języki programowania są aktualnie najczęściej używane. Z pewnością zauważysz, że do najpopularniejszych należą m.in. języki C, Java i C++.

W tym momencie nasuwa się pytanie: czy powinienem wybrać język, który jest bardzo popularny? Są przecież też bardzo ciekawe języki, które nie mają tak dużego powodzenia. Problem z mniej popularnymi językami jest taki, że trudno znaleźć kogoś, kto Ci pomoże w ich nauce i kiedy będziesz mieć jakiś problem. Dlatego właśnie język C++ to dobry wybór na początek: jego programistów jest tak wielu, że bez najmniejszego trudu znajdziesz kogoś, kto Ci pomoże.

Oczywiście są też inne kryteria niż popularność. Moim zdaniem najważniejszym z nich jest poziom języka. Wyróżnia się języki wysokopoziomowe i niskopoziomowe.

Co to jest język wysokopoziomowy?
Język wysokopoziomowy to taki, który w bardzo małym stopniu przypomina język binarny (a więc działa „z dala” od urządzenia). Programy przy użyciu takiego języka pisze się stosunkowo łatwo i szybko. Natomiast język niskopoziomowy funkcjonuje bliżej sprzętu. Używanie go jest z reguły nieco trudniejsze, ale za to oferuje on większe możliwości kontroli tego, co się robi. Jest to zatem broń obosieczna.

Język C++ często jest określany jako niskopoziomowy, ale ma również cechy języka wysokopoziomowego. Ale nie bój się! Mimo iż pisanie programów w tym języku czasami bywa dość skomplikowane, to w zamian otrzymujesz bardzo przydatne narzędzie pozwalające pisać niezwykle szybkie programy. Przytłaczająca większość gier komputerowych powstaje właśnie w nim, ponieważ stanowi on połączenie potężnych możliwości z dużą szybkością działania. Dlatego właśnie język ten jest niezastąpiony.

Poniższy schemat przedstawia klasyfikację niektórych języków programowania wg „poziomu”:

Schemat przedstawiający języki programowania różnych poziomów

Zapewne myślisz sobie, że można pisać programy korzystając z prymitywnego narzędzia zwanego asemblerem. Jednak aby napisać cokolwiek poważniejszego niż kalkulator przy użyciu tego języka, potrzeba naprawdę nadludzkiego wysiłku. Dlatego lepiej jest używać innych języków programowania.

Pojęcie poziomu w programowaniu jest względne. Ogólnie można powiedzieć, że C++ to język niskopoziomowy w porównaniu np. z językiem Python, ale wysokopoziomowy w porównaniu z asemblerem. Wszystko zależy od punktu widzenia.

1.3.2. Zalety języka C++

  • Jest bardzo popularny. Jak już wiemy, język ten należy do najczęściej używanych języków programowania na świecie. Dzięki temu w internecie można znaleźć wiele materiałów na jego temat oraz uzyskać pomoc na różnych forach. Podobno też sporo wspaniałych ludzi poświęciło się, żeby napisać różne kursy i samouczki dla początkujących.
  • Jest szybki, naprawdę bardzo szybki, tak szybki, że bardzo często używa się go do pisania programów, w których bardzo ważnym kryterium jest wydajność. Dotyczy to w szczególności np. gier komputerowych, ale także aplikacji finansowych i niektórych programów używanych przez wojsko, które muszą przetwarzać dane na bieżąco.
  • Jest przenośny, tzn. program napisany w tym języku teoretycznie można zamienić w plik wykonywalny w dowolnym systemie operacyjnym, takim jak np. Windows, Linux czy Mac OS. Nie trzeba pisać programu dla każdej platformy od z osobna!
  • Istnieje wiele bibliotek dla języka C++. Biblioteki to rozszerzenia języka, które można w pewnym sensie porównać do wtyczek. Język C++ sam w sobie nie oferują zbyt wielkich możliwości, ale gdy się doda do niego wszystkie dostępne biblioteki, to można tworzyć programy trójwymiarowe, aplikacje sieciowe, programy do odtwarzania muzyki, okna itd.
  • Jest wieloparadygmatowy (a cóż to?). Te obce słowo oznacza, że w języku C++ można programować różnymi stylami. Nie ma sensu na początku rozprawiać o różnych stylach programowania, dlatego podpowiem tylko, że jednym z najbardziej znanych paradygmatów jest programowanie obiektowe. Jest to technika pozwalająca dobrze zorganizować kod źródłowy i ułatwiająca wielokrotne wykorzystanie w różnych miejscach określonych fragmentów kodu. Druga część tego kursu jest w całości poświęcona programowaniu obiektowemu.

Oczywiście C++ nie jest językiem idealnym. Ma także pewne wady w porównaniu z innymi językami. Jedną z nich dla niektórych może być duża złożoność. Z jednej strony język ten daje programiście bardzo dużą kontrolę nad komputerem (i zarządzaniem pamięci), co należy uznawać za wielką zaletę. Z drugiej jednak strony, jeśli ktoś źle będzie korzystał z tej możliwości, to może łatwo doprowadzić do awarii programu. Ale nie bój się, w trakcie tego kursu wszystkiego się nauczysz.

1.4. Pierwszy program

Poniżej znajduje się kod źródłowy prostego programu, który wyświetla na ekranie napis ?Witaj, świecie?. Będzie to jeden z pierwszych programów, które przestudiujemy w dalszych rozdziałach.

#include <iostream>
 
using namespace std;
  
int main()
{
 cout << "Witaj, świecie!" << endl;
 return 0;
}

1.5. Historia języka C++ w zarysie

Programowanie ma długą historię. Początkowo nawet do programowania nie używano klawiatury, ponieważ instrukcje komputerowi były wydawane za pomocą specjalnych kart perforowanych, takich jak przedstawiona na poniższej ilustracji:

Karta perforowana (dziurkowana)

Zapewne się domyślasz, jakie to było czasochłonne i żmudne.

1.5.1. Od Algola do C++

Na szczęście informatyka ewoluowała. Pojawiły się klawiatury i pierwsze języki programowania:

  1. 1958: w dawnych czasach, kiedy komputery ważyły po kilka ton i mierzyły po kilka metrów, wynaleziono język programowania o nazwie Algol.
  2. 1960-1970: następnie powstał język o nazwie CPL, który ewoluował, aby stać się językiem BCPL, a następnie przyjąć nazwę język B (nie musisz uczyć się tych wszystkich nazw i dat na pamięć).
  3. 1970: pewnego pięknego dnia powstał kolejny język programowania o nazwie… C. Język ten do dziś znajduje się w czołówce najczęściej używanych języków programowania, chociaż oczywiście trochę się zmienił w stosunku do pierwszej wersji.
  4. 1983: nieco później zaproponowano pewne poprawki do języka C, aby go unowocześnić. W ten sposób na bazie języka C powstał nowy język o nazwie C++, który jest jakby inną wersją języka C z pewnymi dodatkami. Wprowadzono w nim takie techniki programistyczne, jak programowanie obiektowe, polimorfizm, strumienie itd. Na razie pojęcia te nie są Ci jeszcze znane, ale jeszcze nie raz się z nimi spotkasz w tym kursie.

Chwileczkę… Skoro C++ jest ulepszoną wersją języka C, to dlaczego wciąż tak dużo ludzi używa C?
Wielu programistów po prostu nie potrzebuje dodatków, jakie oferuje język C++. Język C jest wystarczająco wszechstronny, aby można było przy jego użyciu napisać rdzeń systemów operacyjnych, takich jak Linux, Mac OS X i Windows. Ci, którzy nie potrzebują ulepszeń języka C++ (które niosą ze sobą dodatkowe komplikacje), mogą się zadowolić językiem C, który mimo swojego wieku wciąż jest bardzo przydatny. Jak widać, język programowania nie musi być nowy, aby być przydatny.

1.5.2. Twórca języka C++

Zdjęcie Bjarne Stroustrupa Twórcą języka C++ jest Bjarne Stroustrup, informatyk duńskiego pochodzenia. Niezadowolony z możliwości oferowanych przez C postanowił w 1983 roku utworzyć na jego bazie nowy język o nazwie C++, w którym zawarł wszystko to, czego mu brakowało w pierwowzorze.

Bjarne Stroustrup pracuje na stanowisku profesora informatyki na University of Texas w Stanach Zjednoczonych. Jest bardzo ważną osobistością w świecie programowania i warto go znać, a przynajmniej jego nazwisko.

Język C++ stał się inspiracją do powstania wielu innych języków programowania, np. Javy. I mimo iż jest już bardzo stary, wciąż trwają prace nad jego udoskonalaniem. Niedawno pojawiła się najnowsza wersja o nazwie C++11. Nie jest to nowy język, lecz zmodyfikowana wersja C++. Nowości, które wprowadzono dotyczą zaawansowanych zagadnień, a więc ich opis na razie sobie darujemy.

Te krótkie wprowadzenie miało na celu przybliżyć Ci czym są języki programowania i z grubsza wyjaśnić, jak one działają.

Podsumujmy:

  • Programy to podstawa informatyki. Zmuszają komputer do wykonywania różnych czynności.
  • Aby napisać program, trzeba znać jeden z wielu języków programowania.
  • C++ to jeden z najpopularniejszych języków programowania na świecie.
  • C++ jest potomkiem języka C i stanowi jego wzbogaconą wersję.
  • C++ to język niskopoziomowy, tzn. operuje blisko sprzętu (języka binarnego), z którego to powodu jest nieco skomplikowany.
  • C++ to bardzo szybki język i dlatego jest najczęściej wybierany przez m.in. twórców gier komputerowych, którym zależy na maksymalnej wydajności.

Do tej pory jeszcze nie grzebaliśmy w komputerach, ale w następnym rozdziale piszemy, jakie programy trzeba zainstalować, aby móc rozpocząć programowanie!

Autor: Mathieu Nebra i Matthieu Schaller

Źródło: http://openclassrooms.com/courses/programmez-avec-le-langage-c/qu-est-ce-que-le-c-2

Tłumaczenie: Łukasz Piwko

Treść tej strony dostępna jest na zasadach licencji CC BY-NC-SA 2.0

2 komentarze

  1. Bardzo dobra strona przyda sie mi do konkursu:D

    Odpowiedz
  2. Witam serdecznie niesamowicie przydatny poradnik .Dzięki niemu można bardzo szybko i łatwo zrozumieć świat programowania i jest bardzo pomocny ;) dziękuje za stworzenie tej strony :) .pozdrawiam

    Odpowiedz

Dyskusja

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *