Data aktualizacji: 15 grudnia 2022

Python a C++

Wielu przyszłych maturzystów zadaje sobie pytanie: Python czy C++. W ciągu ostatnich lat Python znacznie nabrał na popularności i coraz więcej uczniów zaczyna wybierać właśnie jego. Ten artykuł jest napisany specjalnie dla tych z Was, którzy jeszcze nie mogą się zdecydować. Zaprezentuję główne różnice miedzy C++ i Pythonem, a przynajmniej takie, które dotykają tematów stricte maturalnych.

python czy c++
Python staje się coraz bardziej popularny, zwłaszcza wśród maturzystów.

Kompilacja

Zacznijmy od najbardziej podstawowej różnicy między tymi językami. C++ w przeciwieństwie do Pythona jest językiem kompilowanym. Co to oznacza? W dużym uogólnieniu kod napisany w C++ musi zostać wpierw skompilowany do postaci kodu maszynowego, który zostanie odpowiednio wykonany przez maszynę. Z kolei Python jest językiem interpretowanym, kod za pomocą interpretera jest interpretowany linia po linii, bez etapu tłumaczenia na język maszynowy. Jednak jaki ma wpływ widoczny dla nas, prostych użytkowników?

c++ czy python
C++ to jeden z języków kompilowanych.

Po pierwsze przez brak kompilacji kody napisane w Pythonie są wolniejsze od ich wersji z C++, choć warto nadmienić, że na dzisiejszych komputerach jest to kwestia raczej pomijalna, zwłaszcza na maturze. Ponadto, dzięki kompilacji jesteśmy w stanie wykryć więcej błędów, których Python może nie wykryć, zanim będzie za późno. W przypadku programów na poziomie maturalnym nie ma to większego znaczenia, jednak już przy tworzeniu bardziej zaawansowanych aplikacji trzeba mieć to na uwadze. Oznacza to, że programy w Pythonie mogą uruchomić się w stanie, w którym kompilator C++ wyłapał by błąd i kazał go naprawić. Na poziomie licealnym jednak nie jest to większy problem - ewentualne problemy są znane od razu po uruchomieniu programu, a uruchomienie programu to często kwestia mniej niż jednej sekundy.

Jakie są w takim układzie mocniejsze strony Pythona od C++? Otóż przez brak kompilatora język pozwala nam na bardziej elastyczne pisanie kodów. Jest więcej możliwości, a ponadto nie trzeba się martwić o wiele rzeczy i można kod pisać znacznie szybciej, bez potrzeby używania rozwlekłego, powtarzalnego i praktycznie niezmiennego boilerplate code. Dla przykładu w C++ gdy tworzymy tablicę, musimy zadeklarować odgórnie jej rozmiar:

const int rozmiar = 1000;
int tab[rozmiar];

Ponadto tablica tab może (w zależności od sytuacji) może być zainicjowana "śmieciami", znajdują się w niej różne wartości, na które nie mamy pierwotnie wpływu, więc musimy dodatkowo wyzerować ją przed rozpoczęciem jakiegoś zadania.

Z kolei w Pythonie możemy dowolnie dodawać nowe elementy do listy, nie martwiąc się o pamięć, a nawet dodawać elementy różnych typów, na przykład:

list = [0, 7, True, "aaa"]
list.append(1)
list.append("abcd")

Tablice

Tak jak już wspomnieliśmy wyżej, tablice w C++ i Python znacznie się od siebie różnią. Jednak nie jest to tylko kwestia typów elementów i rozmiaru tablicy. Dodatkową rzeczą udostępnioną przez twórców Pythona, której w C++ nie spotkamy to indeksowanie ujemne. Dokładniej -1 odpowiada ostatniemu znakowi, -2 przedostatniemu itd. Może być to bardzo przydatne w zadaniach, w których musimy sprawdzić parzystość liczb:

number = '321'

if int(number[-1]) % 2:
	print('Odd')
else:
	print('Even')

gdzie w C++ musielibyśmy skorzystać z:

number[number.size()-1]

co jest oczywiście nieco mniej wygodne. Ponadto dzięki mechanizmowi slicingu, w Pythonie możemy partycjować tablice i brać tylko jego część, na przykład kod:

text = 'abcdef'
print(text[1:3])

wypisze na ekranie znaki od indeksu 1 włącznie do 3, czyli: ’bc’.  Na domiar, możemy wyświetlać cały tekst co daną liczbę znaków:

