Jump to content

Python

Վիքիպեդիայից՝ ազատ հանրագիտարանից
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Python
Изображение логотипа
Տեսակօբյեկտ կողմնորոշված ծրագրավորման լեզու
Սեմանտիկաօբյեկտային կողմնորոշում
Կատարման ձևինտերպրետացվող, MSIL կոմպիլյացվող, Ջավայի բայթ-կոդ կոմպիլյացվող
Առաջացել էփետրվարի 20, 1991[1]
ՍտեղծողPython Software Foundation և Գվիդո վան Ռոսում[1]
ՆախագծողԳվիդո վան Ռոսում[1]
Ընդլայնումներ.py, .pyw, .pyc, .pyo, .pyd
ՕՀբազմապլատֆորմ[2]
Տիպիզացիախիստ, դինամիկ
Ներշնչվել էԱլգոլ 68[3], ABC[4], Modula-3?[5], Սի (ծրագրավորման լեզու)[6], C++[5], Perl, Ջավա[7], Լիսպ[8], Haskell[9], APL?[10], Կլու, Dylan?, Icon? և Standard ML[10]
ԱրտոնագիրPython Software Foundation License[1]
Անվանված էՄոնթի Փայթն[11]
Սխալնելի հայտման էջgithub.com/python/cpython/issues
Կայքpython.org(անգլ.)
 Python (programming language) Վիքիպահեստում

Python (անգլ.՝ python, արտասանվում է որպես [ˈpaɪθ⟨ə⟩n] (փայթըն), սակայն հաճախ օգտագործվում է նաև պիտոն (ռուսերենից եկած) տարբերակը, որը նշանակում է կենդանի)[12], ընդհանուր նշանակության բարձր մակարդակի ծրագրավորման լեզու, որը հիմնականում կենտրոնացած է ծրագիրը արագ մշակելու և կոդի հեշտ ընթերցանությունն ապահովելու վրա։ Python-ի միջուկի շարահյուսությունը շատ պարզ և հեշտ է։ Միևնույն ժամանակ, ստանդարտ գրադարանը ներառում է բազմաթիվ օգտակար ֆունկցիաներ։

Python-ն աջակցում է ծրագրավորման մի քանի նմուշներ, այդ թվում՝ կառուցվածքային, օբյեկտային կողմնորոշմամբ, ֆունկցիոնալ, իմպերատիվ և ասպեկտային կողմնորոշմամբ։ Հիմնական կառուցվածքային գծերն են՝ դինամիկ տիպավորումը, հիշողության ավտոմատ կառավարումը, լրիվ ինքնադիտողությունը, բացառությունների վերամշակման մեխանիզմը և բարձր մակարդակի տվյալների կառուցվածքը։ Պիտոնում կոդը կազմված է ֆունկցիաներից և դասերից, որոնք կարող են միավորվել մոդուլներում, որոնք էլ, իրենց հերթին, փաթեթներում։

Python-ի հիմնական ինտերպրետատորը CPython-ն է։ Այն աջակցվում է ակտիվ օգտագործվող հարթակների մեծամասնության կողմից[13]։ Այն տարածվում է Python Software Foundation License ազատ արտոնագրով, որն թույլ է տալիս օգտագործել այն ցանկացած ծրագրերում առանց սահմանափակման[14]։ Գոյություն ունեն նաև ինտերպրետատորի տարբերակներ JVM-ի (կոմպիլյացիայի հնարավորությամբ), MSIL-ի (կոմպիլյացիայի հնարավորությամբ), LLVM-ի համար։ PyPy նախագիծն առաջարկում է Պիտոնի համար հենց Պիտոնով գրված ինտերպրետատոր։

Python-ը ակտիվ զարգացող ծրագրավորման լեզու է։ Նոր տարբերակները (լեզվի հատկությունների ավելացմամբ/փոփոխմամբ) թողարկվում են մոտավորապես 2.5 տարին մեկ անգամ։ Այդ և որոշ այլ պատճառներով, Python-ում բացակայում են ANSI, ISO և այլ պաշտոնական ստանդարտներ, որոնց դերը կատարում է CPython-ը։

