Python (programmalastırıw tili)

Pythonjoqarı dárejeli, ulıwma maqsetli programmalastırıw tili. Onıń dizayn filosofiyası zárúr sheginiwlerdi qollanıw arqalı kodtı oqıwǵa imkaniyat beredi.

Python dinamikalıq túrde teriledi hám shıǵındı jıynaladı. Ol strukturalıq (ásirese proceduralıq), obyektke baǵdarlanǵan hám funkcional baǵdarlamalastırıwdı qosqanda, birneshe baǵdarlamalastırıw paradigmaların qollaydı. Ol standart kitapxanasınıń keń kólemine baylanıslı “batareya menen úskenelengen” til retinde sáwlelenedi.[1]

Gido van Rossum 1980 jıllardıń sońında ABC baǵdarlamalastırıw tiliniń miyrasxorı retinde Python-da jumıs islep basladı hám onı 1991 jılı 0.9.0 retinde dáslepki ret shıǵardı.[2] Python 2.0 2000 jılı shıǵarıldı. 2008 jılı shıǵarılǵan Python 3.0 aldıńǵı versiyaları menen tolıq keri úylesimli emes tiykarǵı versiya boldı. 2020 jılı shıǵarılǵan Python 2.7.18, Python 2 qollanbasınıń sońǵı shıǵarılımı boldı.[3]

Python turaqlı túrde eń ataqlı baǵdarlamalastırıw tilleriniń biri bolıp tabıladı hám mashinalı oqıtıw jámiyetshiliginde keńnen qollanıladı..[4][5][6][7]

 
Python dizayneri, Gido van Rossum, OSCON 2006-da

Python 1980-jıllardıń aqırında Niderlandiyadaǵı Centrum Wiskunde & Informatica (CWI) mákemesinde Gido van Rossum menen SETL ilhamlandırılǵan, Amoeba operacion sistemasında arnawlı redaktorlawǵa hám interfeyske qábiletli ABC baǵdarlamalastırıw tiliniń miyrasxorı retinde qarastırılǵan. Onı ámelge asırıw 1989 jıl dekabrde baslandı. Van Rossum jobanıń jetekshisi hám islep shıǵıwshısı retinde 2018 jıl 12 iyulge shekem, ol Python-nıń “ómir boyı miyrimli diktatorı” retindegi minnetlerin “turaqlı demalısın” járiyalaǵanǵa deyin jobanıń juwapkershiligin óz moynına aldı. Jámiyetshilik oǵan jobanıń bas sheshim qabıllawshısı retinde óziniń uzaq múddetli minnetlemesin kórsetiw ushın berilgen. 2019 jıl yanvarda Python tiykarǵı jaratıwshıları jobanı basqarıw ushın bes aǵzadan ibarat Basqarıw keńesin sayladı.[8][9]

Python 2.0 2000 jıl 16 oktyabrde shıǵarıldı, onıń ishinde dizimdi túsiniw, cikldi anıqlaytuǵın shıǵındı jıynaw, siltemelerdi sanaw hám Yunikodtı qollaw sıyaqlı kóplegen jańa imkaniyatlar bar. Python 3.0, 2008 jıl 3 dekabrde shıǵarıldı, onıń kóplegen tiykarǵı imkaniyatları Python 2.6.x hám 2.7.x versiyalarına tiykarlanǵan. Python 3 shıǵarılımları Python 2 kodın Python 3 tiline awdarıwdı avtomatlastıratuǵın 2to3 utilitasın qamtıydı.[10]

Python 2.7 xızmetiniń juwmaqlanıwı dáslebinde 2015 jılǵa belgilendi, sonnan keyin qollanıwdaǵı kodtıń úlken kólemin Python 3 sistemasına ańsat baǵdarlaw múmkin emes degen alańlawshılıq penen 2020 jılǵa shegirildi.[11][12] Soń qáwipsizlik patchları yamasa basqa jaqsılawlar shıǵarılmaydı.[13][14] Házirgi waqıtta tek 3.8 hám onnan keyingi versiyalarǵa qollaw kórsetiledi (2023 qáwipsizlik máselesi, mısalı: 3.7.17, sońǵı 3.7.x shıǵarılımında dúzetildi[15]). Python 2.7 hám onnan joqarı versiyasına rásmiy túrde qollaw kórsetilmegeni menen, Python-nıń basqa rásmiy emes engiziwi,  PyPy, Python 2, yaǵnıy "2.7.18+" (plyus 3.9 hám 3.10), plyus mánisi (kem degende ayırım) “qorǵalǵan qáwipsizlik jańalawları menen” qollaw kórsetiwdi dawam ettirmekte.[16]

