Zastosowania języka Python
Maciej Mazurek , 30 grudnia 2019
Zastosowania w nauce
Python jest bardzo chętnie używany przez programistów działających w przeróżnych dziedzinach. Używają go bioinformatycy, inżynierowie, matematycy, astronomowie czy kognitywiści. Poniżej przedstawiamy niektóre narzędzia dostępne w języku Python używane w poszczególnych dziedzinach nauki.
Bioinformatyka
Najpopularniejszym pakietem stosowanym przez bioinformatyków jest Biopython. Umożliwia między innymi: parsowanie i obsługę popularnych bioinformatycznych formatów danych np. Clustal, FASTA czy GenBank, a także analizę sekwencji za pomocą metod k Nearest Neighbors, Naive Bayes, Support Vector Machines i innych. Udostępnia szereg metod do analizy sekwencji białkowych oraz nukleotydowych (DNA, RNA).
Astronomia
Pakietem, który cieszy się największym uznaniem wśród astronomów jest Astropy. Posiada on biblioteki służące do operowania na plikach w formacie FITS, manipulowania szeregami czasowymi czy do konwersji współrzędnych.
Matematyka
Wśród matematyków Python zyskał popularność głównie za sprawą środowiska SciPy, które stanowi darmową (na licencji BSD) alternatywę dla komercyjnego języka MatLab. A w niektórych przypadkach może konkurować ze sławnym programem Matematica. Poniżej wymienimy te komponenty SciPy, które są szczególnie przydatne dla matematyków.
Numpy
Służy do wykonywania obliczeń wektorowych. Posiada bogate biblioteki do algebry liniowej, transformaty Fouriera oraz generowania liczb losowych. Świetnie radzi sobie z wysokowymiarowymi macierzami.
Matplotlib
Świetnie się sprawdza przy tworzeniu wykresów i graficznej prezentacji danych. Posiada moduł pyplot, który w połączeniu z interaktywną konsolą IPython stanowi świetną alternatywę dla MatLabowej konsoli.
Sympy
Pakiet do algebraicznych obliczeń symbolicznych. Jak można przeczytać na oficjalnej stronie, celem projektu jest stworzenie kompletnego systemu komputerowego do obliczeń algebraicznych (Computer Algebra System), jednocześnie utrzymując prostotę kodu. Za pomocą Sympy można, na przykład definować skończone grupy czy obiekty kombinatoryczne.
IPython
Shell z wbudowanym interpreterem języka Python. Umożliwia między innymi interaktywną wizualizację danych. Posiada też wbudowane narzędzia do wykonywania wielowątkowych obliczeń.
Zastosowania w biznesie
Oprócz szerokich zastosowań naukowych Python jest coraz częściej wybieranym językiem do tworzenia systemów i aplikacji komercyjnych. W dalszej części artykułu opisujemy najpopularniejsze pythonowe technologie z poszczególnych dziedzin oraz podajemy przykłady ich występowania w produktach IT znanych z życia codziennego.
Sztuczna inteligencja
Jest to dziedzina, która w ostatnim czasie zanotowała wiele spektakularnych sukcesów. Sieci neuronowe zrewolucjonizowały rynek IT, rozwiązując wiele problemów, które były nierozwiązywalne przy użyciu klasycznych technik. Poniżej przedstawiamy - wraz z przykładami zastosowania - najpopularniejsze narzędzia napisane w języku Python służące do tworzenia sztucznej inteligencji.
Tensor Flow
Stworzona przez zespół Google Brain biblioteka TensorFlow. Jest popularnym narzędziem, które wspiera tworzenie sieci neuronowych. Znalazła ona zastosowanie na przykład przy stworzonej przez programistów Ubera platformy Michelangelo, używana między innymi do przewidywania czasu dostawy jedzenia zamówionego za pośrednictwem aplikacji UberEATS.
PyTorch
Framework stworzony przez zespół naukowców Facebooka jako alternatywa dla TensorFlow. Z jego pomocą powstał probabilistyczny język programowania Pyro stworzony przez Ubera. PyTorch jest również używany przez portale społecznościowe takie jak Facebook czy Tweeter.
Z prostym przykładem sieci neuronowej napisanej w Pythonie można zapoznać się w osobnym artykule.
Aplikacje WWW
Spośród wielu pythonowych frameworków do aplikacji webowych największą popularność zdobyły – Django oraz Flask.
Django
Django jest potężnym narzędziem, rozwijanym od 2005 roku. Został stworzony przez programistów pracujących dla amerykańskiej redakcji Lawrence Journal-World. Niewątpliwą zaletą tego frameworka jest to, że posiada wiele gotowych rozwiązań, takich jak wbudowany system autoryzacji użytkowników, łatwy w dostosowaniu (gotowy!) panel administratora czy wbudowany moduł Object-Relational Mapping (narzędzie do komunikowania się z bazą danych). Oprócz tego istnieje wiele pakietów rozszerzeń i pakietów stworzonych przez społeczność. Można je dość łatwo implementować, co znacząco skraca czas ich powstawania projektów.
Django jest używany między innymi przez firmy takie jak Spotify, Instagram, Dropbox, Youtube, Google czy NASA.
Flask
Flask to lekkie narzędzie, które jest bardziej zbiorem bibliotek, aniżeli pełnym frameworkiem. Co ciekawe, został stworzony w ramach primaaprilisowego żartu. Na początku miał ironizować istniejący wcześniej (niezbyt udany) mikroframework „Bottle”. Flask spodobał się społeczności na tyle, że z czasem ewoluował i stał się poważnym projektem, rozwijanym jest do dziś.
Flask – w odróznieniu od Django – nie posiada wbudowanego systemu ORM, panelu administratora czy innych „gotowców”. Przez to czas powstawania dużych i skomplikowanych aplikacji webowych przy użyciu Flaska jest (zazwyczaj) dłuższy. Z drugiej strony Flask pozostawia dużo więcej dowolności realizacji, podczas gdy Django narzuca pewne rozwiązania projektowe.
Wśród popularnych aplikacji webowych stworzonych na bazie Flaska znajdują się między innymi Netflix, reddit, Banksalad czy Zalando.
Aplikacje desktopowe
Python może też służyć do tworzenia aplikacji desktopowych. Wśród najpopularniejszych narzędzi można wymienić takie frameworki jak PyQt czy Kivy. Poniżej opiszemy ich krótkie opisy.
PyQt
PyQt jest czymś w rodzaju pythonowej nakładki na okienkowy framework Qt (napisany w C++). Najnowsza wersja PyQt5 jest kompatybilna z wieloma platformami: Windows, Linux, Mac OS czy nawet Android i iOS. PyQt znalazł zastosowanie przy tworzeniu takich aplikacji jak calibre (crossplatformowa aplikacja do przeglądania i edycji e-booków) czy aplikacja kliencka Dropbox.
Kivy
W odróżnieniu od PyQt, Kivy jest narzędziem lepiej nadającym się do tworzenia aplikacji na urządzenia mobilne, choć wśród wspieranych platform oprócz Androida oraz iOS są również Windows, Mac OS i GNU/Linux. Przykładami najbardziej rozpoznawalnych produktów powstałych przy użyciu Kivy są aplikacje takie, jak 100 days of fitness czy 2048 (dostępne w App Store).
Automatyzacja / Continuous Integration
Tworzenie i utrzymywanie oprogramowania polega na ciągłym iteracyjnym wprowadzaniu zmian. Realizacja każdej modyfikacji wymaga od programisty wykonania wielu żmudnych technicznych czynności, takich jak testowanie, upload na serwer (w przypadku aplikacji webowych) czy statyczna analiza kodu. Powtarzanie tych samych procedur przy wprowadzaniu każdej zmiany jest uciążliwe i czasochłonne.
Dlatego w przypadku większych projektów warto zautomatyzować te wszystkie czynności, np. poprzez napisanie skryptu, który będzie odpowiedzialny za prawidłowe ich wykonanie. Python świetnie się sprawdza również w takich zadaniach. Dzięki wbudowanym bibliotekom subprocess oraz os pisanie skryptów systemowych w Pythonie jest łatwe i przyjemne.
Warto jeszcze nadmienić, że Python posiada wbudowane narzędzia do pisania testów automatycznych. Moduł unittest pozwala na tworzenie prostych testów jednostkowych. Jeśli odpowiednio zorganizuje się ich strukturę w projekcie, można je wszystkie uruchomić za pomocą jednego polecenia w konsoli.
Game development
Istnieje kilka narzędzi do tworzenia gier w Pythonie. Zdecydowanie najpopularniejszym z nich jest PyGame. Należy jednak wyraźnie zaznaczyć, że nie istnieje żadna komercyjna gra stworzona przy użyciu PyGame, która by uzyskała większą popularność. PyGame jest narzędziem stworzonym przez społeczność i dla społeczności. W internecie można znaleźć wiele open-source'owych gier napisanych w PyGame, które wyglądem przypominają raczej gry na starego GameBoy'a, niż nowoczesne produkcje przemysłu GameDev.
Jednak nie prawdą jest, że Python nie znajduje zastosowania przy tworzeniu wysokobudżetowych gier komputerowych. Tak znane tytuły jak np The Sims 4, czy Civilization IV używają Pythona jako języka skryptowego czy narzędzia do tworzenia modów.
Internet of Things
Internet of Things (IoT) jest koncepcją, która głosi, że ogólnie powszechnie stosowane zwyczajne przedmioty (np. lampy, sprzęt AGD, zegarki czy nawet ubrania i obuwie) mogą gromadzić, przetwarzać i wymieniać między sobą dane (stąd nazwa "Internet rzeczy"). Oczywiście żeby tę koncepcję wprowadzić w życie, każdy z "przedmiotów" będących w sieci musi być odpowiednio zaprogramowany.
Pomimo niezbyt wysokiej wydajności, Python znajduje zastosowanie przy programowaniu urządzeń takich jak Raspbery pi, często wykorzystywanych w IoT. Mimo iż raczej nie nadaje się do pisania oprogramowania działającego blisko hardware'u (jak np. język C), to dzięki łatwej konfiguracji, przenośności oraz dostępności wielu pakietów ułatwiających np. przetwarzanie danych, sprawdza się przy programowaniu bardziej wysokopoziomowych komponentów.
Podsumowanie
Omówione powyżej przykłady oczywiście nie wyczerpują tematu. Python dzięki swej stosunkowej prostocie i wszechstronności ciągle podbija nowe terytoria. Jest to tylko jeden z powodów, dla których warto zainteresować się bliżej tym językiem.
Jeśli chcesz poznać inne powody, dla których wato inwestować w Pythona, zapraszamy do artykułu poświęconego temu zagadnieniu.