Սպորտային ծրագրավորում

Վիքիպեդիայից՝ ազատ հանրագիտարանից
Jump to navigation Jump to search
Սպորտային ծրագրավորման բաց առաջնություն Յանդեքս․Ալգորիթմ, Օգոստոսի 22, 2013թ․

Ծրագրավորման օլիմպիադա, ինտելեկտուալ մրցում, որի ընթացքում լուծվում են բազմաթիվ խնդիրներ էլեկտրոնային հաշվիչ համակարգով՝ օգտագործելով տարբեր ծրագրավորման լեզուների ալգորիթմեր կամ ծրագրեր։ Սովորաբար մասնակիցներին բաժանում են խնդիրների կոմպլեկտ։ Խնդիրը համարվում է լուծված միայն այն ժամանակ, երբ ծրագիրը կարողանում է ճիշտ անցնել ժուրիի կազմած թեստը։ Մասնակիցներին թեստի պարունակությունը մնում է անհայտ։

Սպորտային ծրագրավորումը համարվում է գիտելիքի սպորտ, երբ հավաքվում են աշխարհի տարբեր ծայրերից ծրագրավորողները ( կամ ապագա ծրագրավորողները ) և հիմնականում ինտերնետի միջոցով անց է կացվում տարբեր մրցույթներ, քննարկումներ և գիտելիքի փոխանակումներ։ Սպորտային ծրագրավորումը ընդհանուր ծրագրավորման հիմնական ռեսուրսներից մեկն է, որը տրամադրում է մրցունակ ծրագրավորողներ տարբեր ընկերությունների և ստեղծում ավելի ակտիվ համակարգեր։ Այս ամենը ծագում է այն մտքից, որ սպորտային ծրագրավորումը հնարավորություն է տալիս ստեղծել առողջ մրցակցություն տարբեր կայքերի և մրցույթների միջոցով։

Ծրագրավորման օլիմպիադաները բաժանվում են երկու ձևաչափի։ Առաջին ձևաչափում ընդգրկված են թիմային օլիմպիադաները, այդ օլիմպիադային թիմին տրվում է ընդամենը մեկ համակարգիչ խնդիրները լուծելու համար։ Այդ մրցույթների անցկացման համար օգտագործվում են տարբեր մասնագիտացված ծրագրային համակարգեր։ Սպորտային ծրագրավորման խնդիրները հիմնականում լինում են 3 տեսակի՝ ալգորիթմային, օպտիմալային, հետազոտական

  • Ալգորիթմային են կոչվում այն խնդիրները, որոնք առաջադրվում են մրցույթների ժամանակ և մասնակիցների կողմից լուծվում են լիովին կամ մասնակի։ Մասնակիցը պետք է գրի ալգորիթմներ՝ առաջադրված ծրագրավորման լեզուներով։ Սերվերին ուղարկելուց հետո, սերվերը աշխատեցնում է մասնակցի գրած ծրագիրը իր թեստերով, յուրաքանչյուր թեստի, ծրագրի կողմից ճիշտ արտածած պատասխանի համար մասնակիցը ստանում է համապատասխան միավոր։
  • Օպտիմալային են կոչվում այն ծավալուն խնդիրները, որոնց համար լիարժեք լուծում գոյություն չունի։ Գնահատվում է, թե որքան օպտիմալ է մասնակցի (ների) որոշումը տվյալ խնդիրը լուծելու համար: Որոշ խնդիրների մեջ մասնակիցների որոշումները տվյալ խնդիրը լուծելու համար փոխկապակցված են (խաղեր):
  • Հետազոտական են կոչվում այն խնդիրները, որոնք առաջադրվում են ինտերնետային մրցույթների ժամանակ։ Մասնակիցը պետք է գրի ծրագիր՝ առաջադրված ծրագրավորման լեզուներից մեկով և այն ուղարկի սերվերին, որը այնտեղ կոմպիլացվում է և ուղարկում է համապատասխան պատասխան։ Օրինակ՝ բոլոր առաջադրված թեստերի պատասխանները ճիշտ է արտածել՝ մասնակցի կողմից գրված ծրագիրը, թե թերի, կամ կարող են լինել կոմպիլացիոն սխալներ։

