Wrzesień i październik poświęciłem kolejnej książeczce informatycznej, którą w tym miejscu recenzuję bez żadnej akcji reklamowej 😏. "Algorytmy. Ilustrowany przewodnik" kupiłem jako jedną z pierwszych książek, zanim na dobre wciągnąłem się w wir czytania i wreszcie po latach znalazłem na nią czas i przeczytałem od deski do deski 🔍. Co w niej znajdziesz i na co trzeba uważać 🙂? Czytaj szczegóły 👀!
RECENZJA KSIĄŻKI "ALGORYTMY. ILUSTROWANY PRZEWODNIK"
Autorem książki jest niejaki Pan Aditya Y. Bhargava. Standardowo, wpierw napiszę w dużym skrócie o samej treści (z jakich tematów się składa i na jakie rozdziały została podzielona), a potem wypunktuję uchwycone wady, wyłącznie informacyjnie ℹ️.
Jak zapewne moi czytelnicy się spodziewają, przedstawię na dzień dobry formułkę celem rozwiania wątpliwości i zasuwamy 👇:
Recenzując książkę autorstwa Pana Aditya Bhargavy (przepraszam, jeśli odmiana jest nieprawidłowa) i prezentując swoje zdanie na jej temat, nie leżało w mojej intencji żadne złośliwe wytykanie błędów. Jedynym moim celem publikacji recenzji było przedstawienie swojej opinii oraz sprostowanie pewnych przytoczonych treści, aby ewentualne ponowne wydanie książki było pozbawione wskazanych błędów, jeśli faktycznie takimi są (bo sam mogę się mylić!).
Start ▶️!
Z CZEGO SKŁADA SIĘ KSIĄŻKA "ALGORYTMY. ILUSTROWANY PRZEWODNIK"?
W książce znajdziesz takie zagadnienia, jak 👇:
- definicję algorytmu,
- notację dużego O,
- rekurencję,
- technikę "dziel i zwyciężaj",
- tablice skrótów,
- podejście programowania dynamicznego (oraz jak nam może pomóc w wyznaczaniu rozwiązania przybliżonego),
- zachłanność i przykłady algorytmów zachłannych,
- prezentację wielu różnych algorytmów, wśród nich:
Widać, że włożono pracę w staranne dobieranie kolejności nowych tematów 👍. Nie dość, że stopień trudności jest precyzyjny, to jeszcze postarano się pokazać algorytmikę z kilku kategorii i punktów widzenia (sortowanie, struktury danych, terminologia itp.).
Jak dla mnie, pozycja rewelacyjna i warta uwagi każdego z przyszłych programistów o większym lub mniejszym doświadczeniu, bez względu na profesję 💙💙💙!!! To jest taki "pierwszy poziom" drogi do dziedziny algorytmiki 📶. Jest dużo abstrakcji, porównań, ukochanych przeze mnie obrazków 😊, natomiast z ostrożnym podsuwaniem coraz to nowych terminów, aby nie odstraszyć Czytelnika starającego się zrozumieć temat 🔥.
Dużą pomocą są gotowe kody źródłowe napisane w Pythonie, które można sobie przepisać i zobaczyć jak one działają w praktyce 🚀! Niewątpliwie pomogły także i mnie, a w ramach ćwiczenia przeniosłem sobie program na inne języki i eksperymentowałem 🧪. Zawsze będę za połączeniem uczenia się z zabawą 🧸.
Łyżką dziegciu w tej beczce miodu, jest duża liczba literówek i niezgodności, a część z tych niezgodności znacząco utrudniła rozumienie przedstawianych tematów 😔. Mało tego, są zaszyte nie tylko w samej treści, lecz również w części rysunków oraz prezentowanych kodach źródłowych 🔥! Niestety część z nich była tak znacząca, że wymagała ode mnie prześledzenia całego działania od A do Z na osobnej kartce A4 🤯!
JAKIE WADY MA KSIĄŻKA "ALGORYTMY. ILUSTROWANY PRZEWODNIK"?
Dużą wadą są pozostawione błędy w rysunkach, kodach źródłowych i obliczeniach arytmetycznych ❌. Określenia w pewnych miejscach nie zgadzają się z przebiegiem jakiegoś algorytmu i po prostu się "nie klei" z ukazanym stanem 😕.
Jak jesteś zainteresowany(-a) konkretnymi przykładami z książki, to zapraszam do lektury 📖!
FAŁSZUJĄCA ARYTMETYKA
Jedna z mało przyjemnych rzeczy, to sprzeczność pomiędzy obliczeniami arytmetycznymi, a otrzymanymi rozwiązaniami ❌. Sprawa dotyczy dwóch różnych części książki, więc podzielimy to sobie na 2 połowy 🔪.
STRONA 194
Na str. #194 są 2 następujące błędy 👇:
- literówka w ukazanych obliczeniach pod pierwiastkiem,
- podanie nieprawdziwego wyniku rozwiązania po wykonaniu poprawnych obliczeń.
W pkt. 1 1️⃣ występuje "przekręcenie" cyfry powodujące otrzymanie całkowicie innego wyniku, niż tego, który jest napisany. Gdy się przyjrzysz konkretnie temu wyrażeniu:
(4 - 4)2
to możesz później dostrzec, porównując do tabelki ze strony wcześniej, że wartości nie zgadzają się ze sobą. Powinno być:
(4 - 3)2
Co ciekawe, gdybyśmy się przyjrzeli temu z drugiej strony, czyli że to tabelka "fałszuje" i tam wpisano źle cyferkę, to przy założeniu, że jednak mieliśmy odjąć od siebie "czwórki", to wtedy otrzymujemy ten sam wynik (2) 👍. Obstawiam, że błędnie wprowadzono liczbę na stronie #193, bo odjęcie od siebie "czwórek" powoduje, że wynik powstały ze wzoru jest identyczny. Ciekawe 😄!
W pkt. 2 2️⃣ mamy z kolei sytuację w drugą stronę. Po poprawnym wyliczeniu innej porcji danych (dystans pomiędzy Patrycją, a Morfeuszem), otrzymany wynik nie zgadza się z tym, co jest napisane w dalszej części książki 😐.
Mowa jest o wyniku równym 24. Gdy jednak weźmiemy sobie te wartości i policzymy:
√((3 - 2)2 + (4 - 5)2 + (4 - 1)2 + (1 - 3)2 + (4 - 1)2) =
√(1 + 1 + 9 + 4 + 9) = √24 = 2√6
to dostajemy 2 pierwiastki z 6, czyli znowu mijanie się z prawdą 🤨. Z tego względu znowu śmiem twierdzić, że to w tabelce jest zaszyty kolejny błąd i prawdopodobnie trzeba by poprawić właściwy składnik, tak aby wyszło dokładnie 24 ℹ️.
Algorytmy tak już działają, że jeden błąd w postępowaniu krok po kroku i otrzymujemy błędny wynik 😜!
STRONA 233
A tu z kolei mamy "wybrakowanie" w postaci nawiasów, które jak wiemy, mają ogromny wpływ na otrzymywany wynik z powodu wyższego priorytetu w kolejności wykonywania 🫵.
Strona #233 pokazuje pewne wyliczenia w opisie rozwiązania zadania opatrzonego numerem 10.2. Proste pytanie: ile jest równe poniższe wyrażenie?
3 + 4 + 5/3 = ?
Książka "twierdzi", że to wynosi 4. Wynosiłoby, gdyby nie jeden brakujący szczegół 👇:
(3 + 4 + 5)/3 = 4
Nie ma nawiasów 💥! A z racji tego, że w matematyce każdy szczegół ma znaczenie, tak i teraz ja zwracam na to uwagę. Tym bardziej, że ja od razu wywnioskowałem, że to nie jest dzielenie sumy składników przez 3, tylko zwykła suma składników, a ostatni z nich jest ułamkiem.
Dosłownie wers niżej jest kolejne mylące wyrażenie. To samo pytanie: ile to się równa?
3 + 4 + 5 + 5 + 5/5 = ?
I znowu źle ❌! Nie 4.4! Bo aby wynik wynosił 4.4, to musiałoby być napisane tak:
(3 + 4 + 5 + 5 + 5)/5 = 4.4
A w podanej postaci bez nawiasów, wynik jest równy 18 😅.
"GOTOWIEC" PRZYNOSZĄCY NA TACY BŁĄD SKŁADNIOWY
Nikt nie lubi błędów w kodach źródłowych. Zwłaszcza w podawanych przykładach, w których człowiek zakłada, że zadziała na 100% 💯. Niestety fakty są nagie - uruchomienie niektórych przepisanych z książki kodów źródłowych (w języku Python), spowodowałoby błędy składniowe🔥. Piszę "niektóre", bo nie wszystkie nie wszystkie dotyczą kategorii błędów składniowych. 2 istotne błędy w formie zapisu, to 👇:
- niepoprawne użycie funkcji wypisującej komunikaty w konsoli, "print",
- niepoprawne wcięcia instrukcji.
Pierwszy punkt generujący problem 1️⃣, to podstawowe wywołanie funkcji "print", które jest źle napisane i które rozchodzi się na całą treść książki 😬. Zobaczysz zapisy w takim stylu:
print xa powinny wyglądać tak:
print(x)i to dotyczy każdego przypadku 😑. Po prostu zostało raz źle zapisane i potem w takiej formie skopiowane we wszystkie miejsca.
Drugim powodem występowania błędu już u części instrukcji 2️⃣, to niepoprawne wcięcia. Python jest bardzo wyczulony na "taby", które w tym języku określają "przynależność" instrukcji do danego bloku funkcji, czy instrukcji warunkowej. W jednym przypadku zdarza się, że instrukcje powinny być wcięte, bo np. dotyczą zmiennych lokalnych, a innym razem jest o jedno za dużo i nie zgadza się "z poziomem" słów kluczowych budujących instrukcję warunkową.
Już jako dygresja, na str. #182 też jest taki fragment kodu, który może powodować z kolei wystąpienie błędu w trakcie działania 💥. Postać nie uwzględnia przypadku, gdy spełniony jest warunek dla pierwszego rzędu bądź kolumny, ponieważ jest odwoływanie się do poprzedniego rzędu i kolumny ("minus jeden"). Wówczas doszłoby do wyjścia poza tablicę i zgłoszenia wyjątku przez Pythona 💣!
Miej to na uwadze, jak będziesz studiował(a) opisane w książce przykłady, bo niestety są naszpikowane wieloma takimi artefaktami 😔.
GALIMATIAS NA PEŁNYCH OBROTACH
To dało mi najbardziej do wiwatu 💥. Konkretnie to strona #138. Rozgryzałem po kolei zasadę działania algorytmu Dijkstry, aż trafiłem na tę stronę, która wymaga bezdyskusyjnej obróbki 🔧.
Występuje takie zdanie 👇:
"Stary koszt dotarcia do węzła A wynosi 6"a na rysunku poniżej gołym okiem widać, że trasa wyznacza drogę do mety, więc gdzie do węzła A 🤔? Tekst nie odzwierciedla aktualnego stanu grafu zaprezentowanego na rysunku poniżej.
Według mnie, ten napis powinien brzmieć tak:
"Koszt dotarcia do mety wynosi 7"Ponadto wynik kosztu dotarcia do węzła A wprowadza w zakłopotanie ❓. Na poprzedniej stronie jest 5, potem tymczasowo jest ustawione na 6, a po rysunkach grafów znowu nagle staje się "piątką" 🤨. Nie ma jak rozróżnić zapisów "na boku" (jak w brudnopisie) od tych, które są aktualnym stanem rzeczy na grafie 😅.
Najbardziej rozproszyły mnie te niespójności 😖. Strzałki zwrócone w stronę rysunków sugerują, że tekst prezentuje aktualną sytuację, a sam tekst temu przeczy i przedstawia co innego. Po mojemu, powinno się jeszcze raz przejrzeć i przeanalizować cały moment tłumaczenia tego zagadnienia, aby wiedzieć co poprawić, aby to miało ręce i nogi ✅. Jeżeli nie teksty, to rysunki 🎨.
Aby to sobie ułożyć w głowie, musiałem przebieg całego algorytmu od początku do końca narysować na wielkiej kartce A4 😏.
DODATKOWE UWAGI
Tutaj są 2 poboczne uwagi, które już nie dotyczą samej treści co w niej uważam za wymagające poprawy.
KUSI, BY ZAJRZEĆ
Nie żeby mi to sprawiało jakieś cierpienie, aczkolwiek osobiście nie lubię, jak mam wykonać jakieś ćwiczenie, które na tej samej stronie, parę linijek niżej, ma napisane rozwiązanie 🙂. Choć nie da się zaprzeczyć, że w książce "Algorytmy. Ilustrowany przewodnik", odpowiedzi zwykle znajdują się na samym końcu książki, to jednak na stronach 👇:
- #14,
- #124,
- #157,
- #194.
widać wyjątki odstające od reguły ℹ️. Weź spróbuj nie patrzeć na rozwiązanie 😄!
REPLAY
Teraz dla wyjątku uwaga o charakterze bardziej żartobliwym 🤭. Na stronach #80 i #81, fraza "wyobraź sobie" pojawia się aż 5 razy 😁! Kto nie wierzy, niech policzy 😊! A na stronie #91 jest fraza "w takiej sytuacji", która...występuje dwukrotnie w jednym akapicie i które dzieli je tylko jedno zdanie 🙃!
Fajnie to brzmi, jak szybko przeczytasz treść na podanych stronach 😉.
CZY KSIĄŻKA "ALGORYTMY. ILUSTROWANY PRZEWODNIK" JEST WARTA ZAKUPU?
Jak najbardziej ❤️! Tytuł "Algorytmy. Ilustrowany przewodnik" jest znakomitym wejściem w świat algorytmiczny, który nie oczekuje od Czytelnika żadnej dotychczasowej wiedzy z algorytmiki (jedynie programowania na poziomie podstawowym) 👍.
Wiele zagadnień jest tłumaczonych "na chłopski rozum" i jeżeli przymknie się oko na te błędy w kodach źródłowych, to naprawdę nie zawiedziesz się na lekturze 🎯. Po przeczytaniu jej ze zrozumieniem, poczujesz się znacznie mądrzejszy(-a) 🧠.
Jeżeli naprawdę chcesz, aby ta wiedza została w głowie, a nie radzisz sobie z jakimś tematem po samym jego przeczytaniu, to poradzę Ci to samo, co ja zrobiłem 💡. Przeanalizuj sobie działanie każdego algorytmu, narysuj przebieg iteracji na kartce i potem najważniejsze, spróbuj napisać samodzielnie kod w innym języku niż Python (wspomagając się podanym kodem, oczywiście 😉) 💪! Wtedy będzie łatwiej Ci zrozumieć wątek, na którym utknąłeś/utknęłaś i próba zapamiętywania setek instrukcji odejdzie do lamusa 🚀!
![]() |
Lektura "Algorytmy. Ilustrowany przewodnik" wyjaśnia podstawowe zagadnienie z algorytmiki powoli, ze szczegółami. Jest znakomitym wyborem dla osób, które nie mają pojęcia o algorytmice i nie mają ochoty zaczynać od skomplikowanej terminologii "oblepionej" wzorami matematycznymi.
Tak brzmi moja recenzja 🏁! Może się wydawać, że algorytmy nie są ważnym tematem, skoro nie znajduje się jej w wymaganiach w większości ofert pracy ℹ️. Moim skromnym zdaniem, naprawdę warto mieć jakieś pojęcie o tej porcji wiedzy, która co prawda nie stoi na drodze do nauki samego programowania czy nawet znalezienia zatrudnienia (chociaż ja miałem jedno pytanie na rozmowie sprawdzające wiedzę z algorytmów), natomiast warto znać zestaw sprawdzonych patentów na dany problem. Nie tylko przyspieszysz swoją pracę nad aplikacją, lecz także pokażesz, że znasz algorytmy, a to tylko będzie rosło w oczach Twojego zespołu 🏆. Książka "Algorytmy. Ilustrowany przewodnik" jest takim pierwszym poziomem wtajemniczenia, którą każdy adept informatyki powinien przynajmniej szybko "oblecieć" 📖. Mimo, iż już ma parę lat, to przekaz wiedzy w takiej formie jest genialny i tytuł w pełni zasługuje na ponowne wydanie 💙!
