Python

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Python

Նմուշը

օբյեկտային կողմնորոշում

Կատարման ձև

ինտերպրետացվող, MSIL կոմպիլյացվող, Javaբայթ-կոդ կոմպիլյացվող

Առաջացել է

1990թ

Հեղինակ(ներ)

Գվիդո վան Ռոսում

Ընդլայնումներ

.py, .pyw, .pyc, .pyo, .pyd

Տիպիզացիա

խիստ, դինամիկ

Հիմնական իրականացումները

CPython, Jython, IronPython, PyPy, Stackless

Ընթացիկ տարբերակը

2.7.6, 2013-11-10 (11 ամիս առաջ)
3.3.3, 2013-11-17 (10 ամիս առաջ)

Ներշնչվել է

ABC, Modula-3, Lisp, Tcl Smalltalk, C, Java, Icon

Ներշնչել է

Ruby, Boo, Groovy, ECMAScript, CoffeeScript

Կայքը

www.python.org

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

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

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

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

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

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

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

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


Aquote2.png


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

    1rightarrow.png Հիմնական հոդված՝ Python-ի պատմությունը

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

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

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

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

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

  • ABC  - օպերատորների խմբավորման համար հեռավորությունների կիառումը, տվյալների բարձր մակարդակի կառուցվածքը (map)[9][10] (Python-ը, փաստորեն, ստեղծվել է նրա համար, որպեսզի ուղղվեն ABC-ի նախագծման ժամանակ առաջացած սխալները),
  • Modula-3  - փաթեթներ, մոդուլներ, else-ի օգտագործումը try-ի և except-ի հետ համատեղ, ֆունկցիաների արգումենտներին անվանումներ տալը (դրա վրա ազդել է նաև Common Lisp լեզուն),
  • С, C++  - որոշ շարահյուսական կառուցներ (ինչպես գրում է Գվիդո վան Ռոսումը, նա օգտագործել է C-ի ամենից շատ չհակասող կառույցներ, որպեսզի Python-ը C-ծրագրավորողների մոտ զզվանք չառաջացնի Python[9]),
  • 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[11] համար։

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

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

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

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

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

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

Նշումներ[խմբագրել]

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

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

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

  1. Լեզվի ստեղծող Գվիդո վան Ռոսումի խոսքերով, անվանումը եկել է ոչ թե նույնանուն կենդանու կամ պիֆոն գերբնական էակի, այլ «Մոնթի Փայթոնի թռչող կրկեսը» հեռուսատշոույից։ Տես՝ http://docs.python.org/faq/general#why-is-it-called-python, սակայն օձի պատկերը արդեն վաղուց դարձել է լեզվի պաշտոնական պատկերանիշի մի մասը։
  2. About Python
  3. Python 2.5 license
  4. PEP 20 — The Zen of Python
  5. Հումորային ակնարկ Գվիդոյի ազգությանը
  6. The Making of Python
  7. http://svn.python.org/view/*checkout*/python/trunk/Misc/HISTORY
  8. Python 3.0 Release
  9. 9,0 9,1 Foreword for «Programming Python» (1st ed.)
  10. The Making of Python
  11. «Python on Android»։ www.damonkohler.com։ Արխիվացված օրիգինալից 2011-01-28-ին։ http://www.webcitation.org/5w4n0S15k։ Վերցված է 19 դեկտեմբեր 2009։ 
  12. «Port-Specific Changes: Windows»։ Python v2.6.1 documentation. What’s New in Python 2.6։ Python Software Foundation։ Արխիվացված օրիգինալից 2011-01-28-ին։ http://www.webcitation.org/5w4n1Glim։ Վերցված է 11 դեկտեմբերի, 2008։ 
  13. Python Documentation - Built-in Types
  14. Are tuples more efficient than lists in Python? — Stack Overflow
  15. Python Success Stories
  16. Python vs Matlab Python for scientists blog
  17. 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.

Հղումներ[խմբագրել]