A long time ago, around the time Joel Spolsky was the top programming blog, I read an article that split programming languages (or was it programmers?) between "enabling" and "restricting". Or they may have used slightly different words.<p>But basically, "enabling" languages are about giving a lot of power to the programmer and trusting him to use it right. Today it's exemplified by the Rails doctrine of "provide sharp knives" except the article I read predated that manifesto by a few years.<p>And "restricting" languages were about protecting the programmer from himself, enforcing strict interfaces, strict private/public, and in general restricting/guiding the programmer to the way that is considered correct design by the language. IIRC this was exemplified by Java.<p>Has anyone read or remember something like that?
Sounds like Steve Yegge's wheelhouse. Possibly this post <a href="https://gist.github.com/cornchz/3313150" rel="nofollow noreferrer">https://gist.github.com/cornchz/3313150</a> but there are plenty more <a href="https://ratfactor.com/yeggedex" rel="nofollow noreferrer">https://ratfactor.com/yeggedex</a>
<a href="https://wiki.c2.com/?BondageAndDisciplineLanguage" rel="nofollow noreferrer">https://wiki.c2.com/?BondageAndDisciplineLanguage</a><p>Closest I know of, but many people have probably written on this topic.
There was this talk ("Capability vs Sustainability") from 2012:<p><a href="https://www.youtube.com/watch?v=NftT6HWFgq0">https://www.youtube.com/watch?v=NftT6HWFgq0</a><p>Very nearly exactly what you're describing; not sure if it's the same thing you were thinking of, or just part of a similar thought-wave at the time.