Wpis z mikrobloga

Z czego i jak się uczyć pythona edycja trzecia #programowanie #naukaprogramowania #python

██░███░░░░██░████████░██████░░░██████░░
██░████░░░██░░░░██░░░░██░░░██░██░░░░██░
██░██░██░░██░░░░██░░░░██████░░██░░░░██░
██░██░░██░██░░░░██░░░░██░░░██░██░░░░██░
██░██░░░████░░░░██░░░░██░░░██░░██████░░

To już (dopiero?) trzecia edycja tego wpisu:
Pierwsza eycja (ponad 7 lat temu) - https://www.wykop.pl/wpis/9876900/python-naukaprogramowania-programowanie-wstep-pod-/
Druga edycja (prawie 4 lata temu) - https://www.wykop.pl/wpis/30616039/wstep-to-jest-uaktualniona-wersja-wpisu-popelnione/

Intencja - Zebrać w jedno miejsce dobre rady i materiały do nauki pythona tak żeby łatwo było komuś je polecić lub sobie je przypomnieć

Jak ktoś ma ochotę jakoś mi podziękować za ten wpis to poza plusikiem można rzucić follow na https://www.twitch.tv/aseeon gdzie niedługo zacznę streamować trochę programowania w pythonie - for fun and giggles.

██████░░██░░░░██░████████░██░░░██░░██████░░███░░░░██░██░░░░██░
██░░░██░░██░░██░░░░░██░░░░██░░░██░██░░░░██░████░░░██░░██░░██░░
██████░░░░████░░░░░░██░░░░███████░██░░░░██░██░██░░██░░░████░░░
██░░░░░░░░░██░░░░░░░██░░░░██░░░██░██░░░░██░██░░██░██░░░░██░░░░
██░░░░░░░░░██░░░░░░░██░░░░██░░░██░░██████░░██░░░████░░░░██░░░░

Nie minęło ledwo 7 lat i w końcu można powiedzieć, że warto się uczyć i korzystać tylko z wersji 3 pythona. Najczęściej produkcyjnie używaną wersją jest 3.6. Do nauki proponuję używać najnowszej stabilnej wersji 3.X którą akurat znajdziecie na stronie python.org kiedy czytacie ten wpis.

Na ten moment to Python 3.10.1 wydany 6 Grudnia.

███░░░░██░░█████░░██░░░░██░██░░░██░░█████░░
████░░░██░██░░░██░██░░░░██░██░░██░░██░░░██░
██░██░░██░███████░██░░░░██░█████░░░███████░
██░░██░██░██░░░██░██░░░░██░██░░██░░██░░░██░
██░░░████░██░░░██░░██████░░██░░░██░██░░░██░

1. Uczcie się tylko z materiałów do Pythona 3 - zwłaszcza na początku drogi programistycznej
2. Łatwiej przyswaja się wiedzę jak nie robi się cały czas dokładnie tego samego. Pisanie własnych projektów warto przeplatać rozwiązywaniem zagadek, czytaniem książek czy też oglądaniem filmów instruktażowych.
3. Zanim się zapyta o rozwiązanie jakiegoś problemu trzeba koniecznie podejmować próby samodzielnego rozwiązania, wtedy się człowiek nauczy najwięcej. Nie mówiąc już o tym, że znacznie mądrzej się wtedy zadaje pytania.
4. Ćwiczenie języka angielskiego w celu (minimum) swobodnego uczenia się z anglojęzycznych materiałów jest najbardziej niedocenianym skillem przez ludzi którzy zaczynają się uczyć. A to, gdy raz opanowane, zaowocuje pozytywnie na całą waszą naukę i karierę. Naprawdę warto.
5*. Punkt z gwiazdką (dla chętnych) - w miarę możliwości raźniej jest realizować projekty w małych grupach, wymieniać się doświadczeniani. Duże grupy rozmywają poczucię obowiązku i jest takie "ktoś inny to zrobi", ale małe grupy programistyczne potrafią się fajnie wspierać i budować wiedzę. Masa redditów, discordów i grup facebookowych może przyjść z pomocą!

███░░░░███░░█████░░████████░███████░██████░░██░░█████░░░██░░░░░░██░░░░██░
████░░████░██░░░██░░░░██░░░░██░░░░░░██░░░██░██░██░░░██░░██░██░░░░██░░██░░
██░████░██░███████░░░░██░░░░█████░░░██████░░██░███████░░████░░░░░░████░░░
██░░██░░██░██░░░██░░░░██░░░░██░░░░░░██░░░██░██░██░░░██░███░░░░░░░░░██░░░░
██░░░░░░██░██░░░██░░░░██░░░░███████░██░░░██░██░██░░░██░░███████░░░░██░░░░

▓▓ Ta Pierwsza Książka - wybierzcie sobie jedną która wam pasuje.

W tym zestawieniu są 3 opcje do wyboru - Najlepsza ogółem, najlepsza dla doświadczonych i najlepsza dla super-początkujących

