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 👇:

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 👇:

  1. brak inicjalizacji pakietu metodą "init",
  2. brak pętli "while" dla działania okna w tle,
  3. brak przechwytywania sygnałów zdarzeń,
  4. 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

"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 🆕.

PODOBNE ARTYKUŁY