Ada Lovelace: Mother of Modern Software

Augusta Ada King-Noel, Countess of Lovelace — was a famous writer and mathematician known mostly for her work with Charles Babbage on the Analytical Engine.

In today's world of far less complex names, she is more commonly called Ada Lovelace.

She has also been dubbed as The Enchantress of Numbers and is considered to be the author of the first computer program.

Ada Lovelace

While some may dispute that claim (see: multiple discovery theory), there is no doubt she was a true visionary and gifted intellectual who played a central role in the development of modern digital computers.

As early as the 1840s, she had published detailed descriptions of what we know today as modern computing: all-purpose machines that do many different things such as play music, manipulate graphics, and power heavy machinery.

It wasn't until a century later that her visions would be fully realized.

Background

Ada Lovelace was born on December 10, 1815, in England. She was the daughter of Anna Isabella (Anabella) Noel Byron, and Lord Byron.

Parents

It is no surprise that she was able to connect ideas that many leading intellectuals of her time failed to see given that she herself was the product of two polar opposite thinkers.

Lord Byron was one of the most celebrated poets of his time. He was an international celebrity. Byron was also infamous for his adventures, which involve stories of him owning a pet bear and drinking out of a human skull.

Anabella Byron was quite the opposite. She was a highly educated and deeply religious woman. Anabella was also a gifted mathematician who prioritized order and logic over intuition.

As far as their ethos, the two couldn't have been further apart. Lord Byron was known to mockingly refer to Anabella as, "the princess of parallelograms." Coming from Lord Byron, this was not a compliment.

First Years

Their marriage was rocky from the start. It included a series of transgressions from Lord Byron, including a very public affair with his own half-sister.

After a tumultuous 12-month marriage, Anabella left Lord Byron and took Ada with her. A few months later, Lord Byron — who faced criminal charges, exiled himself from his homeland of England in 1816. By the time Ada was 8, her father was dead.

Education

Anabella, perhaps scarred by the reckless behavior of Lord Byron, was worried that Ada would follow in his footsteps.

She took tight control over Ada's education, feeding her a strict diet of science and mathematics to curb any appetite she may for the romantic sensibilities of her father.

Anabella's insistence on her daughter's education paid dividends. Ada received a first-class education from private tutors.

This was unusual at the time; since it was generally accepted that women were too intellectually frail to study such esoteric concepts.

As Ada came of age, she would become entwined with some of the most prestigious intellectuals of her era. She rubbed elbows with the likes of David Bruster, Charles Dickens, Michael Faraday, and Charles Babbage.

Babbage and the Difference Engine

Ada Lovelace PortraitCharles Babbage was a renaissance man and is considered by many to be the "father of computer science."

He was an accomplished engineer, philosopher, mathematician, and economist. He was the founder of the Analytical Society, created important mathematical tables, and helped establish England's postal system.

The collaboration between Charles Babbage and Ada Lovelace gives us precious insight into the development of modern computing.

It was a true intellectual match made in heaven when they met at a gathering on June 5, 1833, held by Babbage.

Difference Engine

At the gathering, Babbage spoke passionately about his Difference Engine — a mechanical machine capable of creating complex mathematical tables.

The machine wasn't anything impressive by today's standards, but at the time it was the pinnacle of scientific innovation. Moreover, it displayed the groundwork for modern computing.

Ada's interest was piqued, to say the least. What many guests saw as an amusing curiosity, Ada saw as a paradigm shift.

As the wife of one of Ada's mathematical tutors, Sophia Frend, stated in her memoirs:

While other visitors gazed at the working of this beautiful instrument with the sort of expression, and I dare say the sort of feeling, that some savages are said to have shown on first seeing a looking-glass or hearing a gun — if, indeed, they had as strong an idea of its marvellousness — Miss Byron, young as she was, understood its working, and saw the great beauty of the invention.

Ada's meeting with Babbage was the beginning of a long friendship.