Փիլիսոփայություն

Python-ի մշակողները հետևում են ծրագրավորման որոշ փիլիսոփայության, որն անվանում են «The Zen of Python» («Պիտոնի զենը» կամ «Փայթոնի զենը»)[15]։ Ինտերպրետատորը import this հրամանի դեպքում կարտածի այդ կոդը (աշխատում է միևնույն սեսիայում միայն մեկ անգամ)։ Այդ փիլիսոփայության հեղինակը Թիմ Փեյթերսն է։

Փիլիսոփայության տեքստը՝

  • Գեղեցիկն ավելի լավ է, քան տգեղը։
  • Հստակը ավելի լավ է, քան ոչ հստակը։
  • Պարզն ավելի լավ է, քան բարդը։
  • Բարդը ավելի լավ է, քան խճճվածը։
  • Հարթն ավելի լավ է, քան ծալվածը։
  • Նոսրն ավելի լավ է, քան խիտը։
  • Ընթերցելիությունը նշանակություն ունի։
  • Հատուկ դեպքերն այնքան հատուկ չեն, որ դրանց համար խախտել կանոնները։
  • Թեև գործնական լինելն ավելի կարևոր է, քան անթերի լինելը։
  • Սխալներն երբեք չպետք է լռեցվեն։
  • Եթե դրանք հստակ չեն լռեցվում։
  • Հանդիպելով երկիմաստության, թո՛ղ գուշակելու հրապուրանքը։
  • Պետք է գոյություն ունենա մեկ և, ցանկալի է, միայն մեկ ակնհայտ միջոց դա անելու համար։
  • Չնայած այն սկզբում կարող է ոչ այնքան ակնհայտ լինել, եթե, իհարկե, դուք հոլանդացի չեք[16]։
  • Այժմն ավելի լավ է, քան երբեք։
  • Չնայած երբեքն ավելի լավ է, քան հենց հիմա։
  • Եթե մտածածն իրագործելու ձևն դժվար է բացատրել, ապա դա վատ միտք է։
  • Եթե իրագործելու ձևն հեշտ է բացատրել, ապա դա, հնարավոր է, լավ միտք է։
  • Անվանատարածքը լավ բան է։ Դրանից շատ կանենք։

Պատմություն

Python լեզվի մշակումն սկսվել է 1980-ական թվականներին[17] հոլանդական CWI համալսարանի աշխատակից Գվիդո վան Ռոսումի կողմից։ Այն ժամանակ տարածված Amoeba օպերացիոն համակարգի համար անհրաժեշտ էր ընդլայնվող սկրիպտային ծրագրավորման լեզու, և Գվիդոն ազատ ժամանակ սկսեց գրել Python-ը, վերցնելով որոշ առանձնահատկություններ ABC լեզվից (Գվիդոն մասնակցել էր այդ լեզվի ստեղծմանը, որն կենտրոնացված է ծրագրավորման ուսուցման վրա)։ 1991 թ․ փետրվարին Գվիդոն հրապարակեց Python-ի ելակետային տեքստը alt.sources լրատվական խմբում[18]։ Ամենասկզբից Python-ն նախագծված էր որպես օբյեկային կողմնորոշմամբ ծրագրավորման լեզու։

Հեղինակի խոսքերով, լեզուի անվանումն ծագել է ոչ թե սողունի անվանումից, այլ 1970-ական թվականներին հայտնի բրիտանական հումորային «Մոնթի Փայթոնի թռչող կրկեսը» անվանումից։ Չնայած դրան, լեզվի անվանումը շատ հաճախ ասոցիացվում է օձի, ոչ թե ֆիլմի հետ։ Այդ մասին են խոսում KDE-ում կամ Microsoft Windows-ում .py ընդլայնմամբ ֆայլերի պատկերները, և նույնիսկ python.org կայքի պատեկերանիշը (մինչև 2.5 տարբերակը)։

