Python – programavimas visiems  (10)

Programavimo kalbų yra šimtai, vienos žinomiausių – C (ir įvairios jos atmainos), Pascal, PHP, Basic, Java. Ar teko girdėti Python (www.python.org)? Tai sparčiai populiarėjanti universali, lengvai išmokstama programavimo kalba, kurios trumpą, bet išsamų pristatymą galite perskaityti šiame straipsnyje.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Python kalbos sintaksė leidžia daryti mažiau klaidų programuojant bei lengviau suprasti kitų parašytus algoritmus. Python dėka apie 25% pagreitėja programų kūrimas. Tiobe programavimo kalbų populiarumo reitinge Python nominuota „2007 metų programavimo kalba“.

Pirmoji versija pasirodė 1991 m., vėliau Python buvo vystoma projekte „Programavimas visiems“ (“Computer Programming for Everybody"), o tuo pačiu sugundė ir daug profesionalų. Python plačiai naudoja Ubuntu, Google, NASA, Disnėjaus animacijos studija, YouTube, EVE Online (ir kt.). Nuo 2005 m. Python kūrėjas Guido van Rossum dirba Google, kur jam leidžiama pusę laiko savo nuožiūra skirti Python tobulinimui.

Programavimo įvadui ji tinka geriau už kitas kalbas, nes sintaksė netrukdo mokytis algoritmų esmės. Ją galima naudoti tiesiog kaip pseudokodą. Python yra objektiškai orientuota, bet su ja galima rašyti ir struktūrinio stiliaus programas. Ji sėkmingai naudojama ir darbastalio programoms, ir internetinėms sistemoms kurti. O pavyzdžiui Pascal nenaudojama internetinėse sistemose, o su PHP nekuriamos darbastalio programos. Python sintaksei yra pritaikyti ir kiti kompiliatoriai: Java (Jython), C (Cython), .NET (Iron Python), todėl Python galima naudoti praktiškai visur.

Python sintaksė

Python buvo kuriama mąstant ne tik apie loginę tvarką, bet ypač daug dėmesio skiriant naudojimo patogumui. Eilučių gale nebūtinas kabliataškis, kintamųjų nereikia aprašyti iš anksto. Viena svarbiausių ypatybių – loginius skliaustus atitinka atitraukimas nuo krašto – tai natūraliai pratina prie geros programavimo kultūros. Dar viena įdomi Python savybė – kviečiamų funkcijų argumentus galima įvardinti – tai padeda išvengti klaidų pakeitus funkcijos aprašą. Pereinantiems nuo Pascal, reikia priminti skirti didžiąsias ir mažąsias raides ;).

Panagrinėkime internete rastą Pascal pavyzdį. Duotas skaičių sąrašas (jo ilgis k), reikia rasti vidurkį, kiek narių yra didesni už vidurkį (kdv) ir kiek – neigiamų (kn).

Pascal pavyzdys (be kintamųjų aprašų):

vid := 0; 
FOR j := 1 to k DO vid := vid + sarasas[j]; 
vid := vid / k; {suradome vidurkį} 
kdv := 0; kn := 0; 
FOR j := 1 to k DO 
 BEGIN 
   IF sarasas[j] > vid THEN kdv := kdv + 1; 
   IF sarasas[j] < 0 THEN kn := kn + 1; 
 END; 

Tą patį algoritmą Python galima užrašyti taip:

# kintamųjų pvz.: 
sarasas = [3, -4, 0, -1, 5]; k = len(sarasas) 
vid = 0 
for j in range(k): vid += sarasas[j] 
vid = vid / k # suradome vidurkį 
kdv = kn = 0 
for x in sarasas: 
  if x > vid: kdv += 1 
  if x < 0: kn += 1 

Kaip matote, ciklo (loginio skliausto) pradžią nurodo „:“. Po jo komandas galima rašyti toje pačioje eilutėje, bet įprasta – naujoje – toliau (lygiai) atitraukiant nuo krašto. Be to, sąrašo elementus cikle galima pasiekti paprastai – be indekso.