text = 'abcdef'
print(text[::2])

W ten sposób wyświetli się zawartość zmiennej text co drugi znak: ’ace’. Na pierwszy rzut oka może się to wydawać całkiem niepotrzebne, jednak diametralnie skraca nam kod sprawdzający, czy np. tekst jest palindromem. A jak wiadomo, palindromy bardzo często lubią pojawiać się na maturze.  Poniżej prezentuję funkcje w Python a C++:

def isPalindrome(text):
	return text==text[::-1]
bool isPalindrome(string text)
{
	int n = text.size();

	for(int i=0; i<n/2; i++)
		if(text[i] != text[n-i-1])
			return false;

	return true;
}

Jak widać, różnica jest ogromna. W C++ musimy wykonać pętlę, która porównuje nam kolejne pary znaków, zaś w Pythonie operator [::-1] odwraca nam tablicę (w tym wypadku tekst) jednym wywołaniem funkcji.

Inne różnice

Do innych zalet należy dostępna w Pythonie szeroka biblioteka narzędzi umożliwiających programowanie funkcjonalne, co często pozwala zapisać nawet skomplikowane, wieloetapowe operacje w jednej-dwóch linijkach. C++ również pozwala na takie konstrukcje, jednak często są one znacznie bardziej skomplikowane niż te w Pythonie.

Wspomniany wcześniej boilerplate code w Pythonie ograniczony jest do minimum. Bardzo często nie będziemy musieli nawet dołączać żadnych bibliotek, ponieważ te dostępne bez użycia słowa kluczowego import będą wystarczające.

Obusiecznym mieczem jest również typowanie dynamiczne - nie musimy np. z góry deklarować jakie typy będą przyjmowane i zwracane przez nasze funkcje, jednak może to doprowadzić do niefortunnych sytuacji, w których nasza tablica będzie "pomieszana" niepasującymi do siebie elementami. Częstym problemem na początku jest również problem z rozróżnieniem między "funkcją" a "wynikiem wywołania funkcji" - w C++ie taki problem wychodzi od razu.

Podsumowanie

To jest tylko wybrane różnice między językami C++ a Python. Podsumowując, Python posiada łatwiejszy dostęp do prostszych w użyciu funkcji - w dodatku bez załączania bibliotek. Ponadto oferuje więcej funkcji-wytrychów niż C++, zważając na pojawiające się na maturach zadania. Python jest znacznie szybszym w nauce językiem i znacznie ułatwia pisanie matury. Odpowiadając na pytanie Python czy C++, polecałbym wybrać zloty środek. Wybrać Pythona jako język maturalny, nawet jeżeli mamy już doświadczenie z C++em (nawet lepiej - szybciej nauczymy się Pythona, czy innych języków!). Nie warto jednak rezygnować z C++. Warto się uczyć C++ dodatkowo lub ewentualnie sięgnąć po język C, aby mieć później łatwiejszy start na studiach, czy przy nauce nowych języków. Są to nadal języki powszechnie używane w wielu dziedzinach, od programowania gier po tworzenie oprogramowania satelitów komunikacyjnych.

python c++ różnice
Python świetnie sprawdzi się jako język maturalny, jednak C++ również się przydaje - warto więc się go uczyć.

Jak oceniasz ten artykuł?

Przykro nam 🙁 , że ten wpis nie był dla Ciebie wystarczająco przydatny!

Będziemy wdzięczni jeżeli napiszesz co moglibyśmy poprawić.

Najnowsze wpisy

Matura z informatyki 2024 - Odpowiedzi

Przeczytaj >>

Wyszukiwanie Google - wyszukiwanie informacji w Internecie krok po kroku

Przeczytaj >>

Jak sprawdzić komputer przed maturą z informatyki?

Przeczytaj >>

Czy warto zapisać dziecko na programowanie dla przedszkolaków?

Przeczytaj >>

Pierwszy krok ku karierze, czyli jaką wiedzę potrzebuję, aby zacząć pracę w IT jako programista?

Przeczytaj >>

JESTEŚ AMBITNY?

Dołącz do nas jeszcze dziś i rozwijaj się w swojej ulubionej dziedzinie we współpracy z nauczycielami, którzy są autorami artykułów na naszym blogu!
POZNAJ OFERTĘ KUrSÓW
© Ambitni Szkoła Informatyki 011111100101(2) | jesteś niemal gotowy!
crossmenu