2008 թվականի դեկտեմբերի 8-ին[19], երկարատև փորձարկումներից հետո, թողարկվեց Python 3000-ի նոր տարբերակը (կամ Python 3.0-ն, հաճախ օգտագործվում է նաև Py3k հապավումը)։ Python 3000-ում վերացված են կառուցվածքի որոշ թերություններ՝ հնարավորինս (բայց ոչ լրիվ) պահպանելով համատեղելիությունը Python-ի հին տարբերակների հետ։

Այլ լեզուների ազդեցություն

Հայտնվելով համեմատականորեն ավելի ուշ, Python-ը ստեղծվել է մի քանի լեզուների ազդեցության տակ՝

  • ABC - օպերատորների խմբավորման համար հեռավորությունների կիրառումը, տվյալների բարձր մակարդակի կառուցվածքը (map)[20][21] (Python-ը, փաստորեն, ստեղծվել է նրա համար, որպեսզի ուղղվեն ABC-ի նախագծման ժամանակ առաջացած սխալները),
  • Modula-3 - փաթեթներ, մոդուլներ, else-ի օգտագործումը try-ի և except-ի հետ համատեղ, ֆունկցիաների արգումենտներին անվանումներ տալը (դրա վրա ազդել է նաև Common Lisp լեզուն),
  • С, C++ - որոշ շարահյուսական կառուցներ (ինչպես գրում է Գվիդո վան Ռոսումը, նա օգտագործել է C-ի ամենից շատ չհակասող կառույցներ, որպեսզի Python-ը C-ծրագրավորողների մոտ զզվանք չառաջացնի Python[20]),
  • Smalltalk - օբյեկտային կողմնորոշմամբ ծրագրավորումը,
  • Լիսպ - ֆունկցիոնալ ծրագրավորման առանձին գծեր (lambda, map, reduce, filter և ուրիշներ),
  • Ֆորտրան - շերտավոր զանգվածները, թվաբանությունները,
  • Miranda - ցանկային արտահայտությունները,
  • Ջավա - logging, unittest, threading մոդուլները (դրանց բնօրինակների հնարավորությունների մի մասն իրագործված չէ), xml.sax ստանդարտ գրադարանները, բացառությունների վերամշակման ժամանակ finally-ի և except-ի համատեղ օգտագործումը, @-ի օգտագործումը դեկորատորներում,
  • Icon - գեներատորները։

Python-ի այլ առանձնահատկությունների մեծ մասը (օրինակ, ելատեքստային կոդի բայթ-կոմպիլյացիան) նույնպես այլ լեզուներում ավելի վաղ արդեն իրագործ են եղել։

Դյուրատարություն

Python-ն աշխատում է գրեթե բոլոր հայտնի հարթակների վրա՝ Գրպանի անձնական համակարգիչներից մինչև մեյնֆրեյմներ։ Գոյություն ունեն տարբերակներ Microsoft Windows-ի, գրեթե բոլոր UNIX համակարգերի (այդ թվում՝ FreeBSD-ի և Լինուքսի), Plan 9-ի, Մաք ՕԷսի, iPhone OS 2.0 և ավելի բարձր տարբերակների, Palm OS-ի, OS/2-ի, Amiga-ի, HaikuOS-ի, AS/400-ի և նույնիսկ OS/390-ի, Windows Mobile-ի, Symbian-ի և Անդրոիդի[22] համար։

Այս կամ այն հարթակի հնանալուց հետո լեզվի հիմնական ճյուղում դրա աջակցումը դադարեցվում է։ Օրինակ, 2.6 տարբերակից սկսած դադարեցվել է Windows 95-ի, Windows 98-ի և Windows ME[23] աջակցությունը։ Սակայն այդ հարթակների վրա կարելի է օգտագործել Python-ի նախկին տարբերակներ․ այս պային Python-ի համայնքը աջակցում է լեզվի 2.3-ից սկսած բոլոր տարբերակները (դրանց համար ժամանակ առ ժամանակ թարմացումներ են թողարկվում)։

