Python

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search
Python
Python logo and wordmark.svg
Տեսակօբյեկտ կողմնորոշված ծրագրավորման լեզու
Սեմանտիկաօբյեկտային կողմնորոշում
Կատարման ձևինտերպրետացվող, MSIL կոմպիլյացվող, Javaբայթ-կոդ կոմպիլյացվող
Առաջացել էփետրվարի 20, 1991[1]
ՍտեղծողPython Software Foundation և Գվիդո վան Ռոսում[2]
ՆախագծողԳվիդո վան Ռոսում[2]
Ընդլայնումներ.py, .pyw, .pyc, .pyo, .pyd
ՕՀբազմապլատֆորմ[3]
Տիպիզացիախիստ, դինամիկ
Համացանցի տվյալների տեսակtext/x-python[4], application/x-httpd-python[5] և application/x-python-code[6]
Ներշնչվել էԱլգոլ 68[7], ABC[8], Modula-3?[9], C[10], C++[9], Perl, Ջավա, Լիսպ, Haskell[11], APL?, Կլու, Dylan?, Icon? և Standard ML
ԱրտոնագիրPython Software Foundation License[2]
Անվանված էՄոնթի Փայթն[12]
Սխալնելի հայտման էջbugs.python.org
Կայքpython.org(անգլ.)
Աղբյուր կոդgithub.com/python/cpython
Python (programming language) Վիքիպահեստում

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

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

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

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

Փիլիսոփայություն[խմբագրել | խմբագրել կոդը]

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

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

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


Պատմություն[խմբագրել | խմբագրել կոդը]

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

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

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

Այլ լեզուների ազդեցություն[խմբագրել | խմբագրել կոդը]

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

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

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

Դյուրատարություն[խմբագրել | խմբագրել կոդը]

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

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

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

Տվյալների տիպերն ու կառուցվածք[խմբագրել | խմբագրել կոդը]

Python 3. The standard type hierarchy.png

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

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

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

Նշումներ[խմբագրել | խմբագրել կոդը]

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

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

Տես նաև[խմբագրել | խմբագրել կոդը]

Ծանոթագրություններ[խմբագրել | խմբագրել կոդը]

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

Գրականություն[խմբագրել | խմբագրել կոդը]

  • David Beazley, Guido Van Rossum., Python: Essential Reference, «New Riders Publishing», 1999։
  • Martin C. Brown. Python։ The Complete Reference. McGraw-Hill Professional Publishing, 2001
  • Wesley J. Chun. Core Python Programming. Prentice Hall PTR, 2000
  • Alan Gauld. Learn to Program Using Python։ A Tutorial for Hobbyists, Self-Starters, and Those Who Want to Learn the Art of Programming. Addison-Wesley Professional, 2001
  • John E. Grayson. Python and Tkinter Programming. Manning Publications Company, 1999
  • Rashi Gupta. Making use of Python. Wiley, 2002
  • Mark Hammond, Andy Robinson. Python Programming on Win32. O’Reilly, 2000
  • Christopher A. Jones, Fred L. Drake. Python & XML. O’Reilly & Associates, 2001
  • Ivan Van Laningham. Teach Yourself Python in 24 Hours. Sams, 2000
  • Amos Latteier, Michel Pelletier. The Zope Book. New Riders Publishing, 2001
  • Frederik Lundh. Python Standard Library. O’Reilly & Associates, 2001
  • A. Sweigart., Invent Your Own Computer Games with Python, 2008-2010 — 436 էջ, ISBN 978-0-9821060-1-3։
  • A. Sweigart., Core Python Applications Programming, 2012 — 888 էջ, ISBN 978-0-1326782-0-9։

Արտաքին հղումներ[խմբագրել | խմբագրել կոդը]