article banner

Co można robić w Pythonie?

Cześć! To jest fragment książki Python od podstaw, która ma pomóc w nauce programowania od zera. Znajdziesz ją na Allegro, w Empikach i w księgarniach internetowych.

Python to jeden z najbardziej uniwersalnych języków programowania. Posiada on szereg mniej lub bardziej istotnych zastosowań, zarówno profesjonalnych, jak i hobbystycznych. Jest on podstawowym narzędziem analityków, specjalistów od sztucznej inteligencji czy inżynierów danych. Powszechnie wykorzystuje się go przy tworzeniu portali internetowych oraz automatyzacji zadań. Wykorzystują go również testerzy, twórcy gier, administratorzy systemowi oraz wsparcie IT.

Python naprawdę upowszechnił się w firmach. Jest wykorzystywany do ogromnego spektrum zastosowań, przez osoby na różnorodnych stanowiskach. Wierzę, że Ty również znajdziesz wśród z nich coś, co pomoże Ci w pracy, albo przynajmniej będzie ciekawym hobby. Pomówmy o tym, co można robić w Pythonie.

W rozdziale tym mówię o pakietach (zwanych także bibliotekami) i frameworkach. Są to pojęcia pozornie podobne, choć jednak różne. Pakiet może być rozumiany jako kod napisany przez innych programistów, który wykorzystujemy w naszym projekcie. Zwykle zawiera on przydatne funkcje i klasy, których używamy jako narzędzi. Przykładowym pakietem jest NumPy oraz pandas. Framework to potężniejszy pakiet, który zazwyczaj narzuca nam, jak ma wyglądać nasz kod. Często definiuje się go jako "szkielet" przeznaczony do budowy aplikacji. Mówi się, że programista wywołuje pakiet, a framework programistę. Przykładowymi frameworkami są Django oraz Flask.

Analiza danych

Każdego dnia zbieranych są petabajty danych, a ich analiza stanowi podstawę nie tylko w dziedzinie nauki, ale także ma kluczowe znaczenie dla wielu decyzji biznesowych. Wielkie firmy dbają o zbierane dane jak o wielki skarb, przetwarzają je, analizują, wizualizują, wyciągają na ich podstawie wnioski. Tutaj wymienić można szereg zawodów, zajmujących się tymi procesami: analitycy, specjaliści od inżynierii danych, programiści (zbierający dane), specjaliści od baz danych i wiele więcej.

Przy analizie i wizualizacji danych Python jest współcześnie właściwie standardem. Najczęściej wykorzystywane pakiety to NumPy oraz Pandas. NumPy pozwala na efektywne przechowywanie i przetwarzanie dużych zbiorów danych. Pandas dodaje do tego szereg funkcji ułatwiających przetwarzanie danych. Przy bardzo dużych zbiorach danych wykorzystuje się także PySpark.

Jak zacząć? W internecie pod hasłem2 "python for data science" lub "data analysis with python" można znaleźć wiele darmowych kursów. To bardzo dobry start. W większości skupiają się one na NumPy oraz Pandas. W następnym kroku warto sprawdzić zdobytą wiedzę w praktyce, poprzez dokonywanie analizy publicznie dostępnych zbiorów danych. Znajdziesz je pod hasłem "datasets for data science" (wiele ciekawych zbiorów danych można znaleźć na stronach kaggle.com oraz data.gov). Dla motywacji możesz założyć bloga i publikować tam wnioski ze swoich analiz.

Wizualizacja danych

Wizualizacja danych jest właściwie kontynuacją ich analizy. Aby wnioski prawdziwie przemawiały do naszych odbiorców, kluczowa jest ich dobra prezentacja. Do tej zaś mamy szereg narzędzi, od różnego rodzaju wykresów, do przeróżnych diagramów i map. Popularne pakiety do wizualizacji danych to Plotly, Matplotlib czy Seaborn.

Jak zacząć? Analiza i wizualizacja danych są silnie powiązane, więc wiele ze wspomnianych w poprzednim punkcie kursów przedstawia także pewne metody wizualizacji danych. Nie brakuje jednak także publicznie udostępnionych dedykowanych kursów na temat wizualizacji danych. Szukaj pod hasłem "data visualization python".

Uczenie maszynowe

