Python programmēšanas valoda

Kas ir Python, jeb, latviski saukts arī vienkārši par Pitonu? Saskaņā ar oficiālo vietni python.org, ja būtu jāraksturo Pitonu dažos vārdos - tā ir interpretēta, objektorientēta, augsta līmeņa programmēšanas valoda ar dinamisku semantiku. Tā augsta līmeņa iebūvētās datu struktūras apvienojumā ar dinamisko rakstīšanu un dinamisko saistīšanu padara to ļoti pievilcīgu ātrai lietojumprogrammu izstrādei, kā arī izmantošanai kā skriptu vai līmēšanas valodu, lai savienotu kopā esošos projekta komponentes, un citās sfērās, kuras aplūkosi tālāk.

Pitona vienkāršā, viegli apgūstamā sintakse uzsver lasāmību un tādējādi samazina programmas uzturēšanas izmaksas. Tas atbalsta moduļus un bibliotēkas (libraries), kas veicina programmu modularitāti un koda atkārtotu izmantošanu. Pitona koda tulks un plašā standarta bibliotēka ir pieejama pirmkoda vai binārā formā bez maksas visās galvenajās platformās, un tos var brīvi izplatīt.

Šajā rakstā mēs Tev sīkāk pastāstīsim par visiem izmantotajiem Pitonu aprakstošiem svešvārdiem, Pitona vēsturi, sintaksi, uzbūvi un pielietojumu mūsdienās, lai Tev rastos priekšstats par šo programmēšanas valodu un, iespējams, vēlme to sākt apgūt jau pavisam drīz.

Vēsture.

Pitonu 80. gadu beigās izstrādāja programmētājs Gvido van Rosums, kurš izstrādes laikā darbojās Nīderlandes Informātikas un matemātikas centrā. Izstrāde tika veikta no darba brīvā laikā. Par pamatu tika ņemta ABC valoda, kas tika izmantota programmēšanas apmācībai, kā arī to cilvēku ikdienas darbam, kuri nav programmētāji.

Ir manīts, ka jaunie izstrādātāji, uzsākot apgūt valodu, nemaz neuzdod jautājumu, kāpēc Pitons tiek saukts… Par “Pitonu”?

Gvido van Rosums vēlējās atrast īsu, unikālu un nedaudz noslēpumainu vārdu. Viņš uzskatīja, ka kodēt ar Pitonu ir jautri, viegli un saprotami. Kādu dienu, lasot angļu komiķu grupas "Monty Python” TV epizodes scenāriju, viņš saprata, ka kodēt Pitonā ir tik pat jautri, kā skatīties “Monty Python” šovus! Tā arī radies, tik ļoti nejauši un spontāni, šīs programmēšanas valodas nosaukums.

Kā norisinājās Pitona attīstība un uzplaukums? Šos attīstības posmus var iedalīt 3 daļās:

  1. 1991. gada februārī pirmkods publicēts alt.sources, kas toreiz tika izmantots dažādu projektu pirmkoda publicēšanai. Nosacīti sauksim to par Pitona 1.0 versiju. Tajā laikā Pitons jau atbalstīja objektorientēto programmēšanu jeb OOP, varēja strādāt ar klasēm, objektiem, funkcijām, mantošanu, izņēmumu apstrādi (exceptions), kā arī atbalstīja visas galvenās datu struktūras.
  2. 2000. gadā izveidota 2. Pitona versija. Pievienoti svarīgi rīki, piemēram, atkritumu savācējs (automātisks atmiņas menedžments) un Unicode rakstzīmju kodēšanas standarts.
  3. 2008. gada 3. decembrī izlaists Python 3.0. Šī versija joprojām skaitās kā galvenā, un šī raksta izveides laikā aktuālā Pitona versija ir 3.10.