Although there was a 14 year age difference between Babbage and Lovelace, the two had much in common. Ada's foresight and creativity served as a catalyst to his prolific genius.

The First Computer Program

The successor to the Difference Engine was a more complex machine called the Analytical Engine.

The Analytical Engine used a punch card system in order to work, the same technology used in the Jacquared loom at the time.

Babbage gave a presentation on the Analytical Engine in Turin, which inspired an Italian scientist Luigi Federico Menabrea to publish a paper about his ideas in 1842.

This served to be a kernel that sparked Ada's genius. Ada Lovelace decided to translate the paper, as well as append her own notes.

Her ideas soon eclipsed the original paper, resulting in a manuscript that was three times longer than the original.

Significance and Contribution

But Ada Lovelace as more than just an assistant and translator to Babbage.

She saw computers and computer science for the world-changing technology that it was.

If Babbage is the father of the modern computer, she's the mother of modern software.

Bernoulli Numbers

Her genius can really be broken down into a few key innovations she was responsible for. First, the Bernoulli numbers. Bernoulli numbers is simply a complex series of numbers.

Ada Lovelace wrote an algorithm that meant that the Analytical Machine could arrive at the correct number, every single time.

The actual calculation isn't that important — the real development was that you could write an algorithm that could break down a complex application into a series of steps, write those steps down, and feed them to the machine to get the same result every time.

This was the first computer program ever written, and the first time anyone had ever considered getting a machine to calculate something that you didn't already know in advance.

Lovelace looked beyond the series of numbers and tables that Babbage had originally designed his machines to deal with.

She realized that if you could write a program for a computer to manipulate numbers, you could write a program to teach a computer to manipulate symbols instead.

We now know this as symbolic logic, and it's the core underpinning of modern computers.

Of course, back when Lovelace was working on the Analytical Machine, that still lay in the future.

But it became clear that you could program the Analytical Machine to compute any abstract mathematical function, not just ones based on simple arithmetic.

By realizing that algorithms could be based on symbolic logic, one could delve much further into abstraction since the potential shape and form of the final output was not bounded by actual numbers.

It's really this development of symbolic logic, in conjunction with Babbage's hardware that made the Analytical Engine a Turing Machine, thus earning Babbage the title of "father of the modern computer."

Lovelace made one final integral contribution that led to the computer as we know it today. She realized all the computer could be.

In her notes (where most of these ideas were realized, specifically note G), Lovelace wrote that "the Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves."

Which was a tremendous leap to make in the 1800s.

She's saying that given the right inputs, you can make the Analytical Machine do whatever you want — whether you want a pattern for a rug, the result to an equation, or even a new piece of music.

The output is irrelevant — so long as you can issue the right instructions, the computer can produce whatever you might need.

Ada Lovelace Today

Ada Lovelace represents hope, innovation, and progress.

To some extent, the weight of her accomplishments and intellectual prowess is hindered by her status as an icon for women's rights.

But she was an intellectual giant in her own right, who played an important part in some of the most important scientific developments in history.

Alan Turing who once said, "if Babbage had lived seventy-five years later, I would have been out of a job," was well aware of Ada's work.

He relied on her notes during his tenure as a codebreaker for the British military during World War II.

Coding for Kids

The work of Ada Lovelace can serve as an inspiration to hungry young minds everywhere. Below are links to books and media designed to introduce computer science to children.

More on Ada Lovelace

Want to learn more about the life and work of Ada Lovelace? Check out the resources below.

Ada: The Programming Language Named for Her

Originally developed for the Department of Defense, the Ada programming language was designed for critical systems where security and reliability are essential.

Ada is a structured, object-oriented, high-level programming language, with built-in support for concurrency, synchronous message passing, protected objects, and contract programming.

In addition to continued military use, Ada is widely used for operation-critical projects, such as air traffic control, satellites, commercial aircraft, medical equipment, public transportation systems — including several metro systems and the TGV high-speed rail — and the banking industry.

