programiranje, priređivanje ili odabir skupa naredbi prema kojima će, ovisno o promjeni određenih ulaznih vrijednosti, djelovati neki automatski uređaj, stroj, sustav ili dr. (→ automat). Pojam se može odnositi na jednostavno namještanje kakve elektromehaničke ili elektron. naprave za vođenje nekoga procesa po unaprijed zadanome vremenskom rasporedu, kakve u kućanstvima služe za uključivanje i isključivanje grijanja ili hlađenja po dnevnom ili tjednom programu, upravljanje radom perilice rublja ili snimanja radijskih ili televizijskih emisija. U užem smislu, pojam se odnosi na izradbu programa za rad uređaja zasnovanih na mikroprocesoru, napose elektroničkih računala (→ računalni program). Zadatci koji se rješavaju računalom mogu biti vrlo jednostavni i lako razumljivi (primjerice rješavanje kvadratne jednadžbe), ali i složeni (vođenje poslovanja velikoga poduzeća). Pripremanje složenih programa djelatnost je koja zahtijeva znanja iz onoga područja iz kojega potječe zadatak, znanja o algoritmima prikladnima za njegovo rješavanje te znanja i vještine pisanja programa, pa se zbog složenosti pristupa danas ta djelatnost sve češće naziva programskim inženjerstvom. Prema tom je pristupu programiranje samo jedan od koraka u pripremanju programa, tj. korak njegove stvarne izradbe (konkretizacije). Programiranje se provodi odabirom prikladnih tipova podataka i njihovom organizacijom u odgovarajuću strukturu, te nizanjem naredbi odabranoga programskog jezika. Program napisan u višem programskom jeziku (koji izgleda kao posebno oblikovan tekst), tzv. izvorni oblik programa, posebnim se programom za prevođenje prevodi u strojni oblik pogodan za izvođenje na računalu. Kako programiranje sve složenijih programa postaje sve teže, taj se posao na različite načine pokušava pojednostavniti. Tako se skupine naredbi koje se češće pojavljuju može objediniti u tzv. potprogram ili proceduru i koristiti ih kao jednu složenu operaciju. Ako se uz to realni objekt opiše prikladnom strukturom podataka i pripreme procedure za djelovanje nad tom strukturom, riječ je o objektno-orijentiranom programiranju. U najnovije doba, uvođenjem dodatnih formalizama, objektno orijentirano programiranje prerasta u komponentno orijentirano programiranje, kod kojega se programi sastavljaju od unaprijed pripremljenih komponenti. Veze među komponentama uspostavljaju se na osnovi pravila komuniciranja opisanih njihovim sučeljima, a povezivanjem komponenti uspostavljaju se odgovarajuće strukture programa, tzv. arhitektura programskoga sustava.