Premium
Language design and analyzability: a retrospective
Author(s) -
Ryder Barbara G.,
Wiedermann Ben
Publication year - 2012
Publication title -
software: practice and experience
Language(s) - English
Resource type - Journals
SCImago Journal Rank - 0.437
H-Index - 70
eISSN - 1097-024X
pISSN - 0038-0644
DOI - 10.1002/spe.1133
Subject(s) - programming language , computer science , javascript , python (programming language) , software engineering , fortran , modularity (biology) , software , high level programming language , fourth generation programming language , structured programming , programming paradigm , inductive programming , functional logic programming , genetics , biology
SUMMARY There is tension between programming language design for modularity and flexibility of programming and the amenability of the resulting programs to static analysis. At the start of Software Practice and Experience in 1971, most languages in commercial use were procedural (e.g., FORTRAN, ALGOL, PL/I) and on the whole were easier to analyze than languages of today such as JavaScript and Python. Modern languages include dynamic features, which enhance prototyping of approaches, often resulting in programs that are difficult for software tools or humans to understand. Starting with this perspective, we explore the relationship between language features and the ability of static analysis to precisely determine control flow and data flow in programs, thus enabling program optimization, transformation and understanding. Copyright © 2011 John Wiley & Sons, Ltd.