CodeGym /Java блог /Случаен /Кодирането като спорт. Кратко ръководство за конкурентно ...
John Squirrels
Ниво
San Francisco

Кодирането като спорт. Кратко ръководство за конкурентно програмиране

Публикувано в групата
Ние, хората, сме склонни да се състезаваме помежду си във всичко, което правим, и това вероятно е една от ключовите причини за нашия успех като вид. Програмирането не прави изключение. Тъй като codeирането е доста сложна, многопластова и взискателна дисциплина, не трябва да е изненада, че програмистите искат да се състезават помежду си, за да разберат кой е най-способният. Кодирането като спорт.  Кратко ръководство за състезателно програмиране - 1

Какво е състезателно програмиране?

Състезателното програмиране е вид мисловен спорт, който включва участниците в решаване на проблеми с codeирането, използвайки своите умения в програмирането и познания по CS дисциплини като алгоритми и структури от данни. Участниците в такива състезания, наричани още спортни програмисти, трябва да пишат code при различни ограничения и в съответствие с предоставените спецификации. За да спечели, един спортен програмист трябва да измисли codeа, който би бил решение на поставената задача. Победителят се обявява въз основа на редица критерии като изразходвано време, качество на крайния code, време за изпълнение, размер на програмата и др. Много големи технологични компании като Google, Facebook, Amazon, Microsoft и др. , подкрепят състезателното програмиране и участват в организирането на състезания, като същевременно наемат талантливи спортни програмисти. Международното студентско състезание по програмиране (ICPC), възникнало през 70-те години на миналия век, е известно като най-старото състезание по конкурентно програмиране.

Ползите от състезателното програмиране

Ето кратък списък с предимства, които можете да получите, участвайки в състезателно програмиране като професионален програмист.
  • Подобрени умения за програмиране, като логика и алгоритми, основна математика, структури от данни, изчислително мислене, отстраняване на грешки и т.н.
  • Страхотно допълнение към вашето професионално портфолио и CV.
  • Шанс да бъдете забелязани от лидерите на пазара и да получите някои атрактивни предложения за работа.
  • Начин за практикуване на различни аспекти на codeирането.
  • Социални връзки и мрежи в общността на разработчиците.
  • Вълнуващи и конкурентни състезания.

Конкурентни платформи за програмиране

Това са някои от най-популярните конкурентни платформи за програмиране, налични в Интернет. CodeChef е състезателна общност за програмиране със стотици предизвикателства и няколко нови състезания всеки месец. Codewars е codeираща онлайн общност с програмни предизвикателства. Позволява ви да изпращате свои собствени предизвикателства, които ще бъдат оценени от други потребители. Една от най-популярните конкурентни платформи за програмиране. Той е домакин на редовни състезателни маратони по програмиране всяка година и предлага десетки предизвикателства. HackerEarth има над 10 000 програмни предизвикателства с различна трудност, достъпни за всеки. Codeforces е руска платформа за състезателно програмиране, която предлага стотици програмни предизвикателства и често е домакин на всяHowви състезания. Предлага програмни предизвикателства в различни области на компютърните науки и е домакин на годишни Codesprints и други състезания по програмиране.

Състезания по програмиране

Всяка година се провеждат десетки състезания по програмиране. Ето някои от най-популярните и престижни.
  1. Състезание по програмиране на ICFP
Международно състезание по програмиране, което се провежда ежегодно около юни or юли от 1998 г.
  1. Topcoder Marathon мачове
Популярно сред конкурентните състезания на общността за програмиране със значителни парични награди. Маратоните на Topcoder обикновено продължават около две седмици, давайки на участниците шанс да подобрят своите решения. Всеки мач има различен механизъм за точкуване, който ще изведе качеството на всяко решение.
  1. CodeChef дълго предизвикателство
CodeChef Long Challenge е месечно състезание, което продължава до 10 дни.
  1. Facebook Hacker Cup
Hacker Cup е годишното отворено състезание по програмиране на Facebook. Отворен за участници от целия свят, той се състои от множество рундове със значителни заложени награди.
  1. Google Code Jam
Google Code Jam е международно състезание по програмиране, организирано и администрирано от Google. Провежда се ежегодно от 2003 г.
  1. Американска лига по компютърни науки (ACSL)
Американската лига по компютърни науки (ACSL) организира състезания по компютърни науки и програмиране за ученици от средното и средното учorще.
  1. Международно студентско състезание по програмиране (ICPC)
International Collegiate Programming Contest е състезание по алгоритмично програмиране за студенти. Едно от най-старите състезания по състезателно програмиране.

Съвети и препоръки

Нека завършим с някои съвети и препоръки, които могат да бъдат полезни, ако желаете да се занимавате със състезателно програмиране.
  • Изберете език за програмиране.
Това е съвсем очевидно, но все пак си струва да се спомене. Трябва да започнете с избора на език за програмиране, който ви е най-удобен, за да го използвате в конкурентно програмиране. C++, Java, Python са най-разпространените и общоприети в повечето състезания по програмиране.
  • Развийте добри познания за структурите от данни и алгоритмите.
Познаването поне на основите на структурите от данни и алгоритмите е изключително важно за успешното решаване на конкурентни предизвикателства в програмирането. Вижте нашите статии за алгоритми и структури от данни за връзки към учебни материали по тези теми.
  • Намерете своя стил на codeиране и подход към предизвикателствата в програмирането.
По-голямата част от предизвикателствата, които участниците в предизвикателствата за състезателно програмиране трябва да решат, имат повече от едно решение. Целта е да се стигне до оптималното решение. Така че има смисъл да се съсредоточите върху разработването на вашия уникален стил на codeиране и подход към тези програмни предизвикателства, които биха ви позволor да codeирате най-добрите решения по отношение на времето и да подправите нуждите на вашия code за изпълнение.
  • Опитайте различни уебсайтове и конкурси за конкурентно програмиране.
Въпреки че във всички конкурси и предизвикателства за състезателно codeиране ще трябва да решавате алгоритмични проблеми, стилът на тези проблеми и изискванията към състезателите могат да варират по много начини, от подхода до трудността и чувствителността към времето. Затова се препоръчва да опитате поне няколко различни задачи, за да имате по-добро усещане за състезателното програмиране като цяло.
  • Продължавайте редовно да решавате проблеми с програмирането.
Редовната практика е важна за успех в почти всичко, но в състезателното програмиране е особено вярно. Развитието на правилно мислене и подход към проблемите с codeирането изисква много редовно обучение. Не е нужно да се ограничавате до специализираните платформи, изброени по-горе, особено в началото, когато проблемите с конкурентното програмиране може да изглеждат твърде предизвикателни. Можете да използвате CodeGym с неговите над 1200 задачи за codeиране на Java, за да практикувате, Howто и игри за codeиране or платформи за подготовка за технически интервюта .
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION