Wpis z mikrobloga


│ WSTĘP │

To jest uaktualniona wersja wpisu popełnionego przeze mnie ponad 3 lata temu. Zamysł jest ten sam co i wtedy. Zebrać w jedno miejsce dobre rady i materiały do nauki pythona tak żeby łatwo było komuś je polecić lub sobie je przypomnieć. Tym razem pominę literaturę nie związaną ściśle z pythonem, bo ona się generalnie nie zmieniła od tamtego czasu znacznie i jak ktoś jest zainteresowany polecanymi książkami algorytmicznymi, bazo-danowymi czy o wzorcach obiektowych i dobrych praktykach to zachęcam do kuknięcia na poprzednią wersję tego wpisu - https://www.wykop.pl/wpis/9876900/python-naukaprogramowania-programowanie-wstep-pod-/

Nie będzie również w tym wpisie książek o tematyce machine learning / data science, bo zasługują na swój własny wpis, który mam nadzieję też kiedyś popełnię.


│ TYLE PYTHONÓW │

Zanim przejdę do materiałów trzeba sobie kilka rzeczy uświadomić.
1. Istnieje wiele wersji Pythona
2. Najnowsze wersje Pythona (z serii 3.x) nie są kompatybilne wstecznie z serią 2.x
3. Część biblioteki standardowej jest wspólna, nowe części są dodawane tylko do serii 3.x
4. Część bibliotek dodatkowych działa tylko na 2.x, część działa na obu wersjach, a część tylko na 3.x

To powiedziawszy sytuacja się już jakiś czas temu wyklarowała. Na tyle dobroci zostało dodanych aż do wersji 3.6 że nawet wielu zatwardziałych zwolenników 2.7 zmiękło. Z zasady więc wszystkie nowe projekty tworzy się na 3.6 (lub po prostu najnowszym stabilnym), a większość starych w miarę czasu przepisuje się na 3.6 (lub czasem porzuca). Więc ucząc się polecam brać się za najnowszą stabilną wersję z 3 "serii".


│ JAK SIĘ UCZYĆ │

1. Mimo, że różnica między 2.7 i 3.x nie jest dramatyczna to jeżeli jest taka możliwość warto sięgać do materiałów pisanych z myślą o pythonie 3.
2. Pisanie własnych projektów jest bardzo ważne, może nawet najważniejsze, ale robienie tylko tego jest bardzo złym pomysłem. Warto dywersyfikować swoje podejście do nauki - przeplatać praktyczne kodowanie projektów rozwiązywaniem jakichś zagadek, czytaniem książek lub też oglądaniem mądrych screencastów/video tutoriali. To działa oczywiście również w drugą stronę, samo czytanie książek czy oglądanie filmów na YT nie uczyni z nikogo programisty. Każdy powinien znaleźć zestaw który dla niego działa.
3. Zanim się zapyta o rozwiązanie jakiegoś problemu trzeba koniecznie podejmować próby samodzielnego rozwiązania, wtedy się człowiek nauczy najwięcej.


│ MATERIAŁY │

░░░░░░░░ KSIĄŻKI

▓▓ Ta Pierwsza Książka

Od czegoś trzeba zacząć. Poniżej prezentuje moim zdaniem najlepsze pozycję na książki które wprowadzają w świat pythona i w świat programowania. Uczenie się z więcej niż jeden z tych książek na raz może nie być najlepszym pomysłem na świecie. Wybierzcie sobie jedną która wam pasuje, czy to ze względu na mój opis, język czy też nawet cenę i jej się trzymajcie. Jak wszędzie są lepsze i gorsze pozycje, ale i tak zawęziłem wybór do conajmniej "całkiem niezłych".

a) Python Crash Course autorstwa Erica Matthesa
Bardzo dobra pozycja dla początkujących. Mocno polecam, jak nie wiesz dokładnie od jakiej książki zacząć to nie musisz już dalej szukać! Pierwsza część książki to same podstawy pythona. Druga część to 3 praktyczne projekty, mini-gra, wizualizacja danych oraz aplikacja internetowa. Jest to trochę inne niż standardowe podejście do książek dla początkujących, gdzie zwykle unika się dodatkowych bibliotek. Myślę, że trudniej się tą książką znudzić i daje takiego praktycznego kopa do realizacji własnych projektów po jej zakończeniu.

https://www.amazon.com/Python-Crash-Course-Hands-Project-Based/dp/1593276036/
https://helion.pl/ksiazki/python-instrukcje-dla-programisty-eric-matthes,pythip.htm

b) Python Programming: An Introduction to Computer Science autorstwa Johna Zelle
Alternatywa dla wszystkich którzy cenią sobie akademickie podejście, bardzo rzetelne i systematyczne. Ta książka nie jest tak "przygodowa" jak poprzednia pozycja, ale za to porusza wiele zagadnień których nie znajdziemy w innych książkach przeznaczonych dla początkujących, szczególnie jeżeli chodzi o struktury danych.