Versijā 3.0 tika pārtaisītas vairākas funkcijas, kas izraisīja nesaderību ar iepriekšējām versijām. Par funkcionalitāti runājot, Python 3.0 versija šajā ziņā neatpaliek no 2.0. Interesanti, ka valodas attīstība šajā posmā bija sadalīta 2 atzaros. Daži turpināja lietot 2. versijas Pitonu, kas bija nepieciešams veco projektu atbalstam. Daži pilnībā pārgāja uz 3. versiju, baidoties, ka vairs neatbalstīs otro, lai gan jāpiebilst, ka Python 2 "nāves" jeb neatgriezeniskas novecošanas datums, pēc kura vairs netiktu izlaisti jauni atjauninājumi, bija vairākkārt pārcelts atkal un atkal, paildzinot tā atbalstu.

Pitona sintakse.

Kas vispār ir šeit bieži pieminētā un Pitona unikālā sintakse?

Sintakse ir noteikumu kopums, kas nosaka simbolu kombinācijas programmēšanas valodā (kodā), kuras tiek uzskatītas par pareizi strukturētiem paziņojumiem vai izteiksmēm.

Pitona priekšrocība ir tajā, ka tā sintakse rakstās cilvēkiem viegli lasāmā formātā, pēc kā interpretētājs būs atbildīgs par šī koda tulkošanu datoram saprotamās mašīnas instrukcijās.

Pitona sintakse savā būtībā sastāv no tādiem jēdzieniem kā mainīgie, datu struktūras, cilpas (loops) un citas izteiksmes, neiekļaujot sevī mašīnu reģistru pārvaldīšanas, atmiņas adresēm vai atmiņas attīrīšanu.

Pateicoties tā sintaksei, Python programmēšanas valoda vienmēr ir izcēlusies citu valodu starpā dēļ sekojošiem faktoriem:

Liekvārdības neesamība. Tikai paši nepieciešamākie atslēgas vārdi;

Līdzība ar parasto angļu valodu, atvieglojot koda izpratni;

Rakstāmā koda daudzuma samazināšana līdz minimumam;

Nav jāizmanto tādi simboli kā ";", "{", "}", kas ir obligāti citu valodu sintaksēs;

Visunikālākā Pitona sintakses iezīme: lai norādītu bloku ligzdošanu un hierarhiju Pitonā, tiek izmantotas atkāpes, kas palielina koda lasāmību, vienlaikus iemācot programmētāju veidot pareizus koda bloka dizainus.

Pitona vienkāršo sintaksi var saprast ikviens, tāpēc to bieži iesaka apgūt kā pirmo valodu. Zemāk vari aplūkot vienkāršu Pitona funkcijas piemēru, kas izvada nejaušu krāsas nosaukumu no masīva colors:

Pitona plusi.

Pitonam ir visas priekšrocības, ko sniedz objektorientēta valoda, piemēram, abstrakcija, iekapsulēšana, mantošana un polimorfisms.

Tā ir augsta līmeņa valoda, atšķirībā no tādām zema līmeņa valodām kā Asambler, C un C++. Augsta līmeņa valodas ir abstraktākas, vieglākas lietošanā un vieglāk pārnesamas uz citām platformām. Šādās valodās parasti nav tiešu procesora komandu, kas jauniem programmētājiem var šķist ļoti mulsinošas C un C++ valodās. Pitons, tāpat kā citas augsta līmeņa valodas, darbojas ar abstraktiem datiem.

Ja mēs Pitonu apskatām no ikdienišķas lietošanas perspektīvas, tad tā vienkāršība padara to par vienu no labākajām programmēšanas valodām iesācējam vai ikvienam, kas pāriet no citas “C tipa” valodas, piemēram, C++. Tieši tāpēc daudzi pieredzējuši programmētāji uzskata, vai, pēc daudziem pieredzes gadiem C++ izstrādē saprot, ka Pitons atvieglo koda rakstīšanu un arī palielina komplicētu projektu izstrādes ātrumu. Tas ir iespējams, izmantojot šādas Pitona priekšrocības:

