By Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, Sam Tobin-Hochstadt Communications of the ACM, March 2018, Vol. 61 No. 3, Pages 62-71 10.1145/3127323 Comments (7) In the ideal world, software developers would analyze each problem in the language of its domain and then articulate solutions in matching terms. They could thus easily commu