Sign In

Communications of the ACM

Research highlights

Technical Perspective: Software Is Natural

To view the accompanying paper, visit

In just half of the average 150-year life span of a Galápagos tortoise, high-level programming languages have come into existence and have undergone a remarkable transformation. The earliest forms of higher-level languages made it easier to state mathematical expressions than was possible in machine code, but it was not long before the need for languages to go beyond mathematical computations and to express solutions for business problems was recognized. One of the languages designed in response to this need was Cobol, with a stated desire to maximize the use of simple English phrases. From this point on, it became more common for programming languages to include a mix of keywords and constructs based on natural language phrases. Combined with the ability for programmers to state variable names using semantically meaningful tokens and the ability to embed comments that explain the code in natural language, programming languages continue to ease the expressions of complex ideas into software.

The ability to more easily express programs has enabled the creation of software to tackle complex problems. This software is often large and complex itself. To understand, extend, and solve problems in this intricate software, software engineers need tools. Many tools have been created, from ones that indicate where the expression of software does not meet syntactic rules of the language to defect predictors that aim to suggest where bugs may be lurking in the software and where effort might be directed to eradicate such bugs before they affect users of the software. The vast majority of the tools built to aid software engineers use deep knowledge of a programming language, often requiring specific work for each kind of programming language and often requiring extensive development effort.


No entries found

Log in to Read the Full Article

Sign In

Sign in using your ACM Web Account username and password to access premium content if you are an ACM member, Communications subscriber or Digital Library subscriber.

Need Access?

Please select one of the options below for access to premium content and features.

Create a Web Account

If you are already an ACM member, Communications subscriber, or Digital Library subscriber, please set up a web account to access premium content on this site.

Join the ACM

Become a member to take full advantage of ACM's outstanding computing information resources, networking opportunities, and other benefits.

Subscribe to Communications of the ACM Magazine

Get full access to 50+ years of CACM content and receive the print version of the magazine monthly.

Purchase the Article

Non-members can purchase this article or a copy of the magazine in which it appears.