W tym artykule recenzuję książkę, która stała się fundamentem dla moich czterdziestu artykułów o Pythonie 🚀. Jest to "Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy" 🌟! Ogółem, jest naprawdę w porządku dla każdego początkującego "pythonowca" 😄. Wypatrzyłem w niej jednak sporo błędów i niedopracowań, których musisz być świadom(a) ⚠️! Zapraszam - może to właśnie Ty zastanawiasz się nad jej zakupem 🙂?
RECENZJA KSIĄŻKI "PYTHON W ZADANIACH. PROGRAMOWANIE DLA MŁODZIEŻY. POZIOM PODSTAWOWY"
Bardzo długi ten tytuł, więc nagłówek również jest długi 😁.
Książka składa się łącznie z 276 stron, jednak jeżeli brać pod uwagę jedynie same konkrety (czyli treści tłumaczące poszczególne zagadnienia), takich stron ma 235 ℹ️. Dalej to już są tylko przykładowe rozwiązania zadań i tabelka dla zaznaczania sobie które z nich udało się zrobić samodzielnie ✅.
INFORMACJE OGÓLNE
Tytuł prezentuje podstawowe zagadnienia ze składni języka Python, takie jak 👇:
- operatory,
- łańcuchy znaków,
- instrukcje warunkowe,
- pętle "while",
- pętle "for",
- pakiety,
- moduły.
W dalszej części książki jest już korzystanie z konkretnych pakietów i modułów, takich jak "moviepy" czy "pygame" 👍. Niektóre z nich są wbudowane, inne z kolei wymagają zainstalowania poprzez "pip", co zresztą jest napisane na samym początku czytania ✍️.
21 ROZDZIAŁÓW Z ZAKRESU PODSTAWOWEJ WIEDZY
"Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy" został podzielony na 21 rozdziałów 📖. W jednym uczysz się instalacji Pythona, w innym dowiadujesz się o instrukcjach warunkowych, w innym zaś poznajesz podstawy rysowania obrazków na ekranie przy pomocy "pygame" 🎨. Pod sam koniec każdego rozdziału występuje nagłówek "Podsumowanie", po którym napisane jest czego powinniśmy się nauczyć z konkretnego rozdziału oraz występuje parę pytań, na które możemy sobie odpowiedzieć 📢.
W każdym z rozdziałów znajduje się zestaw zadań do wykonania (są umieszczone w środku treści, zamiast na samym końcu ℹ️) mające na celu pomóc Czytelnikowi w nabyciu tych najbardziej fundamentalnych umiejętności w zakresie korzystania z Pythona 🔥. Oprócz zadań zwykłych, są też tzw. "powtórzeniowe", które sprawdzają co zapamiętaliśmy z poprzedniego 🧠. Pojawiają się one przed rozpoczęciem każdego nowego rozdziału 🔴. Niektóre z zadań są tylko z nazwy, gdyż mają pod treścią zamieszczoną odpowiedź (co jest trochę zabawne 🙂), lecz nie wnikam - może uznano je za zbyt trudne do samodzielnego napisania (to w końcu programowanie dla młodzieży 😉).
To tyle na streszczenie zawartości, a teraz osobna część czyli co mi się nie spodobało i wymaga komentarza 👀.
WADY KSIĄŻKI "PYTHON W ZADANIACH. PROGRAMOWANIE DLA MŁODZIEŻY. POZIOM PODSTAWOWY"
Zostawię tę adnotację na wszelki wypadek. Nie mam żadnego zamiaru stawiać twórców w jakimkolwiek niekorzystnym świetle tylko dlatego, że zostawili jakiś błąd ℹ️. Ta część artykułu ma tylko na celu sprostowanie paru ważnych szczegółów, które zostały przeze mnie znalezione podczas czytania 📝. Gotowy(-a) 😉? Oto one 🚀!
GALIMATIAS Z PAKIETEM "PYDUB"
Jeżeli czytałeś(-aś) mój artykuł o pakiecie "pydub", to wiesz, że użytkownicy systemu operacyjnego Windows mogą mieć dodatkowe problemy z jej prawidłowym działaniem, bo nie dość, że trzeba było (w moim przypadku) zainstalować "simpleaudio", to jeszcze zamontować "Microsoft C++ Build Tools" 🤯! Natrafiłeś(-aś) na ten sam problem co ja? To niestety nie dowiesz się o tym z tej książki 🙁.
Prawda jest taka, że musiałem samodzielnie znaleźć przyczynę powstałego problemu i poszperać na forach jak można temu zaradzić 😐. Dopiero później dowiedziałem się, że posiadacze "Windowsa" mogą doświadczyć braku odtwarzania jakiegokolwiek dźwięku, mimo prawidłowego zapisu kodu źródłowego i bezproblemowego uruchomienia skryptu ❌. W książce "Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy", nie ma ani słowa o takim przypadku, co jest przykre, bo wiele innych osób może być w podobnej sytuacji co ja i przez jeden problem, negatywnie postrzegać ten tytuł ⬛.
BRAK UPRZEDZENIA O PROBLEMACH PODCZAS ODTWARZANIA FILMU PRZEZ PAKIET "MOVIEPY"
W książce, podczas uruchamiania kodów źródłowych dotyczących pakietu "moviepy" (rozdział XIX), możesz natknąć się na problem podobny do wyżej opisanego 😓.
Gdy dojdzie do wywołania funkcji "preview", okno się zawiesza i stawia opór przed zamknięciem poprzez kliknięcie krzyżyka 😅. Przynajmniej ja miałem taką sytuację i musiałem wyjść z tego awaryjnie zamykając całe okno powłoki ("IDLE") lub wymuszając zamknięcie procesu przez menedżer zadań ❌.
To jestem w stanie zrozumieć, bo być może ten kod był testowany na innym IDE, niż "IDLE" i ten problem nie występuje 🤔. Chociaż przydałoby się wtrącić zdanie, że mogą być tego typu problemy, bo dla mnie to było zaskoczenie 🙂. Zatem, gdy będziesz miał(a) taki sam problem, to możesz wykluczyć teorię, że to przez źle napisany kod 😉.
NIEWŁAŚCIWE PODEJŚCIE DO BIBLIOTEKI "PYGAME"
Ostatni podpunkt, najgorszy ze wszystkich 😳. W rozdziale o bibliotece "pygame" poznajesz szczegóły na temat tworzenia podstawowego okna w "pygame" 🌟. Bardzo nie spodobało mi się podejście w pierwszym przykładzie, na jakim jest ukazane tworzenie okna 👎.
Gra zawsze działa w środku pętli - tak było, jest i będzie. Natomiast na tamtym przykładzie żadnej pętli nie ma 😱! Jest po prostu zainicjowanie okna bez prawidłowej definicji dla sytuacji ciągłego funkcjonowania aplikacji w tle ⛔. Mając już jakieś doświadczenie w programowaniu, spodziewałem się jakie będą tego konsekwencje 💥.
Sprawdziłem jak działa ten kod 👀. Okno normalnie się pojawia i jest "trwałe" (jak przy działaniu w pętli), natomiast próba zamknięcia tego okna w sposób "naturalny" już jest niemożliwa 🛑! Okno nie zostało zaprogramowane na okoliczność przechwytywania sygnału zamknięcia, o którym pisałem 😐. Aby okno nie zniknęło w mgnieniu oka, zostało pominięte wywołanie funkcji "quit", co jest kolejnym niewłaściwym postępowaniem ❌!
Efekt jest taki, że pojawia się okno, dochodzi do zakończenia programu w trakcie wyświetlania tego okna z powodu braku pętli, natomiast nie możemy go zamknąć, bo jest brak przechwytywania zdarzeń 🔥.
Przykład ten łamie podstawowe normy przyjęte nie tylko w "pygame", lecz ogólnie w architekturze projektowania aplikacji, które mają działać w tle tak długo, aż nie otrzymają sygnału wyjścia z programu (np. poprzez kliknięcie "iksa") 🚫. Z wielu powodów 👇:
- brak inicjalizacji pakietu metodą "init",
- brak pętli "while" dla działania okna w tle,
- brak przechwytywania sygnałów zdarzeń,
- brak na samym końcu zwolnienia zasobów przeznaczonych na utworzenie okna ("pygame.quit").
Dodam, że ani "init", ani "quit", nie ma w żadnym innym kolejnym przykładzie w tej książce (a powinny być!) 😲. Ja testowałem to akurat na domyślnym IDE do Pythona ("IDLE"). Być może inne środowiska programistyczne nie reagują tak brutalnie na powyższe braki, lecz fakty są faktami - tak się nie robi 🫵!
Rozumiem, że książka jest przeznaczona, jak sama nazwa wskazuje, dla młodzieży 😄 i zapewne miała być prosta. Niemniej jednak uważam, że nie powinno się prezentować przykładów nagannie łamiących standardy pisania aplikacji 💔. W ten sposób młodzi ludzie mogą sobie tylko zaszkodzić 💥!
Drugą sprawą (już mniej burzliwą ⚡) jest stosowanie praktyki "usypiania" wątku w celu zatrzymania zmian zachodzących w programie. Nie robi się w ten sposób ❌! Powinno się dodać osobny czasomierz i do licznika dodawać deltę z czasu (ang. delta time), czyli ile dokładnie milisekund minęło od ostatniej klatki ⌚. Takie podejście jest zaprezentowane w zadaniu #83 ℹ️.
CZY KSIĄŻKA JEST WARTA ZAKUPU?
Zależy. Jeżeli zaczynasz kompletnie od zera i programowanie jest dla Ciebie obcą planetą, to tak ✅. "Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy" ma swoje wady (największe z nich, to te parę poważnych "zaskoczeń" z bibliotekami i niewłaściwe praktyki w przykładowych kodach źródłowych ⛔), lecz to są szczegóły, które wychwycą tylko ludzie mający już jakieś doświadczenie w programowaniu (jak na przykład ja 😜) 🔍. Postanowiłem je przybliżyć, abyś na nie uważał(a) podczas studiowania lektury, gdybyś podjął/podjęła decyzję o jej zakupie ℹ️.
Jeżeli jednak już umiesz jakiś język (może Python lub dowolny inny) i chciał(a)byś zgłębić samego Pythona, to są lepiej pasujące książki do tego i wtedy to bym sobie odpuścił ❌.
Jeżeli chodzi o mnie, nie żałuję zakupu 💪. Kupiłem ją z ciekawości, aby zobaczyć jakie według twórców są tematy przeznaczone dla początkujących. Tym bardziej, że ja sam wtedy zacząłem dopiero się uczyć Pythona 🙂. Dzięki tej lekturze dowiedziałem się kilku przydatnych rzeczy 💚. Najlepsza dla mnie nauka to poznanie kombinacji "Lewy Alt + klawisze numeryczne". Nie znałem takiej kombinacji wcześniej ani jej zastosowania i poznałem ją właśnie dzięki tej książce 🎉. Oprócz tego, pochwała za brak nagminnie zostawianych literówek w tekście pisanym "po ludzku" 👏. W całej książce dostrzegłem tylko jedno jedyne "zjedzenie" litery pod sam koniec rozdziału o tworzeniu GUI przy użyciu "PyQt", także chapeau bas 😊!
![]() |
"Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy" to zbiór 21 rozdziałów przedstawiających najbardziej podstawowe tematy korzystania z Pythona, jak również demonstracje możliwości wymienionych pakietów i modułów.
To wszystko 😊! Mimo wyżej wymienionych "ale", książka jest przyjemna w odbiorze i dla początkujących będzie to dobra pozycja 👍. Jednak ludzie mający już jakieś większe pojęcie o Pythonie, lepiej niech poszukają innej pozycji ℹ️. Ta jest przeznaczona dla początkujących odbiorców 🆕.
