James Kanze said:
On Jun 4, 3:24 pm, Rainer Weikusat <
[email protected]> wrote:
[...]
I wouldn't know about that, since I don't know anyone who is
monolingual in C++.
In this particular case, you should be asking me what I
intended to express instead of assuming that you can just make
up a meaning which is convenient for you. But I believe you
understood me all to well.
I'm really not sure. As I said, I don't know anyone who is
monolingual in C++, or even uses it as a first language. And
that is the key to my point.
But this is a side issue. The core of my original statement
was supposed to be that 'using Rational-whatever to produce
input for some program which then creates C++ from that as one
of the steps which ultimatively end up creating an executable
program' is not genuinely different from using any other
programming language, ie if 'documentation is used to create
code', this documentation should sensibly be referred to as
[source] code, too. This does not preclude this 'documentation
language' to be better suited for a particular task than
$random_other_language (although it doesn't imply that it is
so, either).
OK. In a certain (very real) sense, this is true. And Rose or
CWeb are still somewhat removed from English. In the case of
Rose, of course, this is intentional---the goal is to input UML,
not English, and UML is still another language, which has to be
learned. And UML, while very good at expressing higher level
relationships, provides no support for expressing the lowest
level---the code in each function, so Rose won't generate this
for you. In the case of CWeb, the distance is considerably
less---CWeb is designed to produce English (or French or
whatever) documents; it differs from "plain English" mainly in
containing markup. It also requires that all of the C++ which
ends up in the C++ source file appear literally in the CWeb
source; in this sense, it doesn't "compile" the CWeb source to
C++; it just extracts the parts marked up as C++ (and reorders
them).
For almost 40 years, people have been anticipating and
writing about "automatic programming, " or the
generation of a program for solving a problem from a
statement of the problem specifications. Some today
write as if they expect this technology to provide the
next breakthrough 5
Parnas 4 implies that the term is used for glamour,
not for semantic content, asserting,
In short, automatic programming always has been a
euphemism for programming with a higher-level language
than was presently available to the programmer.
[
http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBu...]
And my personal opinion regarding this 'euphemisms' is that
they are a throroughly bad thing, if only because they
generate irrational resistance to 'more modern technologies'
(in areas where they actually make sense).
I totally agree with this sentiment---the worst thing about them
being, of course, that they lead higher management to expect
miracles. But I don't pretend that Rose or CWeb are "automatic
programming tools". All I was trying to say is that the
"documentation" should precede the actual coding (in C++ or
whatever), and that there are tools which support the extraction
of some (or in the case of CWeb, all) of the C++ source code
from the "documentation". If you want to call such
documentation "source code", you can---and there's certainly a
sense in which you're correct. But there is still a significant
difference between a UML diagram or a CWeb document and C++ or
another "programming language". And while it's true that part
of C++ is designed to be read by humans, and not just the
compiler, it's also designed with the idea that it somehow
expresses the actions the program should take; tools like Rose
or CWeb start from the idea that we should start at a higher
level, and maintain higher level design considerations in the
same file as the program code. And that's something I find
useful.