Blog (6)
Komentarze (50)
Recenzje (0)
@chmod700Jak nauczyć się Pythona od podstaw?

Jak nauczyć się Pythona od podstaw?

28.09.2016 23:02, aktualizacja: 04.10.2016 08:02

[image=picon]

Python jest wysokopoziomowym językiem programowania, który sukcesywnie zdobywa coraz większe zainteresowanie. Charakteryzuje się rozbudowanym pakietem bibliotek, które otrzymujemy w standardzie.

Dlaczego Python? Ponieważ jest prosty i intuicyjny. Ponadto składnia Pythona powoduje, że kod łatwo się czyta. Zresztą nie trzeba poprzestawać na znajomości jednego języka. Próg wejścia podczas nauki kolejnego będzie zdecydowanie niższy. Zatem jeśli chcesz nauczyć się programowania w Pythonie tylko nie wiesz jak zacząć, ten wpis pomoże Ci w znalezieniu pomocnych źródeł.

Należy również zaznaczyć o różnicach występujących pomiędzy Pythonem w wersji 2.x, a tym w wersji 3.x. Ostatnie wydanie wersji 2.x nastąpiło w roku 2010 - od tego czasu edycja ta ma co prawda zapewnione wsparcie jedna nie jest już rozwijana. W przeciwieństwie do 3.x, będącą na tą chwilę gałęzią, do której wciąż wychodzi nowa funkcjonalność. Jeżeli nadal ktoś jest niezdecydowany co do wybranej edycji - więcej na ten temat można przeczytać na stronie projeku. Ja skupiłem się na wersji 3.x aczkolwiek nie przeszkadza to w sprawnym posługiwaniu się starszym wydaniem.

Rzetelne przejście przez wymienione niżej pozycje zagwarantuje solidne podstawy, które pozwolą swobodnie poruszać się w przyszłych projektach. Wszystkie przedstawione przeze mnie źródła są w języku angielskim.

Od czego zacząć?

Na początek polecę pozycję, która niezwykle gładko wprowadza w zagadnienia programowania w Pythonie. Książka "A Byte of Python" autorstwa Swaroop C.H., w wersji elektronicznej, jest w pełni darmowa. Pełna kopia dostępna jest pod tym adresem. W książce prócz wprowadzenia do Pythona znajduje się wiele porównań do innych języków (Java, C++). Pozycję tą czyta się szybko, ponadto przedstawia jasne objaśnienia i dobre przykłady - zwłaszcza gdy dopiero zaczynamy przygodę z programowaniem. Książka stanowi bardzo zwięzłe wprowadzenie oraz przedstawia język w łatwy do zrozumienia sposób.

Fragment książki A Byte of Python
Fragment książki A Byte of Python

Z książek dobrych na początek sporo pozytywnych opinii słyszałem o "Learn Python the Hard Way", której autorem jest Zed Shaw. Jednak ponieważ nie miałem okazji jej przeczytać to nic ponad to nie jestem w stanie dodać.

Kurs interaktywny

Polecam również, fenomenalny według mnie, internetowy kurs Pythona na codecademy. Całość podzielono na dwanaście tematów. Każdy z nich zawiera od kilku do kilkunastu lekcji, kończących się zadaniami i przykładami. Wszystko zamknięto w niezwykle czytelnej formie. Na dodatek każdy z tematów uzupełniono o linki prowadzące do dodatkowych źródeł takich jak kolejne szkolenia, książki czy choćby niezwykle pomocne wątki społeczności StackOverflow.

Rewelacyjny kurs dostępny z poziomu przeglądarki
Rewelacyjny kurs dostępny z poziomu przeglądarki

Podstawowy kurs jest darmowy, przy czym istnieje możliwość wykupienia miesięcznej subskrypcji, która daje dostęp do dodatkowych quizów i projektów do każdego z tematów. Jednak by poznać Pythona w zupełności wystarczą możliwości konta podstawowego.

Polecam przerobienie materiału z obu wymienionych pozycji równolegle.

Python w kolejce do lekarza