Design of Ada Code

Because it was designed specifically for environments that rely on a high level of security and need to be operational at all times, Ada code is both more secure and inflexible than many other programming languages.

It is a strongly typed language, meaning its compiler is much more rigid about the arguments being passed to functions, and more likely to report an error.

It also uses a compiler to identify potential runtime errors, for a higher degree of code safety.

Ada is an ALGOL-like programming language, meaning it incorporates many of the concepts of an Algorithmic Language, such as the inclusion of reserved words for logic statements like if and then.

Ada also includes a number of non-ALGOL features, such as type definitions, pointers, and enumerations.

Other Features

Some other notable features of Ada include:

  • Modular programming, allowing for separate parts of the program to run as independent modules, improving code maintenance and reliability.

  • Exceptions handling, allowing Ada programs to address their own run-time errors.

  • Scalar ranges, allowing programmers to explicitly set a range of acceptable values for variables.

  • Systems programming, which lets programmers manipulate computers at the hardware level, including the ability to specify bit layout for record fields and allocate a specific address for data placement.

  • The ability to limit language features at compile in order to meet safety standards and certification requirements.

  • An emphasis on readability and limitations on ambiguous coding, which makes it an easy language to review, troubleshoot, and reuse.

  • Strict language definitions and standardization make Ada highly portable, because compilers must adhere to these definitions with only a few exceptions. This makes it easy to port Ada code from one compiler to another and even from one platform to another.

Sample Program

This simple program asks for user input and uses it to compute the user's age in months.

It is written for the free GNAT compiler. It uses the GNAT IO library. The program demonstrates many basic features of the Ada syntax.

with Gnat.Io; use Gnat.Io;
procedure Month_Age is
   Years: Integer;
   Months: Integer;

begin
   Put ("Enter your age in years: ");
   Get (Years);
   Months := 12*Years;

   Put ("You are ");
   Put (Months);
   Put (" months old.");
end Month_Age;

Discussion

After loading the IO library, the program creates a new procedure, Month_Age, and then assigns two variables: the actual procedure is contained within the "begin" and "end" commands.

The "Put" command outputs text to the screen. The "Get" command collects user input, and in the case above assigns it to the variable, Years.

Once assigned, the Years value is multiplied by 12 to establish a value for Months.

The last three lines of the procedure outputs text to the user, along with the new value of Months (their age in months).

History

Ada was designed by Jean Ichbiah during the late 1970s, in response to a request for proposal by the US Department of Defense (DoD).

The DoD was attempting to consolidate the large number of programming languages (over 450) used in their embedded computer projects, many of which had become obsolete or were dependent on outdated hardware.

It formed the High Order Language Working Group, a collection of industry experts, to review current languages and determine the best one to address the DoD's needs; but the group ultimately determined no existing language met their requirements.

After receiving several proposals, the group selected the one submitted by CII Honeywell Bull, led by Ichbiah.

Their proposed language, Ada, was heavily influenced by another programming language the team developed earlier that decade, LIS.

Despite initial claims that Ada would quickly be adopted by the general programming community and could very well become the world's most dominant programming language, early implementation proved too sluggish for a mass audience.

Critics called Ada overly complex (it was, after all, trying to fill the role of hundreds of embedded languages) and unreliable.

Despite these setbacks, Ada persevered, and throughout the 1980s and early 1990s, Ada code was implemented into a number of systems, and in 1991 the DoD mandated that all Ada be used for all of its software — a requirement that was removed in 1997.

While Ada probably isn't the first language most hobbyists decide to try their hands at, it has established itself as a critical tool for industries that require stable, reliable code, largely due to Ada's inherent safety and security features.

Ada Compilers

There are a number of Ada compilers available:

Online Resources

Ada has developed a strong community of users, particularly those interested in security, and there is no shortage of advice, groups, and online tutorials to help you get started or further your Ada knowledge.

