Campbell,
I used to work for one of the big consulting firms locally, they sold to a national company sometime after I left, they came across a very nice development tool they billed as a 4GL. They wanted us to use it for development to increase their profit margins by shrinking our development time. What we found, in all cases, was that the tool did get us to a "pre-Alpha state" faster, but then we had to fish though the generated source and find the, shall we say "less than optimal code segments". So we were left with thousands of lines of C++ code that was machine generated to fish though.
Often times to implement changes that needed to be effected, we had to mark entire sections, hundreds of lines of code, as manual maintenance and take it out of the realm of the "4GL". This, in itself, insured that there had to be a C++ coder/maintenance person that was on staff for each project. Not to mention that it took way more time to fish out and fix the bad sections. That coupled with each section of code marked for manual maintenance became legacy C++ code, which became an ever increasing percent of each application developed, the idea of using the 4GL soon was realized as an artificial boost in profits, only to be sucked away and completely lost in long run.
Our "old out of date" development paradigm, as they called it in the presentation, proved to not only be more profitable, but also a lot more dependable. Our clients much preferred the 3GL development cycle over the "new and better" 4GL approach.
The only thing the 4GL approach even "kind of" worked for was to lock our client in, as we were the only ones using the 4GL at the time, but when they found that the source was all in C++, they bought the source and jumped ship because of the flawed development and maintenance cycle--they still required to buy time with our C++ programmers.
Les
BTW: yes, all the developers hated the machine generated C++ code, it was horrible to look at (alien to decipher), not documented with any reasonable explanation of what is being done, and each time we marked a section for manual development, it just meant one of us had to be tied to that project forever... with the garbage looking autogenerated C++ code to maintain