Python: absolutny wstęp do myślenia w ogólnym języku programowania
Dostępnych dziś na rynku IT języków programowania mamy podobno więcej niż używanych obecnie na świecie języków naturalnych. Jednak spośród dużej grupy języków tworzonych przez lata po dziś dzień przetrwały tylko niektóre. Programiści używają ich na co dzień do najróżniejszych celów: tworzenia witryn internetowych, aplikacji desktopowych, skryptów administracyjnych, oprogramowywania różnych urządzeń, a nawet tworzenia innych języków programowania. Jednym ze zwycięskich, który przetrwał po dzień dzisiejszy i zjednał sobie serca wielu programistów, jest Python. Przyjrzyjmy się mu dzisiaj troszkę bliżej.
Spis treści: |
Konkurenci lat 90.
Zanim zaczniemy przyglądać się samemu językowi, spojrzyjmy kilkanaście lat wstecz. Jako machinę czasu wykorzystajmy tym razem plakat stworzony przez O'reilly, ukazujący historię głównych języków programowania.
Rysunek 1. Logo języka Python. Niebieski i żółty wąż splecione ze sobą.
Jak widać na wykresie, początki języka Python datuje się na rok 1991. Przyjrzyjmy się, jakie języki programowania istniały w tym czasie. Najbliższym sąsiadem jest dziecko Niklausa Wirtha – Borland Pascal, język programowania służący głównie celom edukacyjnym - dziś używany głównie w gimnazjach i liceach, wciąż obecny duchem w popularnym i mających wciąż swoich zwolenników języku Delphi.
Troszeczkę niżej widzimy język banków – COBOL. Stworzony dla zastosowań ekonomicznych i biznesowych jest bardzo wąsko specjalizowanym językiem programowania. Zresztą nie tylko on. Dwie długie linie poniżej, C i C++ to efekt polityki wyposażania uczelni Amerykańskich w system Unix. Studenci kończący je rozwijali ten system, pisząc programy właśnie w języku C – wymusili więc nie jako stosowanie tego języka na swoich pracodawcach. Stąd tak wielka jego popularność oraz duża ilość powstałego oprogramowania.
Poniżej widzimy dziecko Microsoftu – Visual Basic. Język wywodzący się, jak z samej nazwy wynika, z Basica, język młodości Billa Gatesa, w końcu język często używany w czasach systemu DOS.
Inne długie linie to FORTRAN – z racji swojej długowieczności, z fantastycznie przetestowanymi bibliotekami do operacji matematycznych. Używa się go po dziś dzień głównie w środowiskach naukowych głównie z racji niezawodnych i od lat sprawdzających się w praktyce bibliotek.
Dalej widzimy Prolog – język przeznaczony do projektowania sztucznej inteligencji (potrafiący rozwiązywać na przykład szarady) czy Adę, z racji posiadania funkcji formalnego dowodzenia poprawności kodu, wykorzystywaną w systemach krytycznych sektorów takich jak: wojsko medycyna czy energetyka.
Języki skryptowe
Jeżeli dobrze się przyjrzeć, wszystkie języki, o których do tej pory wspomniałem, to głównie wąsko specjalizowane, kompilowane języki programowania, mające zastosowanie w bardzo wąskich, specjalizowanych dziedzinach takich jak: bankowość, obliczenia naukowe, systemy krytyczne czy nauka. Powstający wtedy język Python będący językiem skryptowym (niekompilowanym) ogólnego zastosowania miał tylko dwóch, groźnych konkurentów: powstały w roku 1988 Tcl - Tcl/Tk oraz tylko o rok starszego Perla.
Nikt wtedy nie słyszał jeszcze o tak dziś popularny PHP (za danymi O'reilly – jego start to rok 1995) czy Ruby (za danymi z O'reilly z roku 1993). Warto zwrócić uwagę na jeszcze jeden drobiazg. Strzałeczka Pythona zaczyna się w miejscu, w którym kończy się żywot języka ABC. Nie bez powodu: Guido van Rossum, znany powszechnie jako twórca języka Python, był silnie zaangażowany w rozwój wcześniej wspomnianego języka. Po dzień dzisiejszy, przeglądając tutoriale do ABC, przemknie nam imię Guido.
Dziedzictwo Pythona
Po porównaniu języka Python z ABC widzimy, że odziedziczył on po nim wiele konstrukcji składniowych, ale spuścizna Pythona jest znacznie większa. W Pythonie możemy wykorzystywać trzy paradygmaty programowania. Ktoś, kto dopiero zaczyna przygodę z programowaniem, może zdać się tym przerażony, wyobrażając sobie ogromny bałagan i brak zrozumiałości kodu. Ale nic z tych rzeczy.
Rysunek 2. Paczki Pythona są rozprowadzane w postaci jajek (ang. eggs).
Jest to model dystrybucji zbliżony do RPM.
Dzięki swojej uniwersalności w tej dziedzinie Python znacznie zwiększa pole, w którym może zostać zastosowany. Paradygmat proceduralny (dzielenia kodu na funkcje) jest nieodzownym podejściem do modelowania zadań matematycznych. To właśnie ta metoda, znacznie lepiej niż paradygmat obiektowy, pozwala nam tworzenie wydajnych algorytmów rozwiązujących konkretne zagadnienie. Gdy dodać do tego jeszcze możliwość tworzenia funkcji nienazwanych – mamy komplet nowoczesnych narzędzi do programowania proceduralnego.
Otrzymujemy również możliwość tworzenia klas i obiektów – czyli paradygmat obiektowy – dzięki czemu możemy sprawnie modelować fragmenty rzeczywistości lub systemów składających się na naszą aplikację oraz korzystać ze wszystkich innych dobrodziejstw programowania obiektowego. Docenią to szczególnie Ci twórcy oprogramowania, którym przyszło pracować w większym zespole programistów.
To jednak nie koniec. Wchodząc w meandry programowania obiektowego, zahaczamy o programowanie funkcyjne. Tutaj, języki takiej jak Python, pokazują pazur, dając programiście garść świetnych narzędzi do grzebania w napisanym już programie. Cecha ta nazywana jest często introspekcyjnością języka.
Choć to tylko niewielka część funkcjonalności Pythona możliwości wyciągania informacji o stworzonych funkcjach, obiektach, klasach czy jeszcze innych elementach języka za pomocą odpowiednich funkcji – jest nieoceniona. Często zwiększa również poziom bezpieczeństwa kodu, gdzie możemy uniknąć stosowania instrukcji takiej jak exec() na rzecz znacznie bezpieczniejszych introspekcji.
Cele języka i ich realizacja
Czas uspokoić tych, dla których to, co napisałem do tej pory, zaczęło przypominać informatyczny bełkot. Python to język programowania dla wszystkich. Przyjrzyjmy się więc jego czterem podstawowym celom.
- Łatwy i intuicyjny język, ale jednocześnie równie potężny jak jego konkurenci
Być może dla wielu brzmi to jak pobożne życzenie, a pomimo to – udało się osiągnąć ten cel. Choć słowo proste i potężne mogą wydawać się przeciwieństwami, to język Python łączy te dwie cechy. Na prostotę zostały ukierunkowane wszystkie elementy składni języka: słowa kluczowe, nazwy funkcji, bibliotek czy choćby zaznaczanie bloków kodu przez wcięcia. Ze wszystkich istniejących języków programowania, z których czerpie Python, zostało zebrane to, co czytelne, i zlepione razem, aby tworzyło możliwie najprostszy język programowania.
Potęgę możemy zaś podziwiać w majestacie liczby oraz jakości dostępnych do języka bibliotek. Znajdziemy tutaj wszystko, czego dusza zapragnie. Klasy do obsługi sieci, najróżniejszej maści baz danych czy całe frameworki. Nawet biblioteki do symulowania fizyki obiektów. - Bazujący na Open Source – każdy może wnieść wkład do jego rozwoju
Dokumentacja Pythona zawiera dwa duże działy poświęcone pisaniu rozszerzeń dla tego języka. Dopisać moduł może naprawdę każdy. Możliwość implementowania nowych fukcjonalności oraz otwartość zaowocowała ogromną liczbą dodatkowych bibliotek. Tutaj również tkwi tajemnica impetu, z jakim rozwija się język. Grono programistów ochotników z całego świata pracuje nad językiem programowania. Jak widać – w jedności siła.
Programując w Pythonie spotykamy się z bardzo nowoczesnymi i często innowacyjnymi konstrukcjami, rozwiązaniami na miarę dzisiejszych czasów. Dzięki temu Python uważany jest za język nie tylko elastyczny, ale także nadążający za trendami – a w konsekwencji nowoczesny. Wiele osób piszących moduły i biblioteki na własne potrzeby publikuje je w Sieci, zwiększając tym samym portfolio języka oraz liczbę dostępnych narzędzi.
Dodatkowym atutem, który sprawia, że kod projektowany z użyciem języka Python jest dobrej jakości, są dokumenty: standaryzujące styl pisania kodu PEP-8 oraz filozofia, którą rządzi się język i powinien rządzić się programista w nim piszący – legendarne w wielu kręgach programistów The Zen of Python. Zrozumienie go pozwala nie tylko rozstrzygnąć wiele dylematów pod tytułem "jak to zaprojektować" czy "która implementacja jest lepsza", ale także lepiej zrozumieć, dlaczego w Pythonie coś jest zrobione, tak a nie inaczej, i dlaczego coś działa właśnie, tak a nie w inny sposób. - Zrozumiały kod w prostym angielskim
To kolejny element wpływający na czytelność języka. Kod programu czyta się miejscami jak książkę napisaną bardzo prostym, przeplatanym wyrażeniami logiczno-matematycznymi, angielskim. Nawet tutaj widać, jak starannie zostały dobrane nazwy, aby nie uczynić języka niezrozumiałym lub choć trochę bardziej skomplikowanym. Widać to było na przykład przy refaktoryzacji języka związanej z wydaniem Pythona 3. Zgłoszono propozycję usunięcia konstrukcji input/raw_input na rzecz dublowania funkcjonalności odpowiednich obiektów dostępnych w module sys. Oczywiście, konstrukcję pozostawiono, argumentując to zwiększeniem prostoty i czytelności języka. - Przydatność do rozmaitych codziennych celów, owocująca krótkim czasem programowania
Jeżeli brakuje ci kalkulatora z możliwością wykonywania działań na liczbach zespolonych, chciałbyś wyrysować szybko wykres jakieś funkcji, napisać prosty serwer, stworzyć szybko prostą witrynę z panelem administracyjnym, modelować jakiś algorytm, coś zaszyfrować lub wykonać jedną z wielu innych drobnych rzeczy – a masz dostęp do komputera z zainstalowanym Pythonem – nic nie stoi na przeszkodzie, abyś mógł go do tego wykorzystać. Dzięki konstrukcji języka wykonanie zadania wyda się nie tylko proste, ale także przyjemne i wcale nie zajmie wiele czasu.
Czytając to mogłoby się wydawać, że Python jest językiem dla przeciętnego Kowalskiego, który wyszedł właśnie po gazetę do kiosku i po powrocie stwierdził, że chciałby sobie napisać prosty program, który wypisze mu funkcję trendu dla notowań giełdowych z ostatniego miesiąca. I tak jest w rzeczywistości. Z jednej strony język ten posiada prostą składnię, z drugiej ogrom bibliotek, z których równie prosto korzystać. Wszystko dobrze opisane i udokumentowane. Nie pozostaje nic innego, jak tylko pisać.
«poprzednia 1 2 3 następna »
Polecamy
Reklama
Komentarze
Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka
(słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.
Popularne
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
Korea Północna: korzystasz z telefonu komórkowego? Jesteś więc zbrodniarzem wojennym
5
Nowa polityka prywatności Google'a już za miesiąc wejdzie w życie. Mamy się czego bać?
16
Firefox 10 już jest. Wiele atrakcji dla programistów, użytkownicy raczej nic nie zauważą
9
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1451
Linux wypiera z korporacyjnych serwerów już nie tylko Uniksy, ale i Windows
11
Źle się dzieje z Chrome, ze stabilnością coraz gorzej. Gdzie się podziała słynna izolacja procesów?
23
MSWiA zamówiło narzędzia do „złamania” Tora i podsłuchiwania internautów. Czy złamało przy tym prawo?
89
[Aktualizacja] Facebook zablokował Demotywatory.pl. W czym zawiniły?
36
FBI zamknęło Megaupload. Anonimowi dali się sprowokować. Teraz ich akcja uzasadni potrzebę SOPA?
17
Pobieraczek.pl pozwie internautów, którzy nie chcą płacić abonamentu
1451
Rząd Tuska zablokował dostęp do tańszych leków z internetowych aptek
61
Programowanie w środowisku Android – wprowadzenie do projektowania aplikacji dla urządzeń mobilnych
15
„Donald matole, twój rząd dopadną kibole” – hakerska elita przyłącza się do walki z ACTA
23
Społeczność
wujekbogdan Eksperci od bezpieczeństwa polecają WTW jako alternatywa dla...
hipertracker @slawek22, ORM wcale nie musi tworzyć nieoptymalnych kwerend. Poza tym...
matrixik A ja już długi czas temu przesiadłem się z Konnecta na Mirandę i jestem...
Rumcajs Kolejna PRowska ściema Donka. Już mnie krew zalewa.
Artykuł 41...
zalesz o Pan Sławek :)
Patrzę nic się nie zmieniło, w sumie to nic się nie...
slawek22 Jeszcze taka dygresja na poparcie tezy, akurat sobie czytałem o node...
slawek22 Tylko po co mi 5, 10 albo nawet 15 razy szybszy JRuby skoro całą "moc...
- gardius: Dobra hurtownia sportowa (1)
- gardius: Tanie książki gdzie warto kupować? (1)
- Najdmen.pl: PROMOCJA, 500 DOMEN .EU ZA 1 PLN NETTO ! (1)
- VMLine: [Oferta] Serwery VPS Xen-HVM/OpenVZ z darmową administracją (2)
- Marek: Generowanie PDFa (2)
- Marek: problem z menu (2)
- Marek: Własne checkboxy w HTML,CSS (1)
Polecane książki
Praca
Obsługa księgowa z językiem niemieckim
Tech Support Engineer with fluent English and German, French, Italian or Spanish
Młodszy Specjalista w Dziale Należności ze znajomością języka francuskiego
Analityk Baz Danych i Systemów Monitorowania
Menedżer ds. Klienta Biznesowego
Starszy Programista Aplikacji Internetowych/Team Leader
Czytaj Webhosting
Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.
Zarejestruj domenę
Sprawdź dostępność swojej domeny:
| .pl: | 0 zł | .com: | 19.90 zł | |
|---|---|---|---|---|
| .com.pl: | 0 zł | .eu: | 19.90 zł |











#1 ajk 2009-03-25 15:24:23 1
IP: 79.186.21.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.20) Gecko/20081217 Firefox/2.0.0.20 (.NET CLR 3.5.30729)
#2 Secator 2009-03-25 16:48:25 0
IP: 213.134.186.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.53 Safari/525.19
#3 hipertracker® 2009-03-26 16:22:11 0
IP: 193.95.179.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.7) Gecko/2009021906 Firefox/3.0.7
#4 jestescie żydy 2009-03-28 00:47:30 -2
Pokaż komentarzIP: 89.231.28.[...] Opera/9.64 (Windows NT 5.1; U; pl) Presto/2.1.1
#5 dAREuS® 2009-03-29 12:16:27 1
IP: 83.4.96.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.7 (KHTML, like Gecko) Iron/1.0.155.0 Safari/528.7
#6 Holyboy 2009-04-01 00:37:48 -1
Pokaż komentarzIP: 213.134.172.[...] Mozilla/5.0 (Windows; U; Windows NT 6.1; pl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 FirePHP/0.2.4
#7 hipertracker® 2009-04-01 02:19:51 0
IP: 89.127.179.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; pl-pl) AppleWebKit/528.16 (KHTML, like Gecko) Version/4.0 Safari/528.16
#8 hipertracker® 2009-04-02 08:55:23 -1
Pokaż komentarzIP: 89.78.154.[...] Opera/9.64 (Windows NT 5.1; U; pl) Presto/2.1.1
#9 hipertracker® 2009-04-02 14:28:49 0
IP: 193.95.179.[...] Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.8) Gecko/2009032608 Firefox/3.0.8
#10 hipertracker® 2009-04-02 15:27:57 -1
Pokaż komentarzIP: 89.78.154.[...] Opera/9.64 (Windows NT 5.1; U; pl) Presto/2.1.1
#11 Jan Koprowski® 2009-04-02 22:32:06 0
IP: 89.77.93.[...] Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/530.1 (KHTML, like Gecko) Chrome/2.0.169.1 Safari/530.1
#12 Zubrycki 2009-04-15 12:30:08 0
IP: 80.54.97.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)
#13 e.s.t 2009-04-21 15:21:02 0
IP: 92.244.55.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8
#14 dAREuS® 2009-04-21 15:40:46 0
IP: 217.98.20.[...] Opera/9.64 (Windows NT 6.0; U; pl) Presto/2.1.1
#15 jedrek® 2009-07-25 00:34:38 0
IP: 83.21.165.[...] Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)