Why Programming Languages

[Why Programming Languages?](http://soft.vub.ac.be/~tvcutsem/whypls.html) > When I present my research work on programming languages, people often ask me "why do you need a new programming language to solve this problem? Why not just implement it as a library?" Or, I get asked "why didn't you implement it as an extension to {some existing language}?" In this essay I will try to make explicit some of the goals and motivations behind language design. They are formulated wholly from my own background in this area, so I might be missing some important ones I haven't thought about.

> In this essay, I will distinguish four primary goals that can drive the language design process:

> * Language as syntactic abstraction mechanism: to reduce repetitive "boilerplate" code that cannot be abstracted from using another language's built-in abstraction mechanisms. > * Language as thought shaper: to induce a paradigm shift in how one should structure software (changing the "path of least resistance"). > * Language as a simplifier: to boil down an existing paradigm to just its essential parts, often to increase understanding and insight. > * Language as law enforcer: to enforce important properties or invariants, possibly to make it easier to infer more useful properties from programs.

A must-read essay by [Tom Van Cutsem](http://soft.vub.ac.be/~tvcutsem).