Hey, kodėl Pixel.lt ignoruoja Python? (Nėra išskirta kategorijos straipsniams apie ją).Tad, sakau, reik supažindint :) Iš draugiško pykčio, straipsniui pažymėjau Pascal bei PHP kategorijas, nes joms Python yra gera alternatyva.
Tai sparčiai populiarėjanti universali, lengvai išmokstama programavimo kalba. Python sintaksės bei ideologijos 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 “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.). Su ja sukurta nemažai populiarių AK programų.
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 pvz (be kintamųjų aprašų):
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 = 0for 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 elementass1 = sarasas[6:10] # sąrašo reikšmės nuo 7-to iki 10-to elemento [6, 7, 8, 9]#<a href="http://en.wikibooks.org/wiki/Non-Programmer%27s_Tutorial_for_Python/Revenge_of_the_Strings#Slicing_strings_.28and_lists.29" onclick="javascript:pageTracker._trackPageview ('/outbound/en.wikibooks.org');">sąrašo pjūvio rėžius patogiausia skaičiuoti kaip skirtukų/kablelių numerius</a>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]
Pilnavertiškai 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 python.org/doc/tut. RUR-PLE principas panašus į Logo grafiką. Reikia aprašyti robotuko judėjimą lentoje. Tam skirtos kelios specialios funkcijos ir visas Python. Kartu pateikiamas išsamus 40-ies pamokėlių ciklas su programų pavyzdžiais. (parsiuntimas, po win reiks dar parsisiųsti wxPython ).
Kad Python tinka ir moksleiviams ir mokslininkams, galima įsitikinti iš įvairių knygų: „Snake Wrangling for Kids“, o „Software Carpentry“ moko inžinierius (ir ne tik) efektyviai programuoti.
Noriu dar…
Daugiau įvairių pavyzdžių bei programavimo šablonų („design patterns“).
Gyvuoja ir (nelabai pastebima) LT Python bendruomenė.

2008-03-27 | 13:53
Ignoruoja? Gal patys mažai skelbėtės.
Sudalyvaukit CodeJam, apdėkit ruby ir php, tada manau bus ant bangos phython ;]
2008-03-27 | 16:57
Bandžiau suorganizuoti Python komandą, sulaukiau tokių komentarų: Python programuotojai ir taip žino, kad Python yra geriausias, todėl nemato reikalo kažkur dalyvaujant įrodinėti, kad Python yra geriausias :)
O šiaip smagu, kad atsirado net visas antras straipsnis apie Python :)
2008-03-27 | 22:06
Pagaliau ir mano ankstesnė kritika buvo išgirsta. Malonu, kad atkreipiate dėmesį į komentarus. Taip ir toliau!
2008-03-28 | 8:50
Sirex, tai buvo mano komentaras, o ne kažkieno komentarai. Tikrai neturiu laiko kažko kažkam įrodynėti. Tuo labiau, kad nėra susidirbusios python komandos :-) O tos kelios kompanijos, kurios dirba python’u, matyt tam šiaip laiko neturi.
2008-03-28 | 11:28
Ar šiais laikais nebeįmanoma programuoti be ideologijų?
2008-03-28 | 17:50
[…] Python. Ne, tai ne stora gyvatė ryjanti triušius ar medžiojanti Dženifer Lopez filme „Anakonda”, o paprasta ir universali programavimo kalba, kuri galbūt ateityje mokyklose pakeis senolę Pascal. Susipažinkime su „Python” iš arčiau… […]
2008-03-30 | 2:32
Gal nedalivauja nes nemato iššukio, pagaliau!?