Automatyczne programowanie w informatyce i inżynierii komputerowej odnosi się do wytwarzania kodu programowania komputerowego przez jakiś system lub oprogramowanie w odpowiedzi na bardziej abstrakcyjne dane wejściowe lub polecenia użytkownika. W pewnym sensie programowanie automatyczne opisuje każdą sytuację, w której komputer lub oprogramowanie zastąpi instrukcję wprowadzoną przez programistę blokiem kodu, który może konkretnie wykonać czynności opisane w instrukcji. W innym sensie programowanie automatyczne może opisywać cel stworzenia języka programowania lub systemu, który może intuicyjnie złożyć ukończoną aplikację w oparciu tylko o najprostsze wskazówki programisty. Programowanie automatyczne może być stosowane w niektórych dziedzinach badań komputerowych w odniesieniu do procesu projektowania systemu sztucznej inteligencji (AI), zdolnego albo do autonomicznego tworzenia programu w celu wykonania zadania, albo do samodzielnej modyfikacji własnego kodu w celu zwiększenia funkcjonalności.
Definicja programowania automatycznego jest dość niejasna. Pierwotnie był używany we wczesnych latach programowania komputerowego do opisywania tłumaczenia abstrakcyjnych instrukcji przypominających język asemblera na rozszerzony kod maszynowy. Nazywano to programowaniem automatycznym, ponieważ kompilator automatycznie zastępował pojedynczą czytelną dla człowieka instrukcję dziesiątkami lub większą liczbą instrukcji kodu maszynowego, zasadniczo automatycznie pisząc program w prymitywny sposób. W większości przypadków te same czynności są nadal wykonywane przez kompilatory języka, niezależnie od używanego języka programowania nakładającego.
Innym zastosowaniem terminu „programowanie automatyczne” jest opisanie automatycznego generowania kodu. Dzieje się tak, gdy zintegrowane środowisko programistyczne (IDE) lub inne narzędzie można wykorzystać wizualnie lub w bardzo prosty sposób, aby określić, jak użytkownik końcowy będzie widział program. Po utworzeniu pożądanego wyniku oprogramowanie lub IDE może automatycznie wygenerować funkcjonalny kod źródłowy, aby osiągnąć wynik bez dalszego wkładu programisty.
W niektórych przypadkach programowanie automatyczne odnosi się również do nauki implementacji języków na tak wysokim poziomie, że kod źródłowy wygląda jak język naturalny. Język programowania, taki jak ten, automatycznie tworzyłby aplikację w oparciu o szerokie dane wejściowe programisty. Bez względu na to, jak automatyczny staje się język, należy jednak zauważyć, że programista musi w pewnym momencie ręcznie zmodyfikować kod dla określonej funkcjonalności przy użyciu samego języka programowania.
W dziedzinie sztucznej inteligencji prowadzone są pewne badania nad opracowaniem systemu, który może się automatycznie zaprogramować, aby dodać możliwości, których pierwotnie nie miał. Obejmuje to również sztuczną inteligencję, która jest w stanie pisać niezależne oprogramowanie, które może rozwiązać konkretny problem. Jedną z aplikacji byłoby stworzenie języka programowania, który mógłby wykorzystywać sztuczną inteligencję do generowania szybkich prototypów programów.