First Generation Programming





Charles Babbage was an English mathematician from the 1800s who is often referred to as the “father of computing” for his groundbreaking design of the analytical engine. Following the completion of his invention of the difference engine, Charles Babbage developed the idea of a machine that could perform any calculation that was not limited to a mathematical task. Although the design for the analytical engine was never implemented by Charles Babbage, the concept was later expanded on by his former assistant Ada Lovelace.

Charles Babbage (1791-1871)




Ada Lovelace (1815-1852)

Ada Lovelove translated Babbage’s article on the analytical engine in 1843 from French to English and added her own notes which ended up surpassing the original article in length and complexity. Charles Babbage had even stated that Lovelace "Seems to understand it better than I do, and is far, far better at explaining it." In her notes, Lovelace contributed a significant revelation that codes could be created for the machine to handle letters, symbols, and numbers. Ada Lovelace is often referred to as the first computer programmer for designing elaborate programs for the analytical engine with the use of punched cards.





The analytical engine is considered to be the first computer which many aspects of the modern computer still share resemblance to. Although the machine was never built, it was intended to be steam powered and store 1000 numbers of 50 decimal digits each. The machine consisted of 4 key components which continue to be essential to computers to this day: a store (storage), mill (calculating unit), reader (input), and printer (output). The program for the analytical machine was designed to calculate Bernoulli numbers which Lovelace calculated by hand.

Analytical Engine




Machine language

  • Consists of binary numbers 1s and 0s
  • Only understandable by the computer
  • Errors cannot be fixed
  • Difficult to learn and memorize
  • Fast execution
  • No translator needed

Assembly language

  • Uses numbers, symbols, and abbreviations
  • Understandable to humans
  • Ability to make modifications
  • Easier to learn and memorize
  • Slower execution
  • Needs translator