Sprechen Sie Python?
Well, maybe not Python, but how do you define a higher-level language? Is it based on how much the programmer is isolated from the actual code? Is it about a more-powerful control capability? There's little consensus on what a higher-level language is for more complex applications for discrete/machine control. Is it C#, C++ and scripting? Are there others in serious play? What can they do that 61131 languages, for example, can't? Does most automation supplier programming software use higher-level languages for some purposes?
Read our three-part story Higher Ground on high-level control languages and their design.

High? Low? It's is all a point of view.
I have a few comments to make about this:
The big trade-off
For almost anything we use in life, tools, programming languages, appliances, there is an inverse relationship between easy of use and flexibility. In programming, assembler can do anything, right down to the metal, but is hard (and hazardous) to use. LabVIEW is very much easier to use, but can't get really down and dirty.
Know your domain
Closely related to the ease/flexibility issue is this: A language can be more and more powerful, but only for a narrower and narrower application domain. The more tightly focussed the language is on a particular set of tasks, the more powerful it can be within that defined domain.
On re-usability
In 40 years of making embedded controls, I have had little success in re-using code. Each new project seems to be sufficiently unique that I might re-use techniques but not actual code. The one way in which I see code re-use as practical is with design-time configurable software components. These are a step further up the ladder than library routines, because they come with property sheets that are used by the application programmer to tailor their properties and - within bounds, behaviour - to a specific use. This is a big part of how graphical design environments work.
Horses for courses
I think arguments about which language is best are meaningless without the “for” clause – language X is best for ...
In many control projects there is a mix of tasks which may require a mix of languages for a cost effective and reliable solution. In some aspects of programming, assembler is the best tool – maybe we should call assembler a high level language for I/O drivers and ISRs. A good state machine programming tool is indespensible for reactive controls.
A cabinet maker uses an array of tools to build a chair, selecting the right tool for each task. A wise controls programmer will carry an array of languages in her tool kit.
David Stonier-Gibson, SPLat Controls www.splatco.com
PS: None of the formatting tools work, at least not the preview under FireFox!!