I remember a talk at the Chaos Communication Congress back in 2009 2006 about Groovy. There was a code example starting with Java (which is valid Groovy code) and gradually removing semicolons, types and keywords until the code was scripting-like. Interestingly exclusively both extremes are used in the Groovy ecosystem. High-profile libraries in the Groovy ecosystem are programmed in Java (syntax-wise the initial state of the code in the talk) and as a layer around this foundation people use the dynamic features of Groovy (the other extreme in the talk, after refactoring the code to be scripting-like). Like the flesh-and-bones-metaphor (bones = static foundation, flesh = dynamic DSL wrapper).