a) Python Crash Course - 2 Edycja autorstwa Erica Matthesa

Bardzo dobra pozycja ogólnego zastosowania. Mocno polecam! 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.pl/Python-Crash-Course-Hands-Project-Based/dp/1593279280/

b) Python Distilled - David M. Beazley

Najlepsza opcja dla ludzi którzy programują już w jakimś innym języku i chcą się douczyć pythona. Jeden z najbardziej utalentowanych programistów i wykładowców pythona zamknął w tej (ogromnej) książce niesamowite pokłady wiedzy. Książka zawiera całą podstawę języka od A do Z.
https://www.amazon.pl/Python-Essential-Reference-Beazley-David/dp/0134173279

c) Automate the boring stuff with Python - 2 Edycja autorstwa Ala Sweigerta

A tutaj najlepsza alternatywa jak z komputerem do tej pory mieliśmy tyle wspólnego co odpalenie worda. Kod w książce bywa mocno nie-pythonowy, ale to jest do nadrobienia drugą książką. Przy cenie wachającej się od 0 cebulionów (gdy czytamy online) to solidna pozycja dla super-początkujących.
https://www.amazon.pl/Automate-Boring-Stuff-Python-2nd/dp/1593279922/
Za darmo do czytania online na https://automatetheboringstuff.com/

▓▓ Ta Druga Książka - wybierz jedną

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) Effective Python 2 edycja - Brett Slatkin

Wtedy wchodzi ta książka, cała na biało, z dużym ładunkiem wiedzy i praktycznych przykładów. Napisana relatywnie lekkim językiem i bardzo sensownie ułożona.
https://www.amazon.pl/Effective-Python-Specific-Write-Better/dp/0134853989

b) Pythonic Programming - Dmitry Zinoviev

Książka mam wrażenie, że jest gorzej zorganizowana niż pierwsza opcja, ale zawiera masę dobrych rad, jest na bierząco i wydaje się godna polecenia jak komuś nie pasuje pierwsza opcja.
https://www.amazon.pl/Pythonic-Programming-Becoming-Idiomatic-Programmer/dp/168050861X

▓▓ Kolejne książki - kolejność jest realtywnie dowolna, zależnie co nas najbardziej zainteresuje w danej chwili

1) Serious Python - Julien Danjou

Książka zgodnie z nazwą wchodzi w wiele poważnych tematów - dobre praktyki dokumentacji, organizacji modułów, bibliotek, frameworków, dystrybucja softu, programowanie funkcyjne, unit testing, performence, skalowanie i inne. Bardzo mądry gość ją napisał!
https://www.amazon.pl/Serious-Python-Black-Belt-Deployment-Scalability/dp/1593278780

2) Fluent Python 2 edycja (jest zapowiedziana na 1 kwietnia 2022) - 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. Jest to jedna z najlepszych książek programistycznych jakie kiedykolwiek czytałem. Doskonała pozycja.
https://www.amazon.pl/Fluent-Python-Concise-Effective-Programming/dp/1492056359

3) Object-Oriented Python - (ekstremalnie świeża książka, jeszcze jej całej nie przeszedłem) - Irv Kalb

Kapitalnie zapowiadająca się pozycja skupiająca się na programowaniu obiektowym. A do przedstawiania przykładów używa programowania gier i programów okienkowych. Moim zdaniem - warto!
https://nostarch.com/object-oriented-python
https://www.amazon.pl/Object-Oriented-Python-Master-Building-Games/dp/1718502060

▓▓ Video i Kursy

W tej edycji mam do polecenia 3 darmowe kursy/kanały i 2 płatne (wspierające wiedzą)

a) CS50's Introduction to Programming with Python
Wersja kursu opartego o słynne harvardowe CS50 oparta na Pythonie. Świetny wstęp który można uzupełnić filmami na YT (wpisz CS50)
https://www.edx.org/course/cs50s-introduction-to-programming-with-python

b) Kanał YT ArjanCodes
Polecam cały kanał, gość porusza cały szereg różnych tematów - nawet takie super dogłębne i zaawansowane. Można się nauczyć bardzo wiele.
https://www.youtube.com/c/ArjanCodes

c) Intro to Data Structures and Algorithms
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.
https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513

d) Python Best Practices for Code Quality
Seria filmów omawiająca najpotrzebniejsze aspekty podnoszenia jakości kodu i ułatwiania jego utrzymania - pep, pylint, dokumentacja, typowanie.
Czas trwania: 1h 10m
https://www.pluralsight.com/courses/python-best-practices-code-quality

e) Managing Python Packages and Virtual Environments
Seria filmów ujcząca organizacji i zarzadzania wieloma paczkami i wieloma wersjami wirtualnych środowisk. Od podstaw i pipa, przez toxa aż po pipenva i poetry. Bardzo dobry zestaw narzędzi jest umówiony.
Czas trwania: 1h 29m
https://www.pluralsight.com/courses/managing-python-packages-virtual-environments