Uczenie maszynowe to właściwie bardziej zaawansowana forma analizy i wyciągania wniosków z danych. Doskonale się sprawdza na przykład do rozpoznawania obrazu lub dźwięku, tworzenia prognoz czy przy generowaniu tekstów3.

Przy uczeniu maszynowym również Python jest standardem. Popularne pakiety to SciPy, Scikit Learn, Statsmodels, TensorFlow oraz Keras.

Jak zacząć? Uczenie maszynowe jest dziedziną w dużym stopniu opartą na matematyce i zrozumieniu, jak działają wykorzystywane modele. Polecam więc zacząć od kursów akademickich. Znaleźć je można na YouTube czy na platformach takich jak Coursera czy edX. Zwłaszcza polecam wybitny kurs Machine Learning autorstwa Andrew Ng (aktualnie dostępny za darmo na YouTubie i Coursera). W następnym kroku warto zacząć kursy nastawione na praktykę (szukaj pod hasłem "machine learning python"). Na koniec, podobnie jak przy analityce danych, kluczowa jest samodzielna praktyka i samodzielne projekty oparte na publicznie dostępnych danych.

Zbieranie danych

Są dwie zasadnicze metody automatycznego zbierania danych. Pierwszy polega na zapisywaniu w systemie akcji użytkowników lub dostarczonych przez nich informacji. Przypomina to zapisywanie przez sklepikarza, ile sprzedało się każdego z produktów. Ten sposób realizowany jest w ramach tworzenia aplikacji. Drugi to utworzenie programu, który poszukiwać będzie interesujących nas danych. Na przykład wyszuka odpowiednie hasło w Google i sprawdzi, na jakiej pozycji znalazła się nasza strona. Do tego bardzo często wykorzystuje się skrypty napisane w języku Python. Popularne pakiety to BeautifulSoup, MechanicalSoup, Scrapy, LXML, Python Requests, czy Urllib.

Jak zacząć? Polecam zacząć od technik zaprezentowanych w rozdziale Zbieranie danych ze stron, a następnie lepszego poznania wymienionych pakietów i ich możliwości.

Testowanie stron

Kiedy powstają serwisy internetowe, takie jak Facebook czy Twitter, jednym z istotniejszych działań jest upewnienie się, czy działają one poprawnie. Takie portale mają nieraz ogrom mniejszych lub większych funkcjonalności. Nie sposób ich wszystkie zapamiętać, a co dopiero sprawdzić, czy wszystkie działają idealnie zgodnie z założeniami. Dlatego przy tworzeniu serwisów internetowych bardzo ważne jest testowanie poprawności ich działania poprzez testy automatyczne.

Testy automatyczne wykonuje się na różnych poziomach. Te najbliższe naszemu kodowi, czyli testy jednostkowe, najczęściej wykonywane są w tym samym języku, w którym pisany jest serwis. Jeśli jednak chodzi o testy działania naszej aplikacji z perspektywy użytkownika, tzw. testy akceptacyjne albo testy UI, to są one pisane przez testerów, którzy często wykorzystują zupełnie inny język.

Popularną opcją jest pisanie testów w Pythonie przy pomocy Robot Framework. Jest to nakładka na popularny framework Selenium, który wspiera między innymi języki Python, Java czy JavaScript. Także popularne jest testowanie w języku JavaScript przy użyciu narzędzia Cypress.

Jak zacząć? Naszą przygodę z testowaniem w Pythonie polecam zacząć do Robot Framework (szukaj pod hasłem "robot framework tutorial").

Tworzenie serwisów internetowych

Python jest jednym z najpopularniejszych języków wykorzystywanych do tworzenia serwisów internetowych, jak to już przedstawiliśmy w rozdziale Tworzenie serwisów internetowych. Jest on wykorzystywany w części, która decyduje, jak nasz serwis powinien się zachować w odpowiedzi na zapytanie użytkownika.

Python jest wykorzystywany między innymi przez portale YouTube, Google, Instagram, Reddit, Spotify, Dropbox czy Quora.

Popularne frameworki to Django i Flask. Sam Python nie jest jednak wystarczający, by stworzyć poważny serwis. Konieczne jest także użycie języków HTML, CSS i JavaScript.