-        Dinamiskā rakstīšana. Izstrādātājam nav nepieciešams norādīt mainīgo veidu. Valoda to piešķirs pati, un dažāda veida operētāji, kas piedalās vienā operācijā, automātiski, bet saskaņā ar noteiktiem noteikumiem, tiks konvertēti uz vajadzīgo tipu;

-        Ērta vairāku vērtību atgriešana, izmantojot funkcijas. Izstrādātājs var uzskaitīt vērtības, atdalītas ar komatiem, kā rezultātā tās tiek pārvērstas sarakstā, turklāt automātiski. Pievērsiet uzmanību funkcijas name izvadei:

name_1, name_2 = “John”, “Armin  jeb a, b = b, a. Šādi mēs mainītu vai definētu mainīgo vērtības. Tas, kas bija a, kļuva par b un otrādi. Šī metode ir ērta un ļauj definēt vai apmainīties ar trīs, piecu vai vairāk mainīgo vērtībām, kā ir redzams augstāk esošā piemērā.

-        Automātiska atmiņas piešķiršana. Izstrādātājam pašam nav kaut kam jāpiešķir atmiņa. Jā, tas samazina kontroli pār programmu, taču ir arī pluss - izstrāde patiešām paātrinās.

-        Atkritumu savācējs. Kad objekts kļūst nederīgs, jeb, nekas cits uz to neattiecas, atkritumu savācējs šādu objektu noņem automātiski. Šī funkcija ļauj optimāli izmantot atmiņu, kā arī nav nepieciešams manuāli dzēst nevajadzīgus objektus.

-        Datu tipu saistīšana. Pitonā datu tipi ir saistīti ar vērtībām, nevis mainīgajiem. Vērtība ir kāds objekts ar atribūtiem, kas nosaka šī objekta veidu un citas īpašības, un mainīgais ir tikai atsauce uz šo objektu. Ko šī pieeja ļauj sasniegt? Nav nepieciešams skaidri definēt veidus, kas ievērojami vienkāršo vērtības atkārtotu piešķiršanu mainīgajam (kas ir īpaši svarīgi, ja jaunās vērtības veids atšķiras no sākotnējās vērtības).

-        for cilpa. Pitonā ir diezgan ērti strādāt ar sarakstiem, masīviem un citiem konteineriem. Ja nepieciešams iterēt jeb atkārtoti apļot pa visiem tā elementiem, tad koda bloka uzbūve izskatās šādi:

for y in container:

Iterācija tiek veikta no nulles līdz pēdējam elementam; indeksu var apzīmēt kā -1).

Ja nepieciešams izpildīt noteiktu skaitu cilpu, var rakstīt:

"for y in range (1,8):"

Cikliskais bloks tiks izpildīts ar y vērtībām no 1 līdz 7.

Cits Pitona pluss ir tajā, ka tas ir veidots pēc atvērtā koda principa jeb open-source, tāpēc to var izmantot bez maksas un to var izplatīt pat komerciālai lietošanai. Tas ir plaši atbalstīts un tam ir pieejamas instalācijas Windows, Mac un Linux sistēmām.

Tāpat Pitona priekšrocība ir liela bibliotēku un ietvaru ekosistēma, kas ļauj ietaupīt laiku un pūles, veidojot savu lietojumprogrammu. Pitona kopiena ir viena no lielākajām starp programmēšanas valodām. Kopienas locekļi regulāri atjauno bibliotēkas, lai tās varētu importēt un atkārtoti izmantot sava projekta konkrētajam uzdevumam vai problēmai, kas jau tika atrisināta ar cita kopienas locekļa risinājumu, tādejādi ieekonomējot laiku uz savu personīgo risinājumu izveidi. Pieejamās Pitona bibliotēkas, to apraksti un repozitorijus var apskatīt un pielietot pypi.org mājaslapā.

