Geneetiline programmeerimine on protsess, mille käigus kasutatakse ühte arvutiprogrammi teise arvutiprogrammi kirjutamiseks, kasutades evolutsioonilisel algoritmil põhinevat metoodikat. Seda protsessi võrreldakse sageli lineaarse programmeerimisega, mille käigus programmeerija kirjutab arvutile konkreetsed juhised. LISP ja Scheme on oma kõrgetasemelise funktsionaalsuse ja paindlikkuse tõttu seda tüüpi tööde jaoks kõige levinumad programmeerimiskeeled. Selle kontseptuaalse sarnasuse tõttu bioloogilise evolutsiooniga nimetatakse geneetilist programmeerimist sageli bioinspireeritud andmetöötluse näiteks.
Geneetilised programmid (GP) töötavad tuhandete programmide loomise ja käitamisega ning valivad kõige tõhusama kasutamiseks. Näiteks võib perearsti kasutada programmi loomiseks foto eskiisi joonistamiseks. Esimese asjana koostaks perearst programmide komplekti, mis kasutavad erinevaid arvutijoonistusfunktsioone juhuslikes kombinatsioonides. Seejärel käivitab perearst kõiki neid programme järjekorras, väljastades nende tulemused pildifailidesse.
Järgmine samm perearsti jaoks on nende programmide hulgast parima valimine. See protsess on üldiselt geneetilise programmeerimise kõige keerulisem osa. Joonistusprogrammi puhul kasutas perearst kujutiste võrdlemise tarkvara, et teha kindlaks, milline juhuslikest joonistest oli kõige sarnasem pildiga, mida tarkvara püüdis joonistada. Juhuslikult genereeritud programmidest valib perearst välja mitu parimat ja jätaks ülejäänud kõrvale. Valikuprotsessi nimetatakse sobivuse hindamiseks ja seda peetakse üldiselt geneetilise programmeerimise kõige keerulisemaks osaks.
Kui paar parimat programmi on valitud, kasutab perearst neid uue programmide partii aluseks. Iga uut partii nimetatakse põlvkonnaks. Uue põlvkonna loomise kaks võimalust on mutatsioon ja crossover. Mutatsioon toimib, võttes ühe olemasolevatest programmidest ja tehes selles juhuslikke muudatusi, loodetavasti paremuse poole. Crossover, mida nimetatakse ka aretuseks, kasutab kahte parimat programmi ja kombineerib nende elemente uute programmide loomiseks.
Pärast uue programmipartii loomist kordab perearst nende käitamise ja hindamise protsessi ning seejärel kordab valiku-, kõrvaldamis- ja genereerimisprotsesse. Perearstid juhivad sageli sadu põlvkondi, enne kui leiavad ühe rahuldava tulemusega programmi. Vaatamata sellele piirangule on geneetiline programmeerimine levinud viis teatud tüüpi keeruliste andmetöötlusprobleemide lahendamiseks, sealhulgas robootika ja tehisintellekti probleemid.