Here are some of our favorites:

  • Ada Information Clearinghouse: if programming languages could have their own fan sites, this would be Ada's. It's the place to find recent news, information about current standards, online tutorials, and even a very thorough rundown on why Ada is so much better than everything else out there.

  • AdaCore University: this is a complete training program to the Ada language. The site features dozens of video-based e-learning modules, covering Ada basics, major features, interaction with other programming languages, and concurrency.

  • Ada Programming by Wikibooks: this free reference provides background on Ada, general knowledge of the language features, foundational skills, and project-based tutorials. Each chapter includes tutorials on major concepts and sample code.

  • Ada2012: Ada saw some big improvements in 2012, and this site captures them all, including a side-by-side comparison of past versions. It also features reference manuals, tutorials, and recent Ada news.

  • The GNAT Academic Program: if you're considering a degree in computer science and want to focus on Ada, this site provides a list of all the Universities that feature Ada as part of their curriculum.

Books

The library of Ada books is not as rich as for some other programming languages, and the majority of titles assume a certain level of previous programming knowledge.

What's more, many of the best books available today were written before Ada2012.

They're still great resources and provide an excellent guide to the language, but you should be aware that there have been some changes, so you'll need to brush up on those at some point (check out our resource section above when you're ready).

  • Programming in Ada2012 by John Barnes: though an introduction to Ada, this is an advanced text that assumes the reader already has significant programming knowledge. It takes the approach that Ada is not simply another programming language, but a tool for sophisticated software engineering.

  • Building Parallel, Embedded, and Real-Time Applications with Ada by McCormick, Singhoff, and Hugues: designed for undergraduate students and programmers with existing knowledge of sequential programming, this text aims to broaden the reader's knowledge to include advanced concepts of parallel and distributed computing. It places a heavy emphasis on theory, so if you're looking for a hands-on tutorial, this probably isn't for you, but if you want to expand your overall understanding, this is a must-read.

  • Programming and Problem Solving with Ada 95 by Dale, Weems, and McCormick: though not a recent text, we've included this one on our list because it is one of the few Ada books designed for new programmers. With a heavy emphasis on teaching good programming habits, the book walks students through major programming concepts with real-world problem solving, regular testing, warm-up exercises, and regularly-placed quick checks.

  • Ada for Software Engineers by Mordechai Ben-Ari: as the name suggests, this is another resource for experienced programmers. This book has been criticized for being too complex for some readers. But, to be fair, Ada is designed for complex software development, so if you can't handle this book, Ada might not be the best language for you. The author focuses on essential concepts of the Ada language, using several case studies to demonstrate their applications. It also includes comparisons to other languages, including C and Java, to ease the transition.

Should You Learn Ada?

Ada is not most people's first programming language, and it will probably never be used for fun, quick programming like web applications or mobile apps.

However, for serious programmers who want to focus on highly-secure, mission-critical applications, Ada should be at the top of your list for programs to learn next, particularly if you're interested in public transportation, avionics, finance, or contributing to the next big thing in space exploration.

Ada Lovelace: The First Programmer

Ada Lovelace is not a token woman that we cram into the history of computers. She was the first programmer, and as we know today, it is usually the software people rather than the hardware people who get most of the attention.

What's more, she is hardly the only female towering figure in the history of computers and technology. She stands as an inspiration to all of us — but especially women who are still underreprented in the world of high tech.


Other Interesting Things

We have more guides, tutorials, and infographics related to computers:

Fun Ways Kids Can Learn to Code

Your child doesn't need to want to become a professional programmer to gain great skills and have a good time learning to program. That's why we created the infographic Fun Ways Kids Can Learn to Code. There are special languages just for children to learn the concepts. And who knows? Maybe they will grow up to be a tech billionaire.


Main text written by Brenda Barron with additional content by Jaramy Conners. Compiled and edited by Frank Moraes.