Ալգորիթմային և հետզոտական խնդիրները շատ նման են իրար, սակայն տարբերվում են գնահատման սիստեմներով։ Խնդիրների լուծման համար անհրաժեշտ է տիրապետել առնվազն 1 ծրագրավորման լեզվի։ Հիմնական օգտագործվող լեզուներն են՝ C, C++, Java, Python, Pascal, #C։ Այնուամենայնիվ որոշ կայքեր թույլատրում են 20 և ավելի ծրագրավորման լեզուներ։ Համեմատաբար բարդ խնդիրների լուծման համար անհրաժեշտ է իմանալ նաև դասական ալգորիթմներ և խնդիրների մոտեցումներ։

ACM International Collegiate Programming Contest[խմբագրել | խմբագրել կոդը]

Ծրագրավորման միջազգային ուսանողական մրցույթը խոշորագույն միջազգային ուսանողական թիմային ծրագրավորման օլիմպիադա է։

ICPC-ն թիմային մրցույթ է։ Ներկայիս կանոններով՝ յուրաքանչյուր թիմ պետք է ունենա երեք ուսանող։ Մասնակիցները պետք է լինեն համալսարանի ուսանող, որոնց համալսարանական կրթությունը տևել է հինգ տարուց պակաս։ Ուսանողները, ովքեր երկու անգամ մասնակցել են Աշխարհի եզրափակչին կամ հինգ մարզային փուլերի, այլևս իրավունք չունեն մասնակցել մրցույթին[1][2]։ Առաջնության գլխավոր հովանավորներից երկուսը Մայքրոսոֆթն ու IBM-ն են։ 2004 թվականին այդ մրցույթին մասնակցում էին 3150 թիմ 75 երկրներից։ Ռուսաստանի թիմը բազում անգամներ հաղթել է օլիմպիադայում[3][4][5][6][7]։ Այդ ուսանողները հանդիպել են Ռուսաստանի դաշնության նախագահի հետ[8][9][10]։

Օլիմպադաներ ԽՍՀՄ-ում և Ռուսաստանում[խմբագրել | խմբագրել կոդը]

Դպրոցականների միջև[խմբագրել | խմբագրել կոդը]

Առաջին օլիմպիադան ԽՍՀՄ-ում (ինֆորմատիկայի օլիմպիադա անվանմամբ) կայացավ դպրոցականների միջև 1998 թվականին Սվերդլովսկում[11]։ Հետագայում ինֆորմատիկայի օլիմպիադաները դարձան համամիութենական (այնուհետև ԽՍՀՄ-ի փլուզումից հետո համառուսաստանյան) առարկայական օլիմպիադա։ Համառուսաստանյան ինֆորմատիկայի օլիմպիադան դպրոցականների միջև անցկացվեց 2011 թվականին Պերմում։

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

Բարձր արդյունքներ ցուցաբերելը որոշակի առավելություն կտա տվյալ ուսանողին բուհ ընդունվելուց։

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

Նաև անցկացվում են դպրոցականների թիմային առաջնություն, ուսանողների միջազգային օլիմպիադայի նույնատիպ օրենքներով[12][13]։

Առավել հայտնի թիմային օլիմպիադան դա Համառուսաստանյան ինֆորմատիկայի թիմային օլիմպիադան է դպրոցականների միջև[14]։ Այդ օլիմպիադան սովորաբար անցկացվում է դեկտեմբերի սկզբին, Ռուսաստանի տարբեր քաղաքներում։ Այդ օլիմպիադային մասնակցելու համար պետք է ընտրվել շրջանում, Մոսկվայից սովորաբար գալիս են 10-20 թիմ, իսկ Սանկտ-Պետերբուրգից համեմատ քիչ[15]։

Ուսանողներ[խմբագրել | խմբագրել կոդը]

Ինֆորմատիկայի օլիմպիադա ուսանողների միջև ԽՍՀՄ-ում գլոբալ մասշտաբներով չի անցկացվել։ Սկսած 1996 թվականից ռուսական բուհերի ուսանողները սկսեցին մասնակցել մրցույթների, որոնք մտնում էին ուսանողների միջև թիմային ծրագրավորման համակարգի մեջ։

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

Վերջին ժամանակներում օգտագործվում է ավելի ընդհանուր տերմին «սպորտային ծրագրավորում»։ Սպորտային ծրագրավորման մրցույթները կամ առաջնությունները ուղղակիորեն կապված չեն կրթական համակարգի հետ, այսինք այդ մրցումներին կամ առաջնություններին կարող են մասնակցել պրոֆեսիոնալ ծրագրավորողներ։ Սպորտային ծրագրավորման հայտնի մրցույթ է համարվում TopCoder ռեսուրսը, որտեղ պարբերաբար անցկացվում են տուրեր, որոնց շնորհիվ ձևավորվում է մասնակիցների վարկանիշը։ Նաև ամեն տարի անցկացվում է TopCoder Open մրցույթը։ Հետագայում հայտնվել է նաև ռուսական ռեսուրս Codeforces-ը, որը նույնպես անցկացնում է պարբերաբար տուրեր, որի արդյունքների հաշվին նույնպես ձևավորվում է մասնակիցների վարկանիշները։

