ATMs were first developed in the late 1930s but did not gain popularity until the 1960s. John Shepherd-Barron is credited with inventing the first electronic ATM in 1967. Typical ATM software includes operating systems like Windows and programming languages like Java, while common protocols are Diebold 911/912 and IBM PBM. Hardware components include a CPU, card reader, cash dispenser, display screen, and printer. ATMs connect to financial networks through physical phone lines or leased lines and use security measures to protect transactions and customer identity.