Wielu młodych programistów stworzyło świetne strony i portale internetowe. Od dłuższego czasu nie brakuje zatrudnienia przy tego typu projektach, chociażby dlatego, że niemal każdy większy biznes tworzy i rozwija portale internetowe. Co więcej, tworzenie portalu internetowego dostarcza ogrom satysfakcji — można się nim pochwalić przed znajomymi, a każda zrobiona strona przybliża nas do znalezienia pracy w branży.

Jak zacząć? Polecam zacząć od ukończenia kursu dotyczącego HTML i CSS, po czym stworzyć przynajmniej jedną stronę przy ich użyciu. Następnie możemy zacząć wykorzystywać Django lub Flask do tworzenia serwisu internetowego. Najlepiej zacznij od kursu na temat wybranego z nich, a przy nauce, twórz i rozwijaj swoje projekty. Z czasem nieuniknione jest wykorzystywanie także JavaScript, by strony nabrały życia.

Tworzenie gier

Python nie jest pierwszym wyborem przy tworzeniu profesjonalnych gier. Częściej wykorzystuje się język C++ czy C#4. Niemniej dzięki swojej prostocie i mnogości dobrych frameworków, Python jest dobrym wyborem na start, chętnie wybieranym przez mniejszych twórców. Powstały w nim między innymi Battlefield 2, Frets on Fire, World of Tanks, Disney’s Toontown Online, Vega Strike, czy Civilization IV. Popularne frameworki to PySoy oraz PyGame.

Osobiście szczególnie doceniam gry edukacyjne5. Dla przykładu wskazywanie miast na mapie wydaje się o wiele ciekawszą formą nauki niż uczenie się ich lokalizacji na pamięć. Wielu twórców udostępnia gry wizualizujące istotne modele matematyczne lub zjawiska społeczne.

Jak zacząć? Polecam zacząć tak, jak zrobiliśmy to w trzeciej części książki z grą w węża, czyli od tworzenia prostszych gier w PyGame. Na YouTubie z łatwością znajdziemy wiele kursów instruujących, jak krok po kroku napisać grę wybranego rodzaju. Dla przykładu, jeśli chcesz napisać grę typu Tower Defense, szukaj pod hasłem "tower defense python".

Robotyka

Bardzo istotnym zastosowaniem programowania jest automatyka i robotyka. Od pisania oprogramowania do wind czy samochodów, aż po działanie robotów przemysłowych czy dronów. Są to zastosowania bardzo istotne przemysłowo, choć nie jest to prosta kariera. Tutaj tworzyć można na wielu różnych poziomach.

Najniższym poziomem jest projektowanie procesorów. Tego dokonują producenci sprzętu produkowanego na masową skalę. Określają oni, jak konkretnie procesor powinien się zachowywać, po czym zamawiają wyprodukowanie dokładnie takiego sprzętu. Dzięki temu te procesory są tanie i szybkie. Takie programowanie jest jednak bardzo trudne i wykorzystuje się je w wąskim zakresie zastosowań. Niewiele jest firm w Polsce zajmujących się projektowaniem procesorów, a największą znaną mi Cadence. Definicje procesorów określa się najczęściej w języku VHDL, ale popularyzuje się wykorzystanie języka Python i pakietu cocotb.

Nieco wyższym poziomem jest pisanie programów bezpośrednio na uniwersalny procesor. To rozwiązanie znacznie bardziej popularne, gdyż takie układy wciąż są tanie i szybkie, a tworzenie oprogramowania jest znacznie łatwiejsze. Do tego standardem niegdyś był język C, obecnie jednak popularyzują się C++ i Python, które dają podobny efekt, a są prostsze w użyciu.

Wreszcie bardzo istotne zastosowanie, jakim jest oprogramowanie sprzętów elektronicznych posiadających minimalistyczny system operacyjny. Tutaj powszechne stało się wykorzystywanie układów z grupy Raspberry PI, dla których sugerowanym językiem programowania jest Python. Przez to także bardziej zaawansowane maszyny, takie jak roboty albo ramiona robota, również często oprogramowuje się w języku Python. Tak, duża część kodu wykorzystywanego w nowoczesnych fabrykach jest napisana właśnie w języku Python.

Przykładowe ramię robota. Takie ramiona są wykorzystywane powszechnie w fabrykach.