https://www.amazon.com/Python-Programming-Introduction-Computer-Science/dp/1590282752/

c) Automate the boring stuff with Python autorstwa Ala Sweigerta

Najlepsza alternatywa dla tych którzy chcą wydać 0 dukatów lub są tak początkujący, że odpalenie excela to już nie lada osiągnięcie. Solidna pozycja wieloletniego edukatora języka Python.

https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/
https://helion.pl/ksiazki/automatyzacja-nudnych-zadan-z-pythonem-nauka-programowania-al-sweigart,autopy.htm
Za darmo do czytania online na https://automatetheboringstuff.com/

d) W Grudniu 2018 roku ma pojawić się najnowsza (5) edycja "Python Essential Reference" autorstwa Davida Beazleya. Więc możliwe, że będzie wtedy jeszcze jedna dobra alternatywa.

e) Think Python (2e) autorstwa Allena Downeya
Druga edycja całkiem dobrej książki o zacięciu akademickim używa Pythona 3. Co prawda, moim zdaniem, lepiej sięgnąć po książkę pana Zelle, ale ta książka ma niepodważalny plus, można ją mieć za darmo nawet w pdfie, bo na stronie wydawnictwa Green Tea Press jest takowy udostępniony.

https://www.amazon.com/Think-Python-Like-Computer-Scientist/dp/1491939362/
http://greenteapress.com/wp/think-python-2e/

▓▓ Ta Druga Książka

Jak już ogarniamy podstawy pythona i radzimy sobie z naklepaniem apki która "po prostu działa", wtedy nadchodzi czas żeby nauczyć się pisać idiomatycznie, to jest pisać w pythonie po pythonowemu.

a) Writing Idiomatic Python autorstwa Jeffa Knuppa
Doskonała książka, wydana niezależnie przez Jeffa, jest książką bardzo konkretną, składa się z szeregu przykładów co robić a czego nie (i dlaczego nie). Tylko tyle i aż tyle.
https://jeffknupp.com/writing-idiomatic-python-ebook/
https://www.amazon.com/Writing-Idiomatic-Python-Jeff-Knupp-ebook/dp/B00B5VXMRG/

b) Effective Python autorstwa Bretta Slatkina
Alternatywą do książki Jeffa jest ta pozycja wydana już całkowicie profesjonalnie. Jest odrobinę łatwiejsza w odbiorze i odrobinę luźniej napisana ale ciągle ma w sobie bardzo duży ładunek wiedzy.
https://www.amazon.com/Effective-Python-Specific-Software-Development/dp/0134034287/
https://helion.pl/ksiazki/efektywny-python-59-sposobow-na-lepszy-kod-brett-slatkin,efepyt.htm

▓▓ Ta Trzecia Książka

Jak już kod wychodzący z pod naszych palców jest na wskroś pythoniczny to trzeba się dowiedzieć co w tym pythonie piszczy w środku, dlaczego pewne rzeczy działają tak a nie inaczej i jak z tego skorzystać żeby nasz kod był jak najlepszy. Wtedy sięgamy po poniższą książkę, która nie ma alternatyw a jest jednocześnie jedną z najlepszych książek IT jakie kiedykolwiek czytałem i najlepszą pythonową książką stworzoną po dziś dzień.

a) Fluent Python autorstwa Luciano Ramalho
Książka gdzie czytamy o czymś co zdawało nam się, że już doskonale znamy, ale jednak okazuje się, że skrywa w sobie jeszcze trochę ciekawych tajemnic.
https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008/
https://helion.pl/ksiazki/zaawansowany-python-luciano-ramalho,e_07wh.htm

▓▓ Te N-te książki

Koniec obowiązkowych książek, ale poniżej postaram się wymienić inne ciekawe pozycje czasem przydatne w jednym konkretnym temacie a czasem po prostu rozwijające i uzupełniające informacje już gdzieś zawarte.

a) Python Cookbook autorstwa Davida Beazleya i Briana K. Jonesa
David to moim zdaniem jeden z najlepszych programistów pythona na świecie (w wolnej chwili zachęcam do pooglądania jego prezentacji z różnych konferencji). Ta książka to skondensowana wiedza pythonowa skrystalizowana w formie konkretnych fragmentów kodów. Zawiera tonę (kilkaset?) gotowców, podzielonych na kategorię z wyjaśnieniem jaki problem rozwiązują oraz dlaczego tak a nie inaczej.
https://www.amazon.com/Python-Cookbook-David-Beazley/dp/1449340377/
https://helion.pl/ksiazki/python-receptury-wydanie-iii-david-beazley-brian-k-jones,pytre3.htm

b) Python 3 Object Oriented Programming autorstwa Dustiego Phillipsa
Tytuł mówi tutaj właściwie wszystko, jeżeli ktoś ogarnia pythona ale z jakiegoś powodu nie ogarnia programowania obiektowego to może się wesprzeć tą pozycją.
https://www.amazon.com/Python-3-Object-Oriented-Programming/dp/1849511268/

