Automatsko programiranje u računalnim znanostima i računalnom inženjerstvu odnosi se na proizvodnju računalnog programskog koda od strane nekog sustava ili softvera kao odgovor na apstraktniji korisnički unos ili naredbe. U jednom smislu, automatsko programiranje opisuje svaku situaciju u kojoj će računalo ili softver zamijeniti naredbu koju je unio programer s blokom koda koji može konkretno izvesti radnje opisane u izjavi. Kada se koristi u drugom smislu, automatsko programiranje može opisati cilj stvaranja programskog jezika ili sustava koji može intuitivno sastaviti dovršenu aplikaciju temeljenu samo na najkraćem smjeru programera. Automatsko programiranje može se koristiti u nekim poljima računalnih istraživanja kako bi se odnosilo na proces dizajniranja sustava umjetne inteligencije (AI) sposobnog ili za autonomnu proizvodnju programa za dovršetak zadatka ili za samo-modificiranje vlastitog koda radi poboljšanja funkcionalnosti.
Definicija automatskog programiranja je pomalo nejasna. Izvorno je korišten tijekom ranih godina računalnog programiranja za opisivanje prijevoda apstraktnih uputa na jeziku asemblera u prošireni strojni kod. To je nazvano automatskim programiranjem jer bi prevodilac automatski zamijenio jedan čovjeku čitljiv izraz s desecima ili više instrukcija strojnog koda, u biti automatski pisajući program na primitivan način. Iste radnje i dalje izvode prevoditelji jezika u većini slučajeva, bez obzira na programski jezik koji se koristi.
Druga upotreba termina “automatsko programiranje” je za opisivanje automatiziranog generiranja koda. To je kada se integrirano razvojno okruženje (IDE) ili drugi alat može koristiti vizualno, ili na neki vrlo jednostavan način, da se odredi kako će krajnji korisnik vidjeti program. Nakon što se stvori željeni rezultat, softver ili IDE tada mogu automatski proizvesti funkcionalni izvorni kod kako bi postigli rezultat bez ikakvog daljnjeg unosa od programera.
U nekim slučajevima, automatsko programiranje se također odnosi na proučavanje kako implementirati jezike na tako visokoj razini da izvorni kod izgleda kao prirodni jezik. Programski jezik kao što je ovaj automatski bi proizveo aplikaciju na temelju širokog unosa programera. Bez obzira na to koliko jezik postaje automatski, treba napomenuti da programer u nekom trenutku mora ručno izmijeniti kod za određenu funkcionalnost koristeći sam programski jezik.
U području umjetne inteligencije provode se neka istraživanja u razvoju sustava koji se može automatski programirati kako bi dodao mogućnosti koje mu izvorno nisu bile dane. To se također proširuje na AI koji su sposobni pisati neovisni softver koji može riješiti određeni problem. Jedna aplikacija bila bi stvaranje programskog jezika koji bi mogao koristiti AI za generiranje brzih prototipova programa.