2021 jılı (hám 2022 jılı taǵı eki ret) qáwipsizlik jańalawları jedelletildi, óytkeni aralıqtan kodtıń orınlanıwına hám veb-keshtiń uwlanıwına ákeletuǵın qáwipsizlik máselelerine baylanıslı barlıq Python versiyaları qáwipli boldı (sonıń ishinde 2.7[17]) Kóplegen qáwipsizlik máselelerine baylanıslı 2022 jılı Python 3.10.4 hám 3.9.12 tezlestirildi hám 3.8.13. Python 3.9.13 2022 jıl may ayında shıǵarılǵan gezde, 3.9 seriyası (eski 3.8 hám 3.7 seriyalarına qosılatuǵın) keleshekte tek qáwipsizlik dúzetiwlerin alatuǵını járiyalandı. 2022 jıl 7 sentyabrde itimal xızmet kórsetiwden bas tartıw hújimine baylanıslı tórt jańa shıǵarılım jaratıldı: 3.10.7, 3.9.14, 3.8.14 hám 3.7.14.[18][19]

2023 jıl oktyabrdegi jaǵday boyınsha Python 3.12 turaqlı shıǵarılım hám 3.12 hám 3.11 belsendi (tek qáwipsizlikke qaraǵanda) qollaw kórsetiletuǵın jalǵız versiyalar bolıp tabıladı. 3.10-nan 3.11-degi qatań ózgerislerge baǵdarlamanı orınlaw tezligin arttırıw hám qáte tuwralı esabat beriwdi jaqsılaw kiredi..[20]

Python 3.12 sintaksisti qosadı (hám shın mánisinde hárbir Python, óytkeni kem degende 3.5 ayırım sintaksisti qosadı) tilge jańa (jumsaq) gilt sóz túri (sońǵı shıǵarılımlar teriwdi qollawdıń kóp túrin qosqan, mısalı 3.10-daǵı jańa tipti biriktiriw operatorı) hám 3.11 arnawlı jaǵdaylardı redaktorlaw ushın hám 3.10 sáykeslik hám registr (jumsaq) gilt sózler, strukturalıq úlgi sáykeslik málimlemeleri ushın. Python 3.12 sonıń menen qatar eskirgen moduller menen funkcionallıqtı joq etedi hám keleshek versiyalarda tómende “Rawajlandırıw” bólimin qarań.

Python 3.11 Python 3.10 versiyasına qaraǵanda 10 hám 60% tezirek dep málimleydi, al Python 3.12 onıń ústine taǵı 5% qosadı. Sonday-aq, onıń jaqsılanǵan qáte tuwralı xabarları hám basqa da kóplegen ózgerisleri bar.

2023 jıl 27 iyunnan [jańalaw] Python 3.8 — Python 3.7 versiyasınıń xızmet etiw múddetiniń juwmaqlanıwına baylanıslı (“qáwipsizlikti qollaw” basqıshında bolsa da) Python baǵdarlamasınıń qollaw kórsetiletuǵın eń eski versiyası.[21]

Dizayn filosofiyası hám ózgeshelikleri

redaktorlaw

Python - kóp paradigmalı baǵdarlamalastırıw tili. Obyektke baǵdarlanǵan programmalastırıw hám strukturalıq programmalastırıw tolıq qollawǵa iye hám olardıń kóplegen imkaniyatları funkcionallıq programmalastırıwdı hám aspektke baǵdarlanǵan programmalastırıwdı (metaprogrammalastırıwdı hám metaobyektlerdi qosqanda) qollaydı. Kóplegen basqa paradigmalar keńeytpeler arqalı qollaydı, sonıń ishinde shártnama boyınsha dizayn hám logikalıq programmalastırıw.

Python yadtı basqarıw ushın dinamikalıq teriwdi hám siltemelerdi sanaw kombinaciyasın hám cikldı anıqlaytuǵın shıǵındı jıynaǵıshtı paydalanadı.[22] Ol baǵdarlamanı orınlaw gezinde usıl menen ózgeriwshi atlardı baylanıstıratuǵın dinamikalıq atama ruqsatın (kesh baylanıstırıw) paydalanadı.

Onıń dizaynı Lisp tradiciyasında funkcional programmalastırıwǵa ayırım qollawdı usınadı. Onıń filtr, kishireytiw funkciyaları bar; túsiniklerdi, sózliklerdi, toplamlardı hám generator ańlatpaların dizimge aladı. Standart kitapxanada Haskell hám Standard ML-den alınǵan funkcional qurallardı ámelge asıratuǵın eki modul (itertools hám functools) bar.