Չնայած այս ամենին, ի տարբերություն այլ դյուրատար համակարգերի, բոլոր հիմնական հարթակների համար Python-ն ունի տվյալ հարթակին բնորոշ տեխնոլոգիաների աջակցությւոն (օրինակ, Microsoft COM/DCOM)։ Ավելին, գոյություն ունեն Python-ի հատուկ տարբերակ Java―ի համար՝ Jython-ը։ Այն թույլ է տալիս ինտերպրետատորին կատարվել Java―ի աջակցությամբ ցանկացած համակարգում։ Java―ի դասերը կարող են օգտագործվել և նույնիսկ գրվել Python-ի միջոցով։ Որոշ նախագծեր ապահովում են նաև Microsoft .NET հարթակի հետ ինտեգրացիան։ Դրանցից հիմնականներն են IronPython-ը և Python.Net-ը։

Տվյալների տիպերն ու կառուցվածք

Python-ն աջակցում է տվյալների դինամիկ տիպավորում, այսինքն՝ փոփոխականի տեսակը որոշվում է այն օգատգործելու ժամանակ։ Այդ իսկ պատճառով, «փոփոխականին արժեք վերագրել» արտահայտության փոխարեն ավելի ճիշտ է օգտագործել «արժեքի կապումը որոշակի անվան հետ» արտահայտությունը։ Python-ն ունի հետևյալ ներկառուցված տիպերը՝ տրամաբանական (boolean), տողային, Յունիկոդ-տողեր, կամայական ճշտությամբ ամբողջ թվեր, լողացող կետով թվեր, բարդ թվեր և մի շարք այլ տիպեր։ Հավաքածուներից Python-ում կան հետևյալ տիպերը՝ ցուցակներ, կորտեժներ (չփոփոխվող ցուցակ), բառարաններ, բազմություններ և այլն[24]։ Բոլոր արժեքները, այդ թվում՝ ֆունկցիաները, մեթոդները, մոդուլները, դասերը, համարվում են օբյեկտներ։

Տվյալների նոր տիպ ստեղծելու համար անհրաժեշտ է կամ գրել նոր դաս (class), կամ հրապարակել նոր տիպը ընդլայնման մոդուլում (օրինակ, Սի լեզվով գրված մոդուլում)։ Դասերի համակարգը աջակցում է ժառանգում (միակի և բազմակի) և մետածրագրավորում։ Ներկառուցված տիպերի և ընդլայնումների տիպերի մեծ մասը հնարավոր է ժառանգել[25] և bpython[26]։

Բոլոր օբյեկտներն բաժանվում են երկու մասի՝ հղումային և ատոմային։ Ատոմային են int-ը, long-ը, complex-ը և մի շարք այլ օբեկտներ։ Ատոմային օբյեկտների վերագրման ժամանակ պատճենվում են դրանց արժեքները, մինչդեռ հղումային օբյեկտների դեպքում պատճենվում է միայն դեպի այդ օբյեկտ հղումը, որի շնորհիվ երկու փոփոխականներն էլ օգտագործում են միևնույն արժեքը։ Հղումային օբյեկտներն իրենց հերթին լինում են 2 տեսակի՝ փոփոխվող և չփոփոխվող։ Օրինակ, տողերը և կորտեժները չփոփոխվող են, իսկ ցուցակները, բառարանները՝ փոփոխվող։ Python-ում կորտեժը, փաստորեն, համարվում է չփոփոխվող ցուցակ։ Շատ դեպքերում կորտեժներն ցուցակներից ավելի արագ են աշխատում[27], ուստի, եթե չեք ցանկանում փոփոխել հաջորդականությունը, ապա ավելի լավ է օգտագործել դրանք։

Տես նաև

Նշումներ

IDLE

Python-ը ստաբիլ և բավականին տարածված լեզու է։ Այն օգտագործվում է բազմաթիվ նախագծերում։ Դրանցից մի մասում այն օգտագործվում է որպես հիմնական ծրագրավորման լեզու, մյուսներում՝ ծրագրերում ընդլայնումների ստեղծման համար։ Python լեզվով են ստեղծվել բազմաթիվ մեծ ու փոքր նախագծեր։ Այն նաև օգտագործվում է ապագայում ստեղծվելիք ծրագրերի համար նախատիպեր ստեղծելու համար։ Python-ը օգտագործվում է բազմաթիվ ընկերություններում[28]։

Python-ը, իր NumPy, SciPy և MatPlotLib փաթեթների շնորհիվ, շատ դեպքերում օգտագործվում է որպես գիտական հաշվարկների համար ունիվերսալ միջավայր։ Այդպիսով, այն շատ դեպքերում կարող է փոխարինել այնպիսի կոմերցիոն ծրագրերին, ինչպիսիք են Matlab-ը և IDL[29][30]։

Ծանոթագրություններ

  1. 1,0 1,1 1,2 1,3 History and License - Python documentation
  2. Download Python
  3. https://impythonist.wordpress.com/2014/02/16/open-heart-with-guido-van-rosuuma-lost-interview-of-python-creator-part2/
  4. Why was Python created in the first place?PSF.
  5. 5,0 5,1 Classes The Python TutorialPSF.
  6. An Introduction to Python for UNIX/C Programmers
  7. https://peps.python.org/pep-0318/
  8. https://docs.python.org/3.2/tutorial/controlflow.html
  9. Functional Programming HOWTO
  10. 10,0 10,1 https://docs.python.org/3/library/itertools.html
  11. Rossum G. v. Foreword for "Programming Python" (1st ed.)Reston: 1996.
  12. Լեզվի ստեղծող Գվիդո վան Ռոսումի խոսքերով, անվանումը եկել է ոչ թե նույնանուն կենդանու կամ պիֆոն գերբնական էակի, այլ «Մոնթի Փայթոնի թռչող կրկեսը» հեռուսատշոույից։ Տես՝ http://docs.python.org/faq/general#why-is-it-called-python, սակայն օձի պատկերը արդեն վաղուց դարձել է լեզվի պաշտոնական պատկերանիշի մի մասը։
  13. About Python
  14. History and License - Python documentation
  15. PEP 20 - The Zen of Python
  16. Հումորային ակնարկ Գվիդոյի ազգությանը
  17. The Making of Python
  18. «Արխիվացված պատճենը». Արխիվացված է օրիգինալից 2016 թ․ փետրվարի 17-ին. Վերցված է 2012 թ․ սեպտեմբերի 23-ին.
  19. Python 3.0 Release
  20. 20,0 20,1 Foreword for «Programming Python» (1st ed.)
  21. The Making of Python
  22. «Python on Android» (անգլերեն). www.damonkohler.com. Արխիվացված օրիգինալից 2011 թ․ հունվարի 28-ին. Վերցված է 2009 թ․ դեկտեմբերի 19-ին.
  23. «Port-Specific Changes: Windows». Python v2.6.1 documentation. What’s New in Python 2.6 (անգլերեն). Python Software Foundation. Արխիվացված օրիգինալից 2011 թ․ հունվարի 28-ին. Վերցված է 11 դեկտեմբերի, 2008-ին.
  24. Python Documentation - Built-in Types
  25. [https://web.archive.org/web/20180804135112/http://ipython.scipy.org/ Արխիվացված 2018-08-04 Wayback Machine
  26. [1]Արխիվացված 2011-05-11 Wayback Machine bpython interpreter]
  27. Are tuples more efficient than lists in Python? - Stack Overflow
  28. Python Success Stories
  29. Python vs Matlab Արխիվացված 2014-08-24 Wayback Machine Python for scientists blog
  30. IDL vs. Python AstroBetter Tips and Tricks for Professional Astronomers

Գրականություն

Արտաքին հղումներ

Վիքիպահեստն ունի նյութեր, որոնք վերաբերում են «Python» հոդվածին։