Խոշորագույն ՏՏ ընկերությունները նույնպես անցկացնում են մրցույթներ ծրագրավորման ոլորտում, դրանց մեջ են մտնում՝ Google Code Jam-ը, Facebook Hacker Cup-ը և Russian Code Cup-ը։

IOI[խմբագրել | խմբագրել կոդը]

Ինֆորմատիկայի միջազգային օլիմպիադայի պատկերանիշը

Ստեղծվեցին մի շարք մրցույթներ, ինչպիսին է IOI – ը (ինֆորմատիկայի միջազգային օլիմպիադա ), որը առաջին անգամ տեղի է ունեցել 1989 թվականին Բուլղարիայում: IOI – ը դպրոցական անհատական օլիմպիադա է, որին մասնակցում են յուրաքանչյուր երկրից ամենաշատը 4 մասնակից։ Մրցույթը կազմված է 2 օրից և յուրաքանչյուր օր առաջադրվում է 3-ական խնդիր, որոնք մասնակիցը պետք է լուծի 5 ժամվա ընթացքում։ Յուրաքանչյուր տարի մրցույթը տեղի է ունենում տարբեր երկրներում և հնարավորություն է տալիս տարբերվել նախորդներից։ Խնդիրների բնույթը համեմատաբար տարբերվում է ICM-ICPC –ից իր հետաքրքրությամբ և բարդությամբ։

IOI-ին թույլատրվում է օգտագործել ծրագրավորման լեզուներից միայն C++, C, Pascal և Java: Բայց Pascal-ը կհեռացվի 2019-թվականին։

Հայաստանի մասնակիցների արդյունքներն ԻՄՕ-ում[խմբագրել | խմբագրել կոդը]

1996-2017 ժամանակաշրջանում հայաստանյան թիմերը արժանացել են 1 ոսկե, 4 արծաթե և 23 բրոնզե մեդալների։

Մրցույթների համար նախատեսված կայքեր[խմբագրել | խմբագրել կոդը]

IZHO[խմբագրել | խմբագրել կոդը]

Այս մրցույթը իրականացվում է IOI -ի նման ոճով, որին մասնակցում են նախկին Խորհրդային Միության պետությունների հիմնական մասը(նաև Հայաստանը)։ Մրցույթը անց է կացվում Ղազախստանում և մեկնարկել է 2005 թվականին։ Մրցույթի հաղթողներին տրվում են արտոնություններ հետագա կարիեիայի համար, ընդհուպ նաև համալսարանական արտոնություններ։

CodeForces[խմբագրել | խմբագրել կոդը]

Այս կայքը ստեղծվել է 2010 թվականին Ռուսաստանում և արդեն դարձել սպորտային ծրագրավորման հետ կապող ամենաէական փաստերից մեկը։ Կայքում անց է կացվում առցանց մրցույթներ և մասնակիցների ռեկորդակիր քանակը եղել է մինչև 9733 օգտատեր։ CodeForces-ը տիպիկ ալգորիթմային խնդիրներով հարուստ մրցույթների կայք է։

Կայքում կար ավելի քան 300000 օգտատեր 2015 թվականի տվյալներով, որոնց թիվը գնալով աճում է մինչև օրս։

Օգտատերերը բաժանված են 10 խմբերի, որոնց համար տեղի է ունենում 3 տարբեր մակարդակների մրցույթներ և մրցակցության հիմնական աղբյուրը, հանդիսանում է իրենց տեղը ընդհանուր օգտատերերի ցուցակում։

TopCoder[խմբագրել | խմբագրել կոդը]

Կայքը մեծ ընկերություն է ՝ նախատեսված դիզայներների, մշակողների, տվյալների փորցագետների և սպորտային ծրագրավորողների համար։ Կայքում օգտատերերի թիվը կազմում է մոտավորապես 1 200 000 (2018 - ի տվյալնեով),որը ներկայումս համարվում է առաջատարը շուկայում։ Համակարգը ստեղծվել է 2001 թվականին Jack Hughes – ի կողմից ԱՄՆ-ում[16][17][18]։

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

