Örvitinn

Python forritun - inngangur

Þegar ég fylgdist með huga kom fyrir að fólk leitaði ráða á forritunarkorknum (eða hvað það nú heitir) um hvaða forritunarmál hentaði byrjendum. Ég var með staðlað svar, lærið python og ég stend við það.

Python er að mínu mati alveg sérlega skemmtilegt en um leið gríðarlega öflugt forritunarmál. Python kóði er læsilegur og skýr í flestum tilvikum, það er hægt að skrifa ólæsilegan kóða í python en maður þarf að hafa fyrir því.

Python er í flokki forritunarmála sem eru kölluð scripting mál. Ég átta mig ekki alveg á því hvernig þessi forritunarmál skilja sig frá alvöru forritunarmálum. Maður getur jú skrifaði alvöru forrit með python, perl og ruby (og öllum hinum). Þessi forritunarmál eiga það þó sameiginlegt að ekki þarf að þýða þau sérstaklega og yfirleitt er mjög fljótlegt að skrifa stutt forrit fyrir sértæk vandamál í þeim.

Python er líkt og java þýtt í bytekóða en ólíkt java þarf ekki að þýða python kóða sérstaklega heldur gerist það sjálfkrafa þegar forritið er keyrt í fyrsta sinn eða þegar kóða er breytt. Ekki þarf að skila minni sérstaklega í Python heldur er því ruslasafnað. Python hefur alvöru exceptions. Python er lauslega tagað forritunarmál sem þýðir að ekki þarf að skilgreina tegund breytu. Í C þarf t.d. að segja að breytan i sé integer

Í c, c++ og java:
int i = 2;
i++;
i = "bla"; // villa þar sem i er integer en ekki strengur

Í python:
i = 2
i += 1
i = "bla" # allt í góðu lagi, i er núna strengur sem inniheldur "bla"

Í python ræðst tegund breytunnar af því gildi sem í hana er sett. Þetta er þægilegt og flýtir fyrir þegar maður skrifar forrit en veldur því aftur á móti að auðvelt er að gera vitleysu með því að setja vitlausa týpu inn í fall. Þær villur koma þó fljótt í ljós í prófunum og villumeldingarnar í python benda manni beint á sökudólginn.

Ein helsta ástæða þess að python kóði er læsilegri en gengur og gerist er að framsetning kóðans er að vissu leyti skilgreind í reglum málsins. Innsláttur Inndráttur í kóða segir til um gildissvið (enska: scope)breytu. Þetta veldur því að allir neyðast til þess að setja kóðann sinn upp á sama hátt. Þetta er líka það sem flestir reyndir forritarar eiga erfiðast með að sætta sig við varðandi python. En þetta venst ótrúlega hratt og þegar maður fer svo að lesa kóða eftir aðra eða gamlan kóða eftir sjálfan sig verður maður afskaplega þakklátur fyrir þessa reglu.

Python er ekki hraðvirkt, en það er nógu hraðvirkt. Ef python er ekki nógu hraðvirkt fyrir eitthvað ákveðið verkefni er lítið mál að skrifa python hluti í C eða C++ og nota þá úr python en yfirleitt er það lítill hluti forrita sem tekur mestan tíma í keyrslu. Oft komast menn þó að því að python er nógu hraðvirkt.

Python fylgir flestum linux uppsetningum en Windows notendur þurfa að sækja python og setja það sérstaklega upp. Það er lítið mál að installa python og uppsetningarskráin er ekki mjög stór. Python 2.2.3 [7162 KB] fyrir windows er hægt að sækja hér. Linux og machintosh notendur geta fundið samsvarandi install skrár hér

Ein ástæða þess að ég mæli með því að byrjendur læri python er að það er hægt að keyra python forrit í skel og fá þá niðurstöðu skipana um leið. Það er mjög þægileg leið til að stúdera forritunarmál að nota þau svona. Í windows er hægt að keyra upp idle sem er installað með python en í linux er nóg að skrifa python í skel til fá upp python glugga. Í Red Hat sem ég nota vísar python á python1.5.2 sem er frekar gömul útgáfa. Til að keyra nýjustu útgáfuna af python skrifa ég python2 í skel. Ég geri ráð fyrir að linux notendur hafi líka aðgang að idle í gluggaham en þekki það ekki nægileg vel til að hætta í python þegar það er keyrt frá skipanalínu þarf að gera control-D.

Þegar maður er búinn að keyra python blasir skipanalínan við sem lítur svona út: >>>
Nú er hægt að demba sér út í að skrifa skipanir beint á skipanalínu og fá svör um hæl.

>>> print 2+2
4

>>> import urllib2
>>> page = urllib2.urlopen("http://www.orvitinn.com").read()
>>> print len(page)
23416

Einn helsti kostur python er hversu mikið er búið að skrifa af kóða í python nú þegar. Yfirleitt er hægt að notast við stöðluð library en þegar þau duga ekki er í flestum tilvikum hægt að finna eitthvað á netinu. Perl hefur enn forskot á python hvað þetta varðar en ég gæti trúað því að bilið eigi eftir að minnka mikið á næstu árum.

Ég skrifa kannski meira um Python síðar, ég var að ræða við Arnald um Python í kvöld eftir boltann og langaði að koma einhverju á blað. Ef ykkur langar að læra forritun hvet ég ykkur eindregið til að skoða python. Ef þið kunnið nú þegar að forrita hvet ég ykkur þess þá heldur að skoða python. Það er alltaf gaman að bæta verkfærum í verkfæratöskuna. Ef Java er ykkar helsta verkfæri í dag hvet ég ykkur til að kíkja á jython sem er python útfært í java. Þannig getið þið skrifað python kóða sem keyrir í java runtime vélinni og getið kallað á öll java library úr python.

Ítarefni:
www.python.org
www.jython.org
Python fyrir byrjendur margar góðanir visanir á kennsluefni fyrir byrjendur hér.

python
Athugasemdir

Tómas Hafliðason - 10/06/03 00:09 #

Ég segi nú ekki annað en takk fyrir þessa færslu, ætli ég maður verði ekki að geyma hana einhvers staðar hjá sér, svona upp á framtíðar reference :)

Már Örlygsson - 10/06/03 08:40 #

Þarf maður ekki að keyra einhverja skipun áður en maður byrjar að skrifa python í skel? Þú mættir útskýra betur hvernig það virkar.

"Innslög í kóða segja til um gildissvið (enska: scope)breytu."

Ég held að oftar sé talað um "inndrátt í kóða" en "innslög". Allt annað í textanum var annars mjög skiljanlegt fyrir mig sem mann með smá forritunarþekkingu.

Takk fyrir fróðleikinn.

Matti Á. - 10/06/03 09:22 #

Takk fyrir athugasemdirnar, endilega setjið inn athugasemdir ef eitthvað er ekki nógu skýrt eða ef þið rekist á kjánalegt orðalag eða meinlegar stafsetningarvillur.