Programmazione competitiva

Da Wikipedia, l'enciclopedia libera.

Con l'espressione programmazione competitiva (dall'inglese competitive programming) si intende l'attività di programmazione specificamente finalizzata alla partecipazione a gare organizzate su Internet o su rete locale.

Storia[modifica | modifica sorgente]

L'interesse verso la programmazione competitiva è notevolmente cresciuto dalla fine degli anni novanta, in concomitanza con la diffusione di Internet. Tuttavia, la nascita delle prime importanti gare di programmazione risale agli anni settanta, con l'istituzione dell'ACM International Collegiate Programming Contest. La manifestazione si tiene tuttora e, tra le iniziative dello stesso genere, è quella che si distingue sia per il maggior prestigio in ambito accademico internazionale, sia per il maggior numero di partecipanti.

Vanno segnalate anche le Olimpiadi internazionali dell'informatica, nate nel 1989. Tuttavia, esse sono destinate esclusivamente a studenti di scuola secondaria, e non permettono la partecipazione via Internet, neppure fuori concorso.

Oggigiorno, la programmazione competitiva è riconosciuta e promossa anche da importanti aziende informatiche, tra cui Google[1], Facebook[2] e IBM[3]. Se ritenuto opportuno, tali aziende possono decidere di utilizzare le proprie gare pure per cercare programmatori esperti e verificare sul campo le loro capacità.

Contenuti[modifica | modifica sorgente]

Tipicamente, in una competizione di programmazione vengono proposti uno o più problemi di natura algoritmico-matematica e si richiede che il partecipante scriva almeno un programma informatico che li risolva. Tra gli argomenti trattati più frequentemente, sono presenti: teoria dei grafi, combinatoria, teoria dei numeri, geometria, intelligenza artificiale, algoritmi ad hoc.

Nella maggioranza delle gare, la correzione delle soluzioni proposte è gestita, in maniera completamente automatizzata, da apposito software. I criteri di valutazione variano da una gara all'altra. Ad esempio, in alcuni casi può essere premiato il maggior numero di soluzioni esatte consegnate nel minor tempo, in altri il programma più efficiente in termini di tempo di esecuzione e memoria utilizzata.

Note[modifica | modifica sorgente]

  1. ^ Google Code Jam
  2. ^ Facebook HackerCup
  3. ^ ACM International Collegiate Programming Contest World Finals Sponsored by IBM

Voci correlate[modifica | modifica sorgente]