Onıń tiykarǵı filosofiyası Python Zeninde (PEP 20) ulıwmalastırılǵan, ol tómendegishe aforizmlerdi qamtıydı:

  • Birtúrliden sulıw jaqsıraq.
  • Ashıq emes, jasırın emes.
  • Quramalıdan góre ápiwayı.
  • Quramalıdan ǵóre quramalı
  • Oqıwǵa qábiletlilik esaplanadı.

Degen menen, Python imkaniyatları bul principlerdi bárqulla buzadı hám kereksiz tildiń kebiwin qosqanı ushın sınǵa ushıradı.[23][24] Bul sınlarǵa juwaplar Python Zen qaǵıydadan ǵóre kórsetpe bolıp tabıladı.[25] Ayırım jańa imkaniyatlardı qosıwdıń dawlı bolǵanı sonshelli, Gvido van Rossum Python 3.8-de tayınlaw ańlatpası operatorın qosqannan keyin ómir boyı miyrimli diktator xızmetinen ketti.[26][27]

Sintaksis hám semantika

redaktorlaw

Python ańsat oqılatuǵın til bolıwı kerek. Onıń pishimi kórkem túrde tosıqlarsız hám kóbinese basqa tiller punktuaciya belgilerin qollanatuǵın inglis gilt sózlerin paydalanadı. Kóplegen basqa tillerden ayırmashılıǵı, ol bloklardı sheklew ushın figuralı qawsırmalardı paydalanbaydı hám járiyalanıwlardan keyingi noqatlı útirlerge ruqsat etiledi, biraq az qollanıladı. Onıń C yamasa Paskalǵa qaraǵanda sintaksislik ózgeshelikleri menen arnawlı jaǵdayları az.