Python tą patį algoritmą galima užrašyti ir daug paprasčiau:

vid = sum(sarasas) / len(sarasas) 
kdv = sum(1 for x in sarasas if x > vid) 
kn = sum(1 for x in sarasas if x < 0) 

Daugeliui patiks, kad Python įgalina trumpai ir aiškiai tvarkyti masyvus/sąrašus (angl. „lists“) bei simbolių eilutes. Sąrašo elementai numeruojami nuo nulio (kaip ir C, PHP, Java).

sarasas = range(10) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
x4 = sarasas[3] # 3 – ketvirtasis sąrašo elementas 
s1 = sarasas[6:10] # sąrašo reikšmės nuo 7-to iki
                   #10-to elemento [6, 7, 8, 9] 
#sąrašo pjūvio rėžius patogiausia skaičiuoti kaip 
#skirtukų/kablelių numerius 
s2 = sarasas[-4:] # pateiks 4 paskutinius elementus 
s3 = sarasas[:4] # o taip galima gauti 4 pirmus elementus 
saraso_pilna_kopija = sarasas[:] 
s1 == s2 # grąžins loginę reikšmę True 
s1_kvadratu = [x**2 for x in s1] # [36, 49, 64, 81] 
s1+s1_kvadratu # [6, 7, 8, 9, 36, 49, 64, 81] 

Programuoti padės integruotos aplinkos PyScripter, Eric IDE, Boa Constructor, Eclipse+PyDev ir kt.

Python mokymo(si) priemonės

Yra geras programavimo įvadas - „How to Think Like a Computer Scientist“ , video pamokėlių , bei išsamus vadovėlis pažengusiems „Dive into Python“. Yra ir lietuviški konspektai bei trumpas pavyzdžiais paremtas įvadas.

Taip pat yra interaktyvių Python mokymosi priemonių. Crunchy patogi nagrinėjant http://python.org/doc/tut – ji atpažįsta html sritis, kuriose yra programinis tekstas, ir leidžia jas redaguoti bei įvykdyti. (Naudojimas: išarchyvuokite ir paleiskite crunchy.py; reikalinga Firefox naršyklė). ShowMeDo portale yra išsami video-pamokėlė.

RUR-PLE principas panašus į Logo grafiką. Reikia aprašyti robotuko judėjimą lentoje. Tam skirtos kelios specialios funkcijos ir visas Python. Kad būtų įdomiau, galima pastatyti sienų, o robotukas gali rasti/turėti/paimti/padėti specialius objektus („beepers“). Kartu pateikiamas išsamus 40-ies pamokėlių ciklas su programų pavyzdžiais. ( Naudojimas: išarchyvavę parsiųstą Rur-ple , paleiskite rur-start.py; prieš tai reikia įdiegti wxPython grafikos elementų biblioteką (parsiuntimas).

Kad Python tinka ir moksleiviams ir mokslininkams, galima įsitikinti iš įvairių knygų: „Snake Wrangling for Kids“ rasite nemažai „vėžliuko grafikos“ pavyzdžių, o „Software Carpentry“ moko inžinierius efektyviai programuoti. Vokietijoje išleista knyga su CD „Python vaikams“ (python4kids.net). Yra vokiška Python versija „Teuton“ bei kiniškaoji - chinesepython.org. kuriose visos komandos yra lokalizuotos. 2008 m. vasarą pasirodysiančioje Python-3000 versijoje, bus visur standartiškai naudojama UTF-8 koduotė, tad bus techniškai nesudėtinga turėti ir lietuvišką Python (gal vadinsis Žaltys? :) ).

Python Lietuvoje

Lietuviškai pagalbos apie Python galima gauti www.ubuntu.lt/→ Forumai → Python, arba užsiregistravę į python@konferencijos.lt.

