publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
15 skomentuj »

TAGI: python , kurs , programowanie , plone , pylons , cms , pycon

2009-03-25 13:45  |  Jan Koprowski

Python: absolutny wstęp do myślenia w ogólnym języku programowania

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:

  1. Konkurenci lat 90.
  2. Języki skryptowe
  3. Dziedzictwo Pythona
  4. Cele języka i ich realizacja
  5. Kto i do czego używa Pythona?
  6. Co z programowaniem aplikacji internetowych?
  7. Gdzie hostować?
  8. Narzędzia dla programistów
  9. Co z CMS-ami?
  10. Literatura i źródła wiedzy
  11. Przeciwnicy Pythona
  12. Zakończenie

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.

  1. Ł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. 
  2. 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. 
  3. 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. 
  4. 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 »

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
15 skomentuj »

Polecamy

Reklama

Komentarze

  • ajk

    #1 ajk 2009-03-25 15:24:23 1

    Co do wydajności - łączenie Pythona z bibliotekami napisanymmi w C i C++ jest banalne (albo przynajmniej bardzo proste, zależy od doświadczenia programisty). Więc jesli ktoś potrzebuje jakiegoś superwydajnego kodu, może go stworzyć w C/C++, a potem łatwo wykorzystać z poziomu Pythona.

    Z resztą część bibliotek pythonowych jest napisana w C (np. cPickle, sqlite, ctypes).

    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)

  • Secator

    #2 Secator 2009-03-25 16:48:25 0

    Chyba najlepiej pomyślany język programowania z którym się spotkałem.

    Niech Python bedzie z wami!

    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

  • hipertracker

    #3 hipertracker® 2009-03-26 16:22:11 0

    Zapomniano wspomnieć, że poza Django i Pylons jest też Grok (framework oparty na potężnym Zope3) oraz web2py (chyba najprostszy i najbardziej "pythonic" z nich wszystkich) Jest też Jython (javowa implementacja Pythona dająca dostęp do wszystkich bibliotek Javy) oraz IronPython (implementacja Pythona dla platformy .NET)

    Co do funkcyjności i obiektowości, to Python nie jest idealny ale i tak o lata świetlne wyprzedza fatalnie zaprojektowany PHP.

    Z kolei Java (rozumiana jako język) to taki współczesny assembler, prosty, prymitywny, szybki (co zawdzięcza głównie HotSpotowi). I co ważne, aby móc skorzystać z dojrzalych bibliotek i wydajnej JVM nie trzeba w ogóle sięgać po język Java. Można użyć znacznie lepszego języka jakim jest zaczynająca coraz bardziej zdobywać uznanie - Scala (zobacz porównanie możliwości tworzenia DSL w Ruby i Scali). (Są też inne. Wzorowany na Lispie Clojure, Groovy, świetny JRuby czy wspomniany Jython + ok 200 innych). Stąd jakieś zestawienie Python vs. Java są w zasadzie śmieszne.

    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

  • jestescie żydy
  • dAREuS

    #5 dAREuS® 2009-03-29 12:16:27 1

    @jestesie zydy: cieszymy się z Twojego szczęcia i życzymy sukcesów. Pozwól też żyć innym.

    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

  • Holyboy
  • hipertracker

    #7 hipertracker® 2009-04-01 02:19:51 0

    PHP to język bezmyślnie zaprojektowany. Lista jego wad jest dłuuuga, ale to już trochę inny temat. Osobiście podoba mi się sposób w jaki zaprojektowany jest język Scala.

    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

  • hipertracker®
  • hipertracker

    #9 hipertracker® 2009-04-02 14:28:49 0

    Nie mam żadnego problemu z PHP, za to ty, tchórzliwy anonimowy windowcu, masz najwyraźniej problemy ze sobą skoro utożsamiasz krytykę języka z krytyką tych, którzy nim się posługują. To, że PHP jest kiepskim językiem każdy wie. Nie znaczy to  jednak, że nie ma paru użytecznych  aplikacji w nim napisanych. Zaś odwoływanie się PHP i innych języków przy opisywaniu jakiegoś nowego jest dobre, bo tak łatwiej zrozumieć różnice.

    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

  • hipertracker®
  • jankoprowski

    #11 Jan Koprowski® 2009-04-02 22:32:06 0

    Wiele z aplikacji napisanych w PHP to często po prostu najlepsze wyjście. Nie ma czego szukać poza rozwiązaniami stworzonymi w tym właśnie języku jeżeli chodzi o platformę blogową (np. Wordpress), forum czy chociażby galerię. Nikt nie twierdzi, że mało zawdzięczamy PHP i że źle jest w nim programować - jednak można lepiej.

    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

  • Zubrycki

    #12 Zubrycki 2009-04-15 12:30:08 0

    Co sie dzieje z artykulami Pythona? Miala byc cala seria, a tu tym czasem cisza...

    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)

  • e.s.t

    #13 e.s.t 2009-04-21 15:21:02 0

    wow, hiperfucker, dawno się tak nie uśmiałem czytając twoje opinie... nonie zapomnij przypomnieć rodzicom aby zapłacili za neostradę.

    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

  • dAREuS

    #14 dAREuS® 2009-04-21 15:40:46 0

    @Zubrycki: idzie cała seria, powoli.

    IP: 217.98.20.[...] Opera/9.64 (Windows NT 6.0; U; pl) Presto/2.1.1

  • jedrek

    #15 jedrek® 2009-07-25 00:34:38 0

    Czy kolejne "lekcje" będa udostępniane dopiero po stworzeniu całej serii?

    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)

Uwaga! Możesz zarejestrować się w serwisie i w ten sposób zarezerwować swój nick oraz ominąć konieczność ciągłego odczytywania wyrazów.

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.

Polecane książki

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ł