Wij, mensen, hebben de neiging om met elkaar te concurreren in alles wat we doen, en dat is waarschijnlijk een van de belangrijkste redenen voor ons succes als soort. Programmeren is geen uitzondering. Aangezien coderen een vrij complexe, meerlagige en veeleisende discipline is, zou het geen verrassing moeten zijn dat codeerders graag met elkaar concurreren om erachter te komen wie het meest capabel is. Coderen als een sport.  Een korte handleiding voor competitief programmeren - 1

Wat is competitief programmeren?

Competitief programmeren is een soort denksport waarbij deelnemers worden betrokken bij het oplossen van coderingsproblemen met behulp van hun programmeervaardigheden en kennis van CS-disciplines zoals algoritmen en datastructuren.. De deelnemers aan dergelijke wedstrijden, ook wel sportprogrammeurs genoemd, moeten code schrijven onder verschillende beperkingen en in overeenstemming met de verstrekte specificaties. Om te winnen moet een sportprogrammeur de code bedenken die een oplossing zou zijn voor de gegeven taak. De winnaar wordt uitgeroepen op basis van een aantal criteria zoals de bestede tijd, kwaliteit van de uiteindelijke code, uitvoeringstijd, grootte van het programma, enz. Veel grote technologiebedrijven, zoals Google, Facebook, Amazon, Microsoft en anderen , competitieve programmering ondersteunen en deelnemen aan het organiseren van competities, terwijl ook getalenteerde sportprogrammeurs worden aangenomen. De International Collegiate Programming Contest (ICPC), ontstaan ​​in de jaren 70, staat bekend als de oudste competitieve programmeerwedstrijd.

Voordelen van competitieve programmering

Hier is een korte lijst met voordelen die u kunt krijgen als u als professionele codeur deelneemt aan competitieve programmering.
  • Verbeterde programmeervaardigheden, zoals logica en algoritmen, elementaire wiskunde, gegevensstructuren, computationeel denken, foutopsporing, enzovoort.
  • Geweldige aanvulling op je professionele portfolio en CV.
  • Kansen om opgemerkt te worden door marktleiders en aantrekkelijke vacatures te krijgen.
  • Manier om verschillende aspecten van coderen te oefenen.
  • Sociale connecties en netwerken in de gemeenschap van ontwikkelaars.
  • Spannende en competitieve wedstrijden.

Concurrerende programmeerplatforms

Dit zijn enkele van de meest populaire concurrerende programmeerplatforms die beschikbaar zijn op internet. CodeChef is een competitieve programmeergemeenschap met honderden uitdagingen en elke maand verschillende nieuwe wedstrijden. Codewars is een online codeercommunity met programmeeruitdagingen. Hiermee kunt u uw eigen uitdagingen indienen, die door andere gebruikers worden beoordeeld. Een van de meest populaire competitieve programmeerplatforms die er zijn. Het organiseert elk jaar regelmatig competitieve programmeermarathons en biedt tientallen uitdagingen. HackerEarth heeft meer dan 10.000 programmeeruitdagingen van verschillende moeilijkheidsgraden die voor iedereen beschikbaar zijn. Codeforces is een Russisch competitief programmeerplatform met honderden programmeeruitdagingen en organiseert regelmatig allerlei soorten wedstrijden. Biedt programmeeruitdagingen in verschillende domeinen van de computerwetenschappen en organiseert jaarlijkse Codesprints en andere competitieve programmeerwedstrijden.

Competitieve programmeerwedstrijden

Elk jaar worden er tientallen competitieve programmeerwedstrijden gehouden. Hier zijn enkele van de meest populaire en prestigieuze.
  1. ICFP-programmeerwedstrijd
Een internationale programmeerwedstrijd die sinds 1998 jaarlijks rond juni of juli wordt gehouden.
  1. Topcoder Marathon-wedstrijden