Gdyby to nie wystarczyło istnieje wiele aplikacji na androida, które również oferują mniej bądź bardziej interaktywne kursy. Learn Python autorstwa SoloLearn stanowi bardzo kompetentny i darmowy kurs dostępny na urządzeniach przenośnych. Podzielony na dziewięć rozdziałów sprawnie wprowadza w meandry programowania w Pythonie i miejscami całkiem dobrze uzupełnia terminy, których zabrakło w dwóch wyżej wymienionych pozycjach.

Kurs Pythona na androidzie
Kurs Pythona na androidzie

Dodatkowe ćwiczenia

Po opanowaniu podstaw można już śmiało próbować własnych sił. Dlatego niżej przedstawiam kilka prostych programów, które można napisać samemu w ramach rozgrzewki przed większymi projektami.

  1. Symulator rzutów kością do gry. Jak sama nazwa wskazuje projekt ten zakłada napisanie programu, który symuluje rzuty kośćmi. Program wpierw powinien zapytać użytkownika o podanie ilości kości, którymi będzie rzucał. Powinien również zapytać o wielkość kości. Następnie, dla każdej kości, wygeneruje losowo liczbę z przedziału od 1 do wielkości jaką przyjęliśmy za ilość ścian. Program powinien wypisać wszystkie wyrzucone wyniki. Na koniec niech program zapyta użytkownika czy ponowić rzuty.
  2. Szablon tekstowy. Program powinien wpierw pytać użytkownika o serię słów. Gdy wszystkie wymagane dane zostaną wprowadzone, program powinien umieścić je w przygotowanym wczesniej szablonie, który następnie zostanie wyświetlony użytkownikowi.
  3. Paragrafówka. Albo inaczej tekstowa gra przygodowa. Gra powinna pozwalać użytkownikowi poruszać się po pomieszczeniach w oparciu o dane wprowadzone przez użytkownika na podstawie podanych opisów każdego pomieszczenia. Aby to stworzyć, należy ustalić kierunki, w których użytkownik może się poruszać, określić sposób śledzenia pozycji użytkownika oraz tak by móc stwierdzić jak daleko użytkownik może zajść. Innymi słowy, należy stworzyć "ściany" wokół pomieszczeń, które informują użytkownika, o tym, że nie może poruszać się dalej w danym kierunku. Ponadto gra powinna przekazywać graczowi informacje o jego otoczeniu i obecnym położeniu. Poziom rozbudowania zależy już od poziomu ambicji. Sam projekt nadal bazuje na użyciu danych wprowadzanych przez użytkownika. Może to być stosunkowo prosta gra, ale jeśli zamierzasz używać złożonych słów, kodowanie będzie znacznie trudniejsze, zwłaszcza jeśli chcesz, aby gracz mógł wchodzić w interakcję z rzeczywistymi obiektami w grze.

Własna gra

Ucząc się swojego pierwszego języka programowania warto oprzeć się na przykładach, które łatwo do nas trafią. Jeśli chcemy posortować muzykę na dysku według własnych upodobań możemy stworzyć program, który pokataloguje nasz zbiór na podstawie wybranych właściwości utworów. A jeśli interesują nas gry to czemu nie stworzyć własnej? W tym drugim przypadku polecam książkę "Making Games with Python & Pygame", której autorem jest Al Sweigart. Pozycja w wersji elektronicznej jest darmowa i dostępna z tego miejsca. Mając już pewną wiedzę na temat programowania w Pythonie, książka doskonali umiejętności na przykładzie jedenastu, dokładnie opisanych linijka po linijce, gier. Jeśli interesujemy się grami, wówczas jako suplement do już uzyskanej wiedzy sprawdzi się znakomicie. Tym bardziej, że lektura motywuje do eksperymentowania.

Fragment książki Making Games with Python & Pygame
Fragment książki Making Games with Python & Pygame

Pozostając przy temacie gier chcę również wspomnieć o dość ciekawym portalu codingame. Pomysł jest o tyle interesujący, że wymaga od nas uzupełnienia kodu dla opisanej gry bądź programu. Następnie na naszym kodzie wykonywane są liczne testy i jeśli za każdym razem został zwrócony oczekiwany wynik możemy z czystym sumieniem podjąć się kolejnego wyzwania. Bądź zabrać za refaktoryzację kodu. Same zadania są dość zróżnicowane i zahaczają o wiele pojęć związanych z programowaniem. Do tego wyzwania są uzupełniono o poziome trudności i opis poruszanych zagadnień. Dodajmy tryb multiplayer i otrzymamy oryginalny pomysł na naukę programowania. Choć na początku cele misji mogą wydawać się mało intuicyjne tak z każdą kolejną robi się coraz bardziej przytulnie.

Ciekawy pomysł na rywalizację połączoną z nauką programowania
Ciekawy pomysł na rywalizację połączoną z nauką programowania

Wszystko jest obiektem

W tym momencie będziemy dysponować już solidnymi zasobami wiedzy i doświadczenia, które przyda się w przypadku kolejnej omawianej pozycji: "Python 3 Object-oriented Programming" autorstwa Dusty Phillips. Jak sam tytuł mówi książka opisuje zawiłości programowania obiektowego. Nie jest to jednak typowa książka o Pythonie. Pierwszy rozdział nie jest prostym wprowadzeniem do języka. Zamiast tego skupia się na diagramach UML (swego rodzaju grafy - wizualizacje logiki działania programu) oraz teoriach związanych z programowaniem obiektowym. Co ciekawe, wciąż dobrze się to czyta. Dalej robi się już nieco bardziej standardowo. Bo w kolejnych rozdziałach porządnie zagłębiamy się w temat obiektowości. Pojawiają się wzorce projektowe, które warto znać. Wiele miejsca poświęcono również zagadnieniom poprawnego testowania kodu. By na koniec skupić się na dobrym zarządzaniu pamięcią, czy obsługą wielu wątków. Książka jest obszerna w przykłady i ćwiczenia i została napisana przystępnym językiem. Nie jest to jednak pozycją darmowa, a nie zamierzam reklamować konkretnego sklepu, dlatego też nie podaję linka.

Jest git

Git to darmowy, rozproszony systemem kontroli wersji oprogramowania przeznaczony do obsługi zarówno małych jak i bardzo dużych projektów. System kontroli wersji pozwala nam na śledzenie i archiwizowanie zmian w kodzie programu. A co za tym idzie pozwala cofać się w historii zmian bądź dotrzeć do autora konkretnej zmiany. Obecnie istnieje wiele projektów korzystających z repozytoriów git‑a. Dobrym miejscem na pierwsze kroki w gicie może ponownie okazać się kurs na codecademy. Jednak, moim zdaniem, lepiej i obszerniej rozwiązano to w Learn Git Branching. Kompetentny i bardzo dobrze zrealizowany kurs zgrabnie przeprowadza przez kolejne zagadnienia. Zaś wykonanie pozwala z łatwością zwizualizować sobie poziomy abstrakcji git‑a.

Graficzne wizualizacje pomagają w zrozumieniu założeń git-a
Graficzne wizualizacje pomagają w zrozumieniu założeń git-a

Co dalej?

Zacznij pisać. Refaktoryzuj kod. Poznaj wzorce projektowe. Ucz się jednego z wiodących frameworków. Wymyślaj i dodawaj nową funkcjonalność do już poznanych przykładów. Programowanie przynosi olbrzymie pokłady przyjemności i satysfakcji. Pomyśl co chcesz stworzyć? Może to jest strona do dzielenia się plikami w internecie albo odtwarzacz mp3? Albo dołącz do któregoś z otwartych projektów na GitHubie bądź innym repozytorium git‑a.

Pozycje, które wymieniłem to tylko moja sugestia. A jeśli wydaje Ci się to nudne to zacznij urzeczywistniać własne konspekty i po prostu pisz. Napotykając na problem szukaj rozwiązania na bieżąco. A kiedy skończysz satysfakcja będzie wielka.

Wybrane dla Ciebie
Komentarze (68)