░░░░░░░░ FILMY

Nie samym tekstem człowiek żyje. Czasem warto sobie coś oglądnąć choćby dla samego urozmaicenia sobie nauki czy też powtórzenia jakiegoś już wcześniej przerobionego zagadnienia.

a) Introduction to Python autorstwa Jessici McKellar
Dobra seria filmów dla bardzo początkujących, świetny materiał do oglądania na zmianę z czytaniem pierwszej książki i eksperymentowaniem z pierwszymi programami.
Czas trwania: 3.5h
http://shop.oreilly.com/product/110000448.do

b) Working with Algorithms in Python autorstwa George'a Heinemana
Wstęp do algorytmiki bogato przedstawiony przykładami Pytohnowymi. Kod na filmach nie jest najbardziej pythonowym jaki widzieliście, ale wiedza algorytmiczna jest solidna, także warto.
Czas trwania: 8.5h
http://shop.oreilly.com/product/110000667.do

c) The Python Developer's Toolkit autorstwa Ekkera
Krótka seria filmów prezentująca absolutnie niezbędne narzędzia dla każdego, prawdziwego, pythonowego programisty. Przykładowe omawiane narzędzia to pip, virtualenv czy debugger.
Czas trwania: 2.5h
https://www.pluralsight.com/courses/python-developers-toolkit


│ EDYTOR/IDE │

Nie będę się jakoś strasznie rozpisywał, jak ktoś ma wyrobione zdanie to i tak go nie przekonam, a jak ktoś nie ma to może po prostu zobaczyć która z poniższych opcji mu pasuje.

▓▓ Edytory

a) Sublime Text 3
Bardzo dobrze wykonany edytor obsługujący wiele języków ale szczególnie dobrze radzący sobie z pythonem (z pomocą doskonale napisanych pluginów). Polecam z czystym sercem.
https://www.sublimetext.com/3

b) Visual Studio Code
Osobiście nie trawię edytorów wykonanych na electron.js i pisanych w javascripcie. Niemniej jak ktoś by bardzo chciał spróbować to VSCode jest najlepszym z nich i ma całkiem dobrą wtyczkę do Pythona.
https://code.visualstudio.com/

c) VIM/GVIM/NEOVIM
Stary dobry vim, co tutaj się rozpisywać, dobrze skonfigurowany i dopluginowany poradzi sobie z każdym językiem a Python nie jest wyjątkiem od tej reguły. Jak ktoś lubi to nie musi zmieniać, jak ktoś nie lubi, to warto chociaż zobaczyć, ale nie ma się też co zmuszać.
https://www.vim.org/
https://neovim.io/
https://spacevim.org/

▓▓ IDE

Na rynku są teoretycznie 3 rozbudowane IDE - PyCharm, Wingware IDE i Komodo IDE. W praktyce już od dłuższego czasu liczy się tylko PyCharm, on wyznacza trendy i jest zdecydowanie najlepszy z całej bandy. Polecam go tak mocno jak tylko mogę polecić. Uzywam komercyjnie i hobbistycznie od wielu wielu lat. Zachęcam do zapoznania się ze stroną tegoż produktu:
https://www.jetbrains.com/pycharm/


│ ZADANIA I PROJEKTY │

Jak już wspominałem, warto sobie naukę urozmaicać, pisać własne projekty i projekciki, czytać książki i oglądać filmy. Warto też czasem rozwiązać jakąś programistyczną zagadkę czy zrealizować projekt który ktoś inny wymyślił.

▓▓ Zagadki

https://www.hackerrank.com/
http://www.codechef.com/

▓▓ Projekty

https://warosu.org/data/g/img/0441/94/1410874830625.png
https://github.com/karan/Projects

Więcej (dużo) można znaleźć tutaj -> https://www.wykop.pl/wpis/10387894/lista-stron-z-zadaniami-i-wyzwaniami-programistycz/


│ UWAGI KOŃCOWE │

Python to doskonały język na początek i P O T Ę Ż N Y towarzysz naszej całej kariery programistycznej, jest przydatny i pomocny w tak wielu sytuacjach, że nie sposób ich wszystkich wymienić. Dodatkowo uczenie maszynowe i analiza danych są tak mocnymi ostojami Pythona, że nie da się go stamtąd usunąc mimo iż wielu próbowało :)

Interesuj się i bądź na bieżąco:
https://www.reddit.com/r/learnpython
https://www.reddit.com/r/python
http://wykop.pl/tag/python


#python #naukaprogramowania #programowanie
  • 158
@jack_:
ad 1) wiedziałem, że o czymś zapomniałem
ad 2) bo to kupa na kiju i nie zamierzam tego promować nawet w tak małym stopniu ( ͡° ͜ʖ ͡°)

Nie będzie również w tym wpisie książek o tematyce machine learning / data science, bo zasługują na swój własny wpis, który mam nadzieję też kiedyś popełnię.


@Bezzalogowy: Ej no we wstępie napisałem, że:
Nie będzie również w