███████░██████░░██░░░░██░████████░░██████░░██████░░
██░░░░░░██░░░██░░██░░██░░░░░██░░░░██░░░░██░██░░░██░
█████░░░██░░░██░░░████░░░░░░██░░░░██░░░░██░██████░░
██░░░░░░██░░░██░░░░██░░░░░░░██░░░░██░░░░██░██░░░██░
███████░██████░░░░░██░░░░░░░██░░░░░██████░░██░░░██░

▓ Edytory

a) Sublime Text 4
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, zwłaszcza tym którzy potrzebują szybkiego narzędzia albo mają słabszy sprzęt.

b) Visual Studio Code
Pomimo, że dalej nie trawię edytorów wykonanych na electron.js i pisanych w javascripcie, twórcy VSCode (microsoft) odwalili kawał dobrej roboty. Świetne extensiony do pythona, rozbudowana społeczność, wszystko idzie znaleźć lub się dowiedzieć.

▓ 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 ~10 lat.

███████░░█████░░██████░░░█████░░███░░░░██░██░░█████░░
░░░███░░██░░░██░██░░░██░██░░░██░████░░░██░██░██░░░██░
░░███░░░███████░██░░░██░███████░██░██░░██░██░███████░
░███░░░░██░░░██░██░░░██░██░░░██░██░░██░██░██░██░░░██░
███████░██░░░██░██████░░██░░░██░██░░░████░██░██░░░██░

"Pełniejszą" listę stron z zadaniami można znaleźć w moim starym wpisie tutaj -> https://www.wykop.pl/wpis/10387894/lista-stron-z-zadaniami-i-wyzwaniami-programistycz/

▓▓ Zagadki

a) Codewars
Ale się ta stronka przez lata wyrobiła. Śmiało mogę polecić, bardzo dobry user experience!
https://www.codewars.com/

b) Codechef
Bardzo niedoceniana strona z wieloma świetnymi wyzwaniami. Toporny interfejs, ale warto dać jej szanse!
https://www.codechef.com/

▓▓ Pomysły na projekty

a) Chanowe wyzwania programistyczne
Lista która swoją historię zaczęła od 4chanów i innych chanów jest wiecznie żywa, dzisiaj mam taką wersję!
https://raw.githubusercontent.com/Agrendalath/Programming-Challenges-v1.4/master/challenges.jpg

b) Karan's Mega Project List
Jest w każdym zestawieniu i prawdopodobnie będzie w każdym następnym, pomysły na projekty są dość uniwersalne i wieczne, a to jest jedno z najlepszych zestawień jakie widziałem.
https://github.com/karan/Projects

██░░░░██░██░░░░░██░░█████░░░██████░░██░
██░░░░██░██░░░░░██░██░░░██░██░░░░░░░██░
██░░░░██░██░░█░░██░███████░██░░░███░██░
██░░░░██░██░███░██░██░░░██░██░░░░██░██░
░██████░░░███░███░░██░░░██░░██████░░██░

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

Przepraszam za ASCII, zwłaszcza jak się komuś źle wyświetla, ale taką miałem zachciankę i nie mogłem się powstrzymać xD

MIŁEJ NAUKI!
  • 109
@aseeon_: bardzo fajne zestawienie, sam zaczynam pracę w zawodzie (akurat mi się w Javie udało), ale mimo wszystko domyślnie chciałbym pisać w Pythonie/AI. Od siebie jeszcze bym dodał adventofcode.com, fajna sprawa żeb y poznawać różne algorytmy i nauczyć się kombinować
@aseeon_: Mialem pisac ze Fluent Python to jedna z najlepszych ksiazek jakie przeczytalem w zyciu i widze ze sie zgadzamy. :) Sledze autora i niestety druga edycja zostala juz kilkukrotnie przesunieta ale mam wczesny dostep i moge potwierdzic ze jest na co czekac. Osobiscie jeszcze bym polecil Code Clean in Python dla poczatkujacych.
w sam raz, gdy zaczalem nauke! szukajac materialow trafilem na dwa poprzednie wpisy takze Crash Course mam juz w polowie przerobiony i jestem zadowolony. Dzieki za update, bede korzystal! (mam nadzieje, ze wytrwam :P )
@jerry_owies: w kilku książkach znajdziesz jakieś rozdziały na te tematy, w Python Crash Course od strony Djangowej, w Serious Python jest takie szersze omówienie zarządzania relacyjnymi bazami danych.

Nie znam dedykowanej pozycji tylko do tego tematu, ale ogólnie to jak chcesz poznać dogłębnie to najpierw się uczysz samego SQLa i tej konkretnej bazki co potrzebujesz (polecam PostgreSQL) a później sprawdzasz jak się tego używa z Pythona.

A jak potrzebujesz po prostu