Python bloklardı sheklew ushın figuralı qawsırmalardı yamasa gilt sózlerdi emes, bos orın sheginisin paydalanadı. Sheginistiń artıwı belgili bir járiyalanıwlardan keyin keledi; sheginistiń tómenlewi aǵımdaǵı bloktıń tamamlanıwın bildiredi. Usılayınsha, baǵdarlamanıń kórnekli strukturası onın semantikalıq strukturasın dál kórsetedi.[28] Bul imkaniyat geyde ofsayd qaǵıydası dep ataladı. Ayırım basqa tiller sheginislerdi usılay paydalanadı; biraq kópshiliginde sheginis semantikalıq mániske iye bolmaydı. Usınılǵan sheginis ólshemi - tórt bos orın.[29]

  1. „PEP 206 – Python Advanced Library“. Python.org. 5-may 2021-jılda túp nusqadan arxivlendi. Qaraldı: 11-oktyabr 2021-jıl.
  2. Rossum. „The History of Python: A Brief Timeline of Python“. The History of Python (20-yanvar 2009-jıl). 5-iyun 2020-jılda túp nusqadan arxivlendi. Qaraldı: 5-mart 2021-jıl.
  3. Peterson. „Python 2.7.18, the last release of Python 2“. Python Insider (20-aprel 2020-jıl). 26-aprel 2020-jılda túp nusqadan arxivlendi. Qaraldı: 27-aprel 2020-jıl.
  4. „Stack Overflow Developer Survey 2022“ (en). Stack Overflow. 27-iyun 2022-jılda túp nusqadan arxivlendi. Qaraldı: 12-avgust 2022-jıl.
  5. „The State of Developer Ecosystem in 2020 Infographic“ (en). JetBrains: Developer Tools for Professionals and Teams. 1-mart 2021-jılda túp nusqadan arxivlendi. Qaraldı: 5-mart 2021-jıl.
  6. „TIOBE Index“. TIOBE. — „The TIOBE Programming Community index is an indicator of the popularity of programming languages“. 25-fevral 2018-jılda túp nusqadan arxivlendi. Qaraldı: 3-yanvar 2023-jıl.
  7. „PYPL PopularitY of Programming Language index“ (en). pypl.github.io. 14-mart 2017-jılda túp nusqadan arxivlendi. Qaraldı: 26-mart 2021-jıl.
  8. „PEP 8100“. Python Software Foundation. 4-iyun 2020-jılda túp nusqadan arxivlendi. Qaraldı: 4-may 2019-jıl.
  9. „PEP 13 – Python Language Governance“ (en). Python.org. 27-may 2021-jılda túp nusqadan arxivlendi. Qaraldı: 25-avgust 2021-jıl.
  10. „2to3 – Automated Python 2 to 3 code translation“. docs.python.org. 4-iyun 2020-jılda túp nusqadan arxivlendi. Qaraldı: 2-fevral 2021-jıl.
  11. „PEP 373 – Python 2.7 Release Schedule“. python.org. 19-may 2020-jılda túp nusqadan arxivlendi. Qaraldı: 9-yanvar 2017-jıl.
  12. „PEP 466 – Network Security Enhancements for Python 2.7.x“. python.org. 4-iyun 2020-jılda túp nusqadan arxivlendi. Qaraldı: 9-yanvar 2017-jıl.
  13. „Sunsetting Python 2“ (en). Python.org. 12-yanvar 2020-jılda túp nusqadan arxivlendi. Qaraldı: 22-sentyabr 2019-jıl.
  14. „PEP 373 – Python 2.7 Release Schedule“ (en). Python.org. 13-yanvar 2020-jılda túp nusqadan arxivlendi. Qaraldı: 22-sentyabr 2019-jıl.
  15. „Python Release Python 3.7.17“ (en). Python.org. 31-iyul 2023-jılda túp nusqadan arxivlendi. Qaraldı: 18-avgust 2023-jıl.
  16. mattip. „PyPy v7.3.14 release“ (en). PyPy (25-dekabr 2023-jıl). 5-yanvar 2024-jılda túp nusqadan arxivlendi. Qaraldı: 5-yanvar 2024-jıl.
  17. „CVE-2021-3177“. Red Hat Customer Portal. 6-mart 2021-jılda túp nusqadan arxivlendi. Qaraldı: 26-fevral 2021-jıl.
  18. Langa. „Python releases 3.10.7, 3.9.14, 3.8.14, and 3.7.14 are now available“. Python Insider (7-sentyabr 2022-jıl). 13-sentyabr 2022-jılda túp nusqadan arxivlendi. Qaraldı: 16-sentyabr 2022-jıl.
  19. „CVE-2020-10735“. CVE. 20-sentyabr 2022-jılda túp nusqadan arxivlendi. Qaraldı: 16-sentyabr 2022-jıl.
  20. corbet. „Python 3.11 released [LWN.net“]. lwn.net (24-oktyabr 2022-jıl). Qaraldı: 15-noyabr 2022-jıl.
  21. „Python“ (en-US). endoflife.date (10-avgust 2023-jıl). 18-sentyabr 2021-jılda túp nusqadan arxivlendi. Qaraldı: 15-avgust 2023-jıl.
  22. „Extending and Embedding the Python Interpreter: Reference Counts“ (en). Docs.python.org. — „Since Python makes heavy use of malloc() and free(), it needs a strategy to avoid memory leaks as well as the use of freed memory. The chosen method is called reference counting.“. 18-oktyabr 2012-jılda túp nusqadan arxivlendi. Qaraldı: 5-iyun 2020-jıl.
  23. Lutz. „Python Changes 2014+“. Learning Python (yanvar 2022). 15-mart 2024-jılda túp nusqadan arxivlendi. Qaraldı: 25-fevral 2024-jıl.
  24. Thomas. „Python is not a great programming language“. GitHub Gist (3-may 2023-jıl). 31-dekabr 2023-jılda túp nusqadan arxivlendi. Qaraldı: 25-fevral 2024-jıl.
  25. „Confusion regarding a rule in The Zen of Python“. Python Help - Discussions on Python.org (3-may 2022-jıl). 25-fevral 2024-jılda túp nusqadan arxivlendi. Qaraldı: 25-fevral 2024-jıl.
  26. Ambi. „The Most Controversial Python Walrus Operator“. Python Simplified (4-iyul 2021-jıl). 27-avgust 2023-jılda túp nusqadan arxivlendi. Qaraldı: 5-fevral 2024-jıl.
  27. Grifski. „The Controversy Behind The Walrus Operator in Python“. The Renegade Coder (24-may 2020-jıl). 28-dekabr 2023-jılda túp nusqadan arxivlendi. Qaraldı: 25-fevral 2024-jıl.
  28. Guttag, John V.. Introduction to Computation and Programming Using Python: With Application to Understanding Data, 12 August 2016. 
  29. „PEP 8 – Style Guide for Python Code“. Python.org. 17-aprel 2019-jılda túp nusqadan arxivlendi. Qaraldı: 26-mart 2019-jıl.