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!
  • 112
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@aseeon_: dzieki za liste książek, sprawdze 'Pythonic Programming' i 'Serious Python' bo nie znałem. Również polecam fluent python, ilość wiedzy ogromna. Z kanałow na yt ciekawe materiały ma też 'mCoding', niestety ostatnio mało filmów wrzuca ( ͡° ʖ̯ ͡°)
  • Odpowiedz
@aseeon_: ukończyłem 100 days of coding python bootcamp oraz dodatkowe szkolenie z analizy danych z użyciem pandas. Prywatnie zrobiłem jeden projekt bota do krypto i obecnie pracuje nad czymś w rodzaju przeglądu portfela zysk/strat. Mógłbyś doradzić co zrobić żeby iść za ciosem i ruszyć z karierą w programowaniu, na rynku są oferty ale w większości dla seniorów z doświadczeniem. Nie chciałbym aby cała nauka przepadła, w obecnej pracy się przydaje
  • Odpowiedz
@aseeon_: A jak bardzo ten Python Distilled sięga w zaawansowane tematy? Podstawowe obeznanie w języku znam, umiem na szybko skrypt zaklepać, ale problemy mam jak zaczynam myśleć o tym, czy coś będzie działać wystarczająco szybko, albo co tak właściwie dzieje się pod spodem (umiem jedynie sobie wyobrażać, co się dziać może)
  • Odpowiedz
@Sachees: Ok to w takim razie sobie przeglądnij Effective Python tak na szybko żeby zobaczyć jak to jest po pythonowemu. A później Fluent Python (wtedy się dowiesz jak działa pod spodem) i Object Oriented Programming, to zobaczysz jak się robi OOP w Pythonie
  • Odpowiedz
@trzydrzwiowypentaptyk: W najprostszym rozumieniu edytor ci ma pozwolić edytować pliki, więc kolorowanie składni, podpowiedzi kontekstowe i to tyle, ja wiem że oba te edytory wymienione potrafią znacznie więcej, ale to po prostu ich dodatkowe atuty. IDE potrafi niemal wszystko, edycja, debuggowanie, testowanie, obsługa gita, bazy danych, terminali, frameworków, zdalne połączenia. Nawet doszliśmy do etapu gdzie Code Review i Pull Requesty na githubie można zrobić wygodnie przez PyCharma, o zarzadzaniu dockerami
  • Odpowiedz
@PiersiowkaPelnaZiol: A w takiej warszawskiej firmie (ale robię zdalnie ze wsi) o bardzo specyficznej branży, produkującej własne fizyczne produkty. Więcej wolę nie mówić tak publicznie, ale znowu w Pythonie i Django ( ͡° ͜ʖ ͡°)
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@aseeon_: o panie. Dać temu wpisowi tylko jednego plusa to jak splunąć Ci w twarz, ale niestety więcej się nie da. Planuję zrobić sobie ze dwa mniejsze projekty w JavaScript, a potem liznąć trochę SQLa. W trzecim kroku planowałem Javę, żeby mieć coś do back-endu i od razu jakiś grunt pod aplikacje na androida, ale po tm wpisie zacząłem zastanawiać się, czy nie obsadzić jednak mimo wszystko Pythona na trzecim
  • Odpowiedz