A way from your formal specification of a solution down to a particular language set of features can be enormously long.<p>A trivial example can be translating a formal grammar - codified as just few lines of BNF - into a low level language (say, C, or Java). Good if your grammar can be expressed as recursive descent directly, and even in this case you&#x27;ll end up spitting out hundreds of lines of code, most likely making a lot stupid mistakes.<p>So, language <i>does</i> matter a lot. BNF is a right language for this task. C or Java are not right, period. Programmers should not waste their precious time translating abstract concepts down to the boring languages minutiae - they must always use the same level of abstraction as their problem domain requires.