What should a future general purpose programming language look like?

The dominant language of the future should tackle the central problem of writing software, which is that small numbers of human errors consume the vast majority of the total time and effort spent. Many programmers estimate that over 80% of their time is not spent designing and coding, but in that process euphemistically called “debugging”, where a small number of errors consume a disproportionate amount of time. Thus the main feature should be eliminating this largest section of time, and the other features should support the use of interchangeable parts. In Prof. Wirth’s Modula-2 he reached a high water mark for interchangeable parts, offering separate compilation of modules, and protection against a module changing and a client of the module not realizing that the interfaces had changed. No subsequent language to my knowledge has this feature, except for Beads, a language in the “next-gen” race, along with Elm, Red, and others.

As for other language features, it should try to be a simpler language, breaking free from the mistakes of the past like OOP, and avoiding inventing some new complex, hyper-abstract set of concepts like functors and monads as are in vogue today. Simplicity is a feature everyone can enjoy.