Python (ohjelmointikieli)

Historia

Ensimmäinen versio Python-kielestä syntyi 1980-luvun loppupuolella. Alun perin kieli tehtiin jatkoksi ABC-ohjelmointikielelle korjaamalla siinä havaittuja puutteita ja tuomalla sen piirteisiin mm. poikkeusten käsittelyn. Kielen kehittäjä ja isä, Guido van Rossum, on pysynyt kielen kehityksessä koko sen historian ajan keskeisessä roolissa.
Python on alun perin nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun Monty Pythonin lentävä sirkus -televisiosarjan mukaan. Python-nimi koettiin lisäksi tarpeeksi lyhyeksi, yksilöiväksi sekä sopivan mysteeriseksi. Kielen dokumentaation koodiesimerkeissäkin pyritään välttämään liiallista vakavuutta satunnaisilla viittauksilla ryhmän tuotantoon.
Alkuperäisestä Python-kielestä jalostettu Python 2.0 julkaistiin 16. lokakuuta 2000. Kielen toinen täysversio sisälsi useita uusia ominaisuuksia, mukaan lukien täydellisen roskienkeruumekanismin ja Unicode-tuen. Suurin muutos tapahtui kuitenkin itse kielen kehitysprosessissa, jossa Python-yhteisölle annettiin vapaammat kädet osallistua mukaan kielen kehitykseen .
Kielestä ilmestyi joulukuussa 2008 uusi versio 3.0, joka toi mukanaan paljon uudistuksia. Näistä johtuen se on epäyhteensopiva versioiden 2.x ja vanhempien kanssa. Vanhoille versioille kirjoitetut ohjelmat eivät toimi suoraan versiossa 3.0. Siirtymän helpottamiseksi on toteutettu käännösohjelma (2to3), joka kääntää automaattisesti osan koodista kielen uudempaan versioon. Lisäksi useita kolmosversion keskeisiä ominaisuuksia on toteutettu rinnakkain kehitettyyn 2.6 versioon, mikä mahdollistaa niiden hyödyntämisen ilman uudempaan syntaksiin siirtymistä.

Kielen keskeiset piirteet

Python-kieli tukee useita ohjelmointiparadigmoja; erityisesti sitä voi käyttää oliopohjaisena, proseduraalisena tai funktionaalisena ohjelmointikielenä. Yleisesti ottaen luonteenomaista Pythonille on pyrkimys selkeään ja luettavaan ohjelmakoodiin. Kauneuden ja yksinkertaisuuden tavoitteleminen ovat keskeinen osa kielen suunnittelufilosofiaa.
Tyyppijärjestelmältään Python on dynaamisesti tyypittävä ohjelmointikieli. Toisin kuin esimerkiksi C-kielestä tutussa staattisessa tyypityksessä, muuttujan tyyppiä ei tarvitse erikseen esitellä, vaan se määräytyy siihen tallennettavan objektin tyypin perusteella. Tästä seuraa se, että  Python-kääntäjät eivät tee tyyppitarkistuksia käännösaikaisesti, vaan virheet aiheuttavat pääsääntöisesti ajonaikaisia poikkeuksia.
Dynaamista tyypitystä käytetään Python-ohjelmoinnissa usein hyväksi tekemällä ns. "ankkatyypitystä". Ankkatyypityksessä (engl. duck typing) objektin, esimerkiksi muuttujan, tyyppi määritetään ajonaikaisen tarkastelun perusteella sen kutsuvaiheessa. Tyyppivirheen sattuessa syntyy poikkeus, joka voidaan ottaa vastaan ja käsitellä. Näin ankkatyypityksellä voidaan toteuttaa olio-ohjelmoinnissa usein periyttämällä toteutettava polymorfinen korvaus ilman eksplisiittistä riippuvuutta valittuun tyyppiobjektiin.

Esimerkkejä

Pythonia voi kokeilla helposti interaktiivisen tulkin avulla:
>>> print("Hello, world!")Hello, world!>>> 2*42 
84
Määritellään funktio ja kutsutaan sitä:
>>> def tuntipalkka(palkka, aika):>>>     return palkka / aika>>>>>> tuntipalkka(210, 8)26.25

Grafiikka

Pythonissa itsessään ei ole mahdollisuutta ladata kuvia tai muuta mediaa, mutta tämä onnistuu esimerkiksi Pygame-moduulin avulla.

Toteutukset

Python-kielestä on tehty useita toteutuksia. Tunnetuimmat ovat C-ohjelmointikielellä tehty alkuperäinen (kielen määrittelevä) toteutus ja Java-ohjelmointikielellä tehty Jython. Muita toteutuksia ovat esimerkiksi IronPython .NET- ja Mono-alustoille sekä Python-kielellä itsellään uudelleentoteutettu PyPy. Mobiilialustoista Python on sovitettu myös Symbian S60 -alustalle  - lisäksi kielestä on kehitetty Maemo-alustaan optimoitu versio . Sulautettujen järjestelmien ohjelmointiin on myös MicroPython.
Python-tulkki ja -kirjastot on kehitetty avoimen lähdekoodin projektina, ja niitä levitetään Pythonin oman lisenssin (Python Software Foundation License) alaisena, joka on yhteensopiva myös GPL-lisenssin kanssa. Pythonin lisenssi sallii lisäksi kaikenlaisen kaupallisen käytön ja jopa kaupallisen uudelleenlevittämisen.
Python-koodin tulkitseminen ja ajoa edeltävä optimointi saattavat joskus olla hitaita prosesseja, ja Pythonia ajetaankin useimmiten tavukoodina hieman Javan tapaan. Tämä vie ohjelman suorituksesta pois yhden hitaammista vaiheista, tulkkaamisen tavukoodiksi; tulkkaamattoman Python-skriptin ajaminen saattaa olla moninkertaisesti tavallisen C-kielisen ohjelman ajamista hitaampaa. Toisaalta suurimmat eroavuudet suorituskyvyssä liittyvät käytettyihin tietorakenteisiin ja algoritmeihin, joten Python-kielinen toteutus ei ole automaattisesti hitaampi. Lisäksi Pythoniin voi tehdä helpohkosti C-kielisiä laajennoksia, jos erityinen nopeus on tarpeen.

CUDA-ohjelmointi

Nvidian grafiikkapiirien CUDA-ohjelmointi on mahdollista Pythonilla. Tällä tavalla laskenta voidaan antaa grafiikkapiirin rinnakkain suoritettavaksi.