To view the accompanying paper, visit doi.acm.org/10.1145/2902362
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