Najnowsze artykuły
- ArtykułyLiteracki kanon i niezmienny stres na egzaminie dojrzałości – o czym warto pamiętać przed maturą?Marcin Waincetel16
- ArtykułyTrendy kwietnia 2024: młodzieżowy film, fantastyczny serial, „Chłopki” i Remigiusz MrózEwa Cieślik2
- ArtykułyKsiążka za ile chcesz? Czy to się może opłacić? Rozmowa z Jakubem ĆwiekiemLubimyCzytać2
- Artykuły„Fabryka szpiegów” – rosyjscy agenci i demony wojny. Polityczny thriller Piotra GajdzińskiegoMarcin Waincetel2
Popularne wyszukiwania
Polecamy
Sunil Kapil
1
4,3/10
Pisze książki: informatyka, matematyka
Ten autor nie ma jeszcze opisu. Jeżeli chcesz wysłać nam informacje o autorze - napisz na: admin@lubimyczytac.pl
4,3/10średnia ocena książek autora
9 przeczytało książki autora
10 chce przeczytać książki autora
0fanów autora
Zostań fanem autoraKsiążki i czasopisma
- Wszystkie
- Książki
- Czasopisma
Najnowsze opinie o książkach autora
Czysty kod w Pythonie Sunil Kapil
4,3
Nie polecam nikomu, ta książka to typowy skok na kasę, który mało co tłumaczy, a u świeżego programisty może jeszcze zaszkodzić. Autor w ogóle nie szanuje czytelników, którzy za tę książkę przecież płacą. Jeżeli szukasz dobrej książki o pythonie to polecam "Python. Wprowadzenie" M. Lutz - dużo grubsza, ale bez błędów.
Przykładowy kod był pisany na kolanie i nikt nawet nie zadał sobie trudu sprawdzenia czy jest poprawny. Nie będę wypisywał wszystkich błędów które znalazłem, poniżej tylko kilka uwag.
Plusy:
- przyjazny wstęp do programowania asynchronicznego, ale to samo jest w internecie za darmo (chociażby dokumentacja biblioteki asyncio),- w miarę dobrze wytłumaczone podstawy generatorów i iteratorów,
Minusy:
- rozdział 1 to skrót z PEP8, PEP8 jest za darmo, jest krótki i przejrzysty,
- rozdział o testach nic nie tłumaczy i nic z niego nie wynika: podane 2 biblioteki i tyle, na pierwszym lepszym blogu są bardziej szczegółowe informacje i również za darmo,
- autor wielokrotnie powtarza to samo, jakby na siłę zwiększał objętość. Naprawdę te 176 stron czyta się w 2 dni, bo tak mało jest treści,
- masa błędów w przykładach kodu (pomimo korekty merytorycznej),który po prostu w wielu wypadkach nie działa: literówki, pomylone warunki, błędnie zapisane funkcje/klasy, przykłady kodu nie będące przykładami tego, o czym autor pisze, itd, itp, często na raz. Poniżej podaję kilka, po 76-tej stronie dałem sobie spokój.
Błędy:
- str. 20 - wytłumaczenie punktu "Be consistent in return statements." z PEP8 wprowadza więcej bałaganu, sugeruje fatalne praktyki i współczuję każdemu, kto będzie musiał poprawić/modyfikować kod napisany w ten sposób,
- str. 22 - przykłady kodu z protokołem managera kontekstu, "poprawny" kod nie działa: metoda __enter__ nie zwraca self, a musi, skoro jest używana jako fabryka w instrukcji 'with .. as ..'; w bloku instrukcji 'with NewProtocol(host, port) as con' autor wywołuje metody instancji klasy NewProtocol jak zwykłe funkcje, podczas gdy powinien odnieść się do obiektu instancji 'con',
- str. 34, listing 1.27 - kod w odniesieniu do listingu 1.26, który robi dokładnie do samo, bo najprawdopodobniej został odwrócony warunek, zapisany wynik funkcji jest błędny, na co również zwrócił uwagę inny czytelnik na forum wydawcy,
- str. 51, listing 2.14, przykład użycia funkcji zip() w innej funkcji, błędy: zdeklarowanie zmiennej "users" i przypisanie do niej wartości, ale ta sama zmienna jest deklarowana 4 linijki niżej jako "users=[]", do funkcji zip przekazywane są argumenty "user_names" (nigdy nie zdeklarowana, ale miało to być chyba to pierwsze "users", i "user_salaries", również nie zdeklarowana, mamy za to "user_salary" (sic!) deklarowane w 2 linijce,
- str. 72, listing 3.18 - tu można zapisać kartkę a4. Odwołania do nieistniejących zmiennych, błędy w nazwach metod (inaczej nazywane, inaczej wywoływane),metody ponazywanie tak samo jak atrybuty, używanie metod w sposób niezgodny z ich przeznaczeniem i opisem (również wynika z kodu),cały przykład jest jednym wielkim błędem i masą wzajemnie się maskujących bugów,
- str. 76, listing 3.24 - wbrew temu co uważa autor NIE JEST to przykład klasy abstrakcyjnej. Jeżeli Fruit() ma być nadrzędną klasą abstrakcyjną dla Apple(),to Apple powinno być zadeklarowane jaki Apple(Fruit) - (a nie jest),a obiekt fruit stworzony jako instancja klasy Apple, a nie Fruit! Co to za klasa abstrakcyjna, skoro jest instancjonowana? Po co autor próbuje zainstancjonować klasę abstrakcyjną? Jeżeli ktoś nie zna tego pojęcia, to właśnie został wprowadzony w błąd. Co gorsza, opis tego co jest w kodzie wygląda tak, jakby autor mimo wszystko uważał, że to poprawne.
Jednym zdaniem: to, że ktoś to napisał i jeszcze chce za to pieniędzy jest po prostu śmieszne. Python ma ogromną społeczność, dużo rzetelniejsze i dokładniejsze informacje są na byle jakim darmowym blogu poświęconym Pythonowi. Strata czasu i pieniędzy, co i tak nie jest najgorsze - najgorsze jest wprowadzenie w błąd.
PS. Jeżeli ktoś szuka książki o podobnej tematyce sugeruję zainteresować się pozycją "Efektywny Python" Bretta Slatkina. Zacząłem ją czytać kilka dni po skończeniu "Czystego kodu" i muszę przyznać, że jest zdecydowanie obszerniejsza i dokładniejsza w treści, porusza praktycznie te same zagadnienia, ale dużo lepiej i dokładniej je tłumaczy, plus jak na razie natknąłem się tylko na drobne błędy wynikające z tłumaczenia kodu przed tłumacza (ale to częste w książkach Helionu).
Czysty kod w Pythonie Sunil Kapil
4,3
W samej książce jest dużo błędów, zarówno merytorycznych, jak i w kodzie. Autor myli argumenty z parametrami funkcji. Wartość domyślną parametrów nazywa kluczem. Jednak czarę goryczy przelało częste tłumaczenie autora czemu podejście A jest lepsze od podejścia B z perspektywy wyroczni. Jak można wmawiać czytelnikowi, że stosowanie namedTuple jest bardziej czytelne niż użycie podstawowych struktur danych. Prawie rzuciłem książką przy “przykładzie” dziedziczenia klas fruit i apple.
Przykłady programistyczne pisane są chyba na kolanie. Zawierają literówki, odnośniki do nieistniejących zmiennych i funkcji. Chyba sam autor nie sprawdził ich w polecanych przez siebie IDE.
Chyba najbardziej irytowało mnie powtarzanie tych samych treści w odstępie kilku stron (polecane biblioteki - pylint, opis OrderDict). Po prostu wyglądało to, jak dodawanie treści, bo było to dla autora korzystne.
Co dobrego z książki wyniosłem. Utrwaliłem sobie stosowanie konceptów takich jak __init__ oraz __str__. Same pokazanie dekoratorów, było całkiem dobrze napisane. Bardzo ciekawy przykład programowania aspektowego, którego jeszcze nie widziałem na produkcji w aplikacjach napisanych w pythonie (np: pisząc klasy z metodą __call__ można przetrzymywać stan i robić walidację).
Warto pamiętać o stosowaniu menadżera kontekstu “with”, gdyż zaoszczędzimy na tworzeniu bloków try i catch i zamyka on otwarte uchwyty do zasobów (np plików)