Pitona trūkumi.

Neskatoties uz Pitona pozitīvajām iezīmēm, tam ir arī savi zināmi trūkumi, kas pārklājas ar tā stiprajām pusēm, piemēram:

-        Tā vienkāršība. Pitons ir vienkārša programmēšanas valoda, kas ir arī lielākais trūkums. Tā patiešām var būt problēma. Tā sintakse ir tik ļoti vienkārša, ka valoda padara programmētāju par ekskluzīvu pitonistu, jeb cilvēku, kas izvairās un baidās no citu valodu pielietojuma; viņam var šķist nevajadzīgs un pat arhaisks citas, grūtākas valodas kods, piemēram, Java. Daudzi savā praksē ir secinājuši, ka ar novēlotiem dinamiskajiem modeļiem un plašajām bibliotēkām pāreja uz jaunu valodu no Pitona kļūst sarežģīta, jo lietotājam ir grūti pielāgoties tās citādākai sintaksei un liekvārdībai, kas nav raksturīga Pitonam.

-        Ātrums. Salīdzinot ar Java vai C, Pitona koda darbības ātrums (neskatoties uz projekta rakstīšanas ātrumu ar Pitonu) ir lēnāks. Tā ir interpretēta valoda, kas tiek dinamiski drukāta. Lai izpildītu kodu, katra koda rindiņa ir skaidri jāsakārto, jo valoda tiek interpretēta. Tas ir laikietilpīgs process, un tāpēc tas palēnina kopējo koda izpildi. Tāpēc gadījumos, kad nepieciešams ātra koda izpilde, Pitons nav ieteicamā valoda projekta izstrādei.

-        Atmiņas patēriņš. Pitonam ir ļoti liels atmiņas patēriņš. Tas ir tāpēc, ka Pitons ir elastīgs attiecībā uz datu veidiem, tādēļ interpretācijas laikā atmiņā tiek saglabāti vairākas mainīgo variācijas. Pitons nav laba izvēle projektu izstrādei, kur izstrādātājs vēlas optimizēt izmantojamo “dzelžu” atmiņu.

Pielietojums.

Saskaņā ar Stack Overflow 2021. gada aptauju, Pitons ir viena no iecienītākajām programmēšanas valodām starp 83 052 aptaujātājiem izstrādātajiem, ierindojoties 4. vietā starp 38 valodām. Pēdējo gadu laikā Pitona popularitāte izstrādātāju vidū ir pieaugusi, tāpēc tagad mēs varam labāk spriest par to, kur visbiežāk un efektīvāk tas tiek izmantots.

Pitonam ir viens no plašākajiem pielietojumiem, un tas ir ikdienas rīks ne tikai programmētājiem. Pitonu var izmantot arī citās jomās, lai risinātu dažāda veida ikdienišķas un biznesa problēmas, piemēram, datu zinātnē, datu analīzē un datu vizualizācijā.

Grāmatveži, datu analītiķi,  pētnieki un citi var izmantot Pitonu un tā bibliotēkas, lai vizualizētu no rīcībā esošiem datiem tendences un modeļus, prognozēt nākotnes rezultātus un pieņemt lēmumus.

Vēl viena tendence šajā gadījumā ir mākslīgais intelekts un mašīnmācīšanās. Šo jomu popularitāte pēdējos gados ir strauji pieaugusi, īpaši Covid pandēmijas laikā. Nesenie aparatūras un tehnoloģiju uzlabojumi kopumā izraisīja skaitļošanas jaudas pieaugumu, un mākoņdatošanas revolūcija ļāva arī izmantot esošos algoritmus praktiski visur. Arī lietojumprogrammu saraksts šeit ir neierobežots: no surogātpasta noteikšanas iesūtnē līdz runas atpazīšanai tālruņos un citās ierīcēs, sejas noteikšana kamerās, objektu vai cilvēku izsekošana pašbraucošajos transportlīdzekļos, reklāmas sistēmas internetveikalos, mērķtiecīgās reklāmas attēlojuma programmēšana, pamatojoties uz meklēšanas vēsturi un pat tērzēšanas roboti jeb čatboti.