Ծրագրավորման դասական օլիմպիադաների ժամանակ մասնակիցներին առաջարկվում է մի շարք խնդիրներ, տարբեր բարդության։ Խնդրի լուծումը համարվում է ծրագիրը, որը գրված է թույլատրվող ծրագրավորման լեզուներից մեկի վրա։ Այդ ծրագիրը պետք է հստակ հաշվի տվյալ ձևաչափի ցանկացած մուտքի տվյալներ։ Եվ հստակ մշակել, խնդրի պահանջների համաձայն և դուրս բերել որոշակի ելքային հոսքով նշված տեսքով։

Բոլոր լուծումները ստուգվում է ավտոմատացված համակարգի շնորհիվ։ Այդ համակարգը մեկնարկում է տվյալ խնդրի բոլոր լուծումները, որոշ թեստերի լուծման համար։ Թեստերը լուծելուց հետո համակարգը դիտարկում է ելքային տվյալները և համեմատում է արդեն պատրաստի շաբլոնների հետ կամ կատարում է ավելի բարդ գործողություններ։

Օլիմպիադաների առանձնահատկությունը նրանումն է, որ պետք է խնդրին մոտենալ ավելի ստեղծագործ կերպով։ Այսինքն այդ մրցաշարերին հազվադեպ են հանդիպում խնդիրներ, որոնց մեջ պետք է օգտագործել միանման ալգորիթմներ կամ ծրագրեր։ Ավելի հաճախ խնդրի մեջ ներկայացվում է կարճ պատմություն իր սյուժեյով, հերոսներով և իրենց հակամարտությամբ։ Այսպիսով օլիմպիադայի խնդիրը լուծելու համար անհրաժեշտ է նախապես կազմել իրադարձությունների մաթեմատիկական մոդելը և արդեն ըստ դրա կառուցել համապատասխան ալգորիթմը կամ ծրագիրը։ Ալգորիթմը կարող է լինել հայտնի կամ կարող է ստեղծվել լրիվ նորը։ Դասական և շատ պարզ խնդրի օրինակ է A+B-ն։ Այդ խնդիրը սովորաբար տեղադրում են օլիմպիադաների փորձնական փուլում։

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

  1. «Information - ICPC»։ Արխիվացված օրիգինալից 16 June 2008-ին։ Վերցված է 2008-06-10 
  2. «2008 ICPC Regionals Eligibility Decision Diagram» (PDF)։ Վերցված է 2008-06-10 
  3. SnarkNews
  4. Чемпионы мира из ИТМО в новостях РЕН ТВ :: :: Видео на RuTube
  5. В Петербурге открылась академия программирования — Наталья Шергина — «Чемпионы мира получили кластер» — Российская Газета — В Северной столице открылась …
  6. Студенты ИТМО стали чемпионами мира по программированию
  7. Дмитрий Медведев встретился с победителями чемпионата мира по программированию — Первый канал
  8. Президент сегодня встретился со студентами — победителями чемпионата мира по программированию — Первый канал
  9. Президент России Дмитрий Медведев продолжит традицию встреч с российскими студентами-победителями Чемпионата мира по программированию среди сборных команд вузов. — РИА Новости …
  10. Три золотых медали привезли в РФ победители первенства планеты по программированию — Первый канал
  11. Олимпиады — История олимпиады Archived 2012-04-02 at WebCite
  12. Уральская региональная олимпиада по программированию / Центр классического образования УрФУ им. Б. Н. Ельцина (УрГУ)
  13. Олимпиады по информатике. Санкт-Петербург, Россия
  14. «Олимпиады по информатике. Санкт-Петербург, Россия»։ neerc.ifmo.ru։ Վերցված է 2016-07-27 
  15. «SN on ВКОШП - 2015»։ vkoshp2015.snarknews.info։ Վերցված է 2016-07-27 
  16. «TopCoder (A): Developing Software through Crowdsourcing»։ Harvard Business School Case: 610–032։ January 2010 
  17. DIamandis Peter (March 20, 2013)։ «TopCoder’s 5 Steps to Building a Global Workforce Community»։ The Huffington Post։ Վերցված է 15 April 2016 
  18. Mitra Sramana (January 2, 2018)։ «Genesis to Acquisition: Mike Morris, CEO of Topcoder»։ One Million by One Million Blog։ Վերցված է March 30, 2018