Populair onder de wedstrijden van de competitieve programmeergemeenschap met aanzienlijke geldprijzen. De marathons van Topcoder duren meestal ongeveer twee weken, waardoor deelnemers de kans krijgen om hun oplossingen te verbeteren. Elke match heeft een ander scoremechanisme dat de kwaliteit van elke oplossing weergeeft.
  1. CodeChef lange uitdaging
CodeChef Long Challenge is een maandelijkse wedstrijd die maximaal 10 dagen duurt.
  1. Facebook Hacker Cup
Hacker Cup is de jaarlijkse open programmeerwedstrijd van Facebook. Het staat open voor deelnemers over de hele wereld en bestaat uit meerdere rondes met aanzienlijke prijzen op het spel.
  1. Google-codestoring
Google Code Jam is een internationale programmeerwedstrijd die wordt georganiseerd en beheerd door Google. Jaarlijks gehouden sinds 2003.
  1. American Computer Science League (ACSL)
American Computer Science League (ACSL) organiseert informatica- en programmeerwedstrijden voor middelbare en middelbare scholieren.
  1. Internationale collegiale programmeerwedstrijd (ICPC)
International Collegiate Programming Contest is een algoritmische programmeerwedstrijd voor studenten. Een van de oudste competitieve programmeerwedstrijden die er zijn.

Tips en aanbevelingen

Laten we afsluiten met enkele tips en aanbevelingen die nuttig kunnen zijn als u bereid bent om competitief te gaan programmeren.
  • Kies een programmeertaal.
Dit is vrij duidelijk, maar toch het vermelden waard. U moet beginnen met het kiezen van een programmeertaal waarmee u zich het meest vertrouwd voelt om deze te gebruiken in competitief programmeren. C++, Java en Python zijn de meest voorkomende en universeel geaccepteerde programma's bij de meeste competitieve programmeerwedstrijden.
  • Ontwikkel een goede kennis van datastructuren en algoritmen.
Het kennen van ten minste de basisprincipes van datastructuren en algoritmen is van essentieel belang om competitieve programmeeruitdagingen met succes op te lossen. Bekijk onze artikelen over algoritmen en datastructuren voor de links naar leermateriaal over deze onderwerpen.
  • Vind uw codeerstijl en benadering van programmeeruitdagingen.
De meeste uitdagingen die deelnemers aan competitieve programmeeruitdagingen moeten oplossen, hebben meer dan één oplossing. Het doel is om tot de optimale oplossing te komen. Het is dus logisch om u te concentreren op het ontwikkelen van uw unieke codeerstijl en benadering van deze programmeeruitdagingen waarmee u de beste oplossingen kunt coderen in termen van tijd en uw codebehoeften voor uitvoering kunt verfraaien.
  • Probeer verschillende concurrerende programmeerwebsites en wedstrijden.
Ook al moet je bij alle competitieve codeerwedstrijden en -uitdagingen algoritmische problemen oplossen, de stijl van deze problemen en de vereisten voor deelnemers kunnen op een aantal manieren variëren, van de aanpak tot moeilijkheidsgraad en tijdsgevoeligheid. Het wordt dus aanbevolen om op zijn minst verschillende problemen uit te proberen om een ​​beter gevoel te krijgen van competitief programmeren in het algemeen.
  • Blijf regelmatig programmeerproblemen oplossen.
Regelmatig oefenen is belangrijk om in vrijwel alles te slagen, maar bij competitief programmeren is dit vooral het geval. De ontwikkeling van de juiste mentaliteit en aanpak van codeerproblemen vergt veel regelmatige training. U hoeft uzelf niet te beperken tot de hierboven genoemde gespecialiseerde platforms, vooral in het begin wanneer de concurrerende programmeerproblemen te uitdagend kunnen zijn. U kunt CodeGym gebruiken met zijn meer dan 1200 Java-coderingstaken om te oefenen, evenals codeerspellen of platforms voor het voorbereiden van technische interviews .