Viens no Pitona agrīnākajiem un vēl joprojām izplatītākajiem  pielietojumiem ir skriptēšana un automatizācija. Šajā pielietojumā to izmanto, lai rakstītu nelielas programmas, kas paredzētas vienkāršu uzdevumu automatizēšanai vai dažādu servisu arhitektūras komponentu savienošanai. Izplatītākie lietošanas gadījumi ir failu pārvietošana no vienas vietas uz citu vai datu pārmeklēšana un izvilkšana no konkrētām vietnēm jeb screen scrapping. To var iztēloties kā sasaistošu sistēmu kādā no pakalpojumu salīdzināšanas platformām. Piemēram, lidojumu salīdzināšanas vietne, kur Pitonā rakstītie skripti skenē informāciju no dažādām aviokompānijām un sniedz datus, lai varētu izvēlēties labāko cenu.

Cita plaša Pitona pielietošanas joma ir tīmekļa izstrāde un servera puses (back-end) programmēšana. Uz Pitona balstīti ietvari, piemēram, Django vai Flask, nesen ir kļuvuši ļoti populāri tīmekļa izstrādē, tomēr tās vēl joprojām nespēj iekarot pietiekamu izstrādātāju un kompāniju interesi, lai popularitātes ziņā apsteigtu tādus PHP back-end izstrādes ietvarus kā Laravel un Symfony. Izstrādes ietvari nodrošina utilītas, kas atvieglos izstrādi, ja izstrādājat vairāklapu internetvietni, REST API un darbu ar datu bāzēm.

Pitonu var izmantot arī mobilajās un galddatoru lietojumprogrammās, spēļu izstrādē, robotu programmēšanā, programmatūras testēšanā un jebkur citur, ko vien izstrādātājs to var iztēloties.

Darbs.

Labi pazīstami tehnoloģiju giganti ir publiski paziņojuši, ka savos produktos un pakalpojumos izmanto Pitonu. Daži no tiem ir Google, Netflix, Amazon, Spotify un pat Facebook. Neatkarīgi no tā, vai esi pieredzējis izstrādātājs vai tikai sāc programmēšanas karjeru, Pitona apguve ir lieliska izvēle, kas paver daudz darba iespēju dažādās tehnoloģiju jomās, pat pasaules slavenās kompānijās.

Programmēšana Pitonā mūsdienās ir labi apmaksāta prasme un tās izmantošana nozarē pieaug.

Patreiz Latvijas darba tirgū Pitons tiek izmantots, lielākoties, trīs jomās: back-end puses izstrādē, datu analītikā un mašīnmācības modeļu izstrādē. Saskaņā ar Algas.lv datiem, Pitonistu alga Latvijā svārstās no 976 līdz 2243 EUR, dažkārt sasniedzot pat 5000 EUR.

Patreiz Pitona izstrādātāji Latvijā nav tik pieprasīti back-end puses izstrādē kā, piemēram, PHP izstrādātāji, tomēr pieprasījums lēni, bet stabili aug. Liels Pitonistu pieprasījums ir NVS (Neatkarīgo Valstu Sadraudzības) valstīs, kā piemēram Baltkrievijā, Ukrainā un Krievijā.

Secinājumi.

Pitons apvieno gan vienkāršību, gan jaudīgu rīku komplektu, un šī vienkāršība neliedz to izmantot sarežģītu problēmu risināšanai. To iespējams izmantot gandrīz jebkuras programmas sākotnējam prototipam. Tāpat, lai, piemēram, paātrinātu izstrādi, bieži Pitons tiek rakstīta kā programmas daļa, kas būtiski neietekmē visas programmas ātrumu.