Lietuvoje Python yra mokoma Vilniaus Licėjuje bei dėstoma VU biofizikos studentams (dr. Svirskis, dirbantis ir Niujorke, Kopenhagoje), VU informatikams (programuotojas, buvęs informatikos olimpiadų prizininkas Marius Gedminas). Pasak Mariaus, „Python – tai kalba, leidžianti natūraliai reikšti savo mintis ir ugdanti gerą programavimo stilių“. Tarptautinė EuroPython konferencija pernai vyko Vilniuje ir šiemet vėl čia planuojama.

Lietuvoje yra kelios firmos, kuriančios Python internetinius sprendimus. Viena iš jų pritaikė dizainą www.ubuntu.com, ir toliau ją prižiūri. Ji taip pat prisideda kuriant Ubuntu steigėjo finansuojamą mokyklos administravimo priemonę SchoolTool (kuri naudojama-testuojama Vilniaus Licėjuje).

Ar žinote, kad tarptautinė EuroPython konferencija pernai vyko Vilniuje ir šiemet vėl čia vyks.

Ką įdomaus bei naudingo galima nuveikti su Python

Python labai išpopuliarėjo atviro kodo projektuose: ja galima rašyti OpenOffice makro-komandas, ji integruota į Blender 3D animacijos ir žaidimų kūrimo aplinką bei Dia schemų braižymo programą. Su Dia galima projektuoti Python programas (UML) ir paskui automatiškai generuoti programinį tekstą.

Internetinėms sistemoms kurti dažnai naudojama Plone (pvz. čia reiktų paminėti, jog technologijos.lt irgi veikia su Plone TVS - redakcija), Pylons (pvz), Django (pvz) ar TurboGears (pvz), ar tiesiog šablonų mechanizmai (pvz, Genshi, Mako). Nesenai atsirado įdomi iniciatyva pagal Python kodą generuoti Javascript.

Darbastalio programų kūrimą palengvins PythonCard ar WxGlade. Duomenų bazių patogesniam projektavimui naudojama SQLAlchemy ir pan., drbastalio DB programų kūrimui pravers Dabo (pvz). Kai ką suvilios žaidimų kūrimas (PyGame ar net Panda3D) ir konkursas PyWeek. Yra ne vienas įvadas žaidimų kūrimui.

Galinga mokslinių skaičiavimų aplinka SAGE Python pagalba apjungia visus geriausius mokslinio skaičiavimo paketus į bendrą visumą ir leidžia juos naudoti tiesiog per naršyklę. MatLab funkcijas gali pavaduoti SciPy, NumPy ir PyLab. Sudėtingoms duomenų vizualizacijoms gerai tinka Mayavi2.

Su Python yra sukurta įvairių mokomųjų priemonių, pvz., muzikos treniruoklis Solfege, lavinamųjų žaidimų rinkinys ChildsPlay. Pasaulinis projektas „One Laptop Per Childplačiai naudoja Python.

Taip pat sėkmingai naudojama matematikos mokymui, nes interaktyvi interpretavimo aplinka leidžia patogiai eksperimentuoti. Yra specialus puslapis apie Python ir mokymą.

Taip pat galite rasti įvairių pavyzdžių bei programavimo šablonų („design patterns“).

Pabaigai ir diskusijoms

Python viena iš aktyviausiai vystomų populiarių kalbų. 2008 metai yra aktyvūs dėl išleidžiamos naujos – Python 3000 – versijos. Galite pasiskaityti Guido Van Rossum tinklaraštį ir šmaikščiai apibendrintą Python ideologiją.

Apsipratus su kalba, verta susipažinti ir su kartais pasitaikančiomis klastingomis klaidelėmis.

Pagrindinis minusas lyginant su C, yra programos vykdymo greitis, tad Python gali naudoti C sukompiliuotus modulius. Java ir .NET turi stiprius korporacijų užnugarius ir didelių projektų, tad artimiausi Python populiarumo konkurentai yra Perl, Ruby ir tikriausiai PHP bei Delphi. Įdomu, ką Tiobe reitingai rodys po metų?

Parengė: Jurgis Pralgauskis

Visą medžiagą galima naudoti pagal
Creative Commons Attribution-Share Alike 3.0 licenziją

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(23)
(3)
(20)

Komentarai (10)