Matchprogrammering , nogle gange omtalt som "tilfældig programmering", er en tilgang til softwareudvikling, hvor programmøren løser et problem iterativt, laver små ændringer ( permutationer ) og tester hver ændring for at se, om den opfører sig som ønsket.
Denne tilgang virker nogle gange attraktiv, når programmøren ikke helt forstår koden og mener, at en eller flere små ændringer kan føre til kode, der er korrekt.
For eksempel har følgende C -kodeeksempel (designet til at finde og kopiere en sekvens af cifre fra en stor streng) flere problemer:
char * buffer = "123abc" ; char destination [ 10 ]; int i = 0 ; int j = 0 ; intl = strlen ( buffer ) ; mens ( i < l ) { if ( isdigit ( buffer [ i ])) { destination [ j ++ ] = buffer [ i ++ ]; } ++ i ; } destination [ j ] = '\0' ; printf ( "%s \n " , destination );Men dette giver ikke det rigtige resultat. For en given startstreng udskriver den "13", mens det korrekte resultat er "123". En programmør, der ikke kan se det strukturelle problem, kan springe på én kommando og sige: "Ja, det er et ekstra trin." Det fjerner "++i"-linjen, men programmet går i løkker, når det testes. "Ups, forkert forstørrelse." Kommandoen sættes tilbage på plads og fjernes af post-increment-variablen i på linjen ovenfor:
if ( isdigit ( buffer [ i ])) { destination [ j ++ ] = buffer [ i ]; }Under testen producerer koden nu det rigtige svar, "123". Men da programmøren ikke har gidet at forstå koden fuldt ud, forbliver følgende problemer:
Selvom løsningen vil være passende for et bestemt sæt af input, er den ikke korrekt for alle sådanne input, og kommentarer til en sådan kode vil fortsætte over tid.