Jak zacząć? W zależności od tego, który z wymienionych poziomów Cię interesuje, inna będzie ścieżka rozwoju. Najłatwiej jest zacząć naukę od Raspberry PI. Kosztuje ono niewielkie pieniądze, a winternecie nie brakuje kursów na jego temat. Pod hasłem "robotics in python" można także znaleźć wiele kursów dotyczących programowania robotów, gdzie tworzony kod testuje się w symulatorach.

Automatyzacja procesów

Przy użyciu języka Python możemy także zautomatyzować codzienne czynności, wykonywane w ramach naszych obowiązków. Gdy miałem policzyć liczbę znaków w książce, napisałem do tego skrypt6. Gdy potrzebowałem wypełniać dokument danymi ze stron internetowych, napisałem do tego skrypt. Gdy potrzebowałem regularnie sprawdzać, czy tworzona przeze mnie strona jest dostępna online... Rozumiecie chyba. Można zautomatyzować niemalże każde rutynowe działanie, jakie wykonujecie na komputerze. Nie każde oczywiście opłaca się automatyzować, choć z każdym zautomatyzowanym procesem mamy nie tylko mniej nudnej pracy, ale także więcej umiejętności, przydatnych przy automatyzacji kolejnych procesów.

Możliwości automatyzacji z wykorzystaniem języka Python są naprawdę niesamowite. Tutaj autor książki Automate the Boring Stuff with Python pokazuje, jak zautomatyzował granie w grę Sushi Go Round przy użyciu pakietu PyAutoGUI, pozwalającego przejąć kontrolę nad myszką i klawiaturą. Książka udostępniona jest za darmo w wersji online, artykuł znajdziesz pod linkiem bit.ly/3u7P7RY

Jak zacząć? Wykorzystywane narzędzia zależeć będą od tego, co chcemy zautomatyzować i wjaki sposób. Najważniejsza jest jednak świadomość, że zautomatyzować można niemalże każdy proces wykonywany na komputerze, jak również odwaga, by szukać w internecie informacji, na temat tego, jak coś można zrobić. Warto też poznać lepiej Wiersz poleceń (lub Terminal w przypadku MacOS i Linux) i dowiedzieć się jak można planować uruchamianie pewnych programów, czy to na konkretny czas, czy to cyklicznie (na przykład przy użyciu programu cron).

Systemy operacyjne

Nie spodziewam się, by duża część czytelników miała ambicję stworzenia własnego systemu operacyjnego, niemniej warto wspomnieć, że duża część systemu Linux jest napisana właśnie w języku Python (w większości zaś jest napisany w języku C).

Wiele więcej...

Na tym lista się nie kończy. Nie wspomniałem tutaj o tworzeniu chat botów, aplikacjach desktopowych i mobilnych, skryptach w grach i wielu innych. Codziennie powstają nowe możliwości i rozwiązania, a kreatywność ich twórców nie ma końca. Książkę tę piszę na przełomie roku 2021/2022, więc jeśli upłynęło już kilka lat, to zapewne powstało wiele nowych pakietów i rozwiązań, o których nawet mi się nie śniło. Poszukaj, a może popłyniesz na fali fantazji i zadziwisz nawet mnie, autora, co jeszcze można zrobić przy użyciu języka Python. Chętnie się o tym dowiem! Oznacz mnie, chwaląc się swoim dziełem na Twitterze (@marcinmoskala) albo podeślij mi informację mailem na books@kt.academy.

2:

Poprzez wyszukiwanie pod hasłem mam na myśli wpisanie tego hasła w Google lub ewentualnie na YouTubie.

3:

Kilka szczegółowych przykładów użycia sztucznej inteligencji przedstawionych zostało w rozdziale Uczenie maszynowe.

4:

Język C++ potrafi być znacznie wydajniejszy, przez co jest wykorzystywany przez największe projekty. C# jest natomiast językiem Unity, bardzo popularnego silnika wykorzystywanego przez mniejszych twórców gier.

5:

Jeśli stworzysz ciekawą grę, koniecznie daj mi o tym znać, otagowując mnie na Twitterze @marcinmoskala lub wysyłając link na email books@kt.academy.

6:

Skrypt to program służący do automatyzacji zadań.