&gt; One of them is that, each time you read a new program, you have to learn a new language<p>Which is not bad at all. You still have to do it with the programs written in the same language built with different libraries and targeting the different problem domains. In the latter case the language is obscuring the essence of the code.<p>And if you&#x27;re using a well designed DSL, and you&#x27;re familiar with the problem domain, it will be readable naturally, just like a pseudocode.