Re: being or not being?
Stefan Ram wrote:
This question is about English style with regard to Java.
Stefan, are you a native English speaker? Your English is quite good.
It's been a while since I've read through Strunk & White, but I'll try
to comment on what I feel.
The context is a tutorial that just said:
The activation of an operation expression is called
?evaluation?. It will activate the operation that is
given by the expression.
I'm not really sure what you're trying to say here. I can't think of
any programming language that uses words like "activation", "operation
expression".
"Activation" I think should be either evaluation or execution.
Evaluation is done when the compiler encounters the expression,
execution is done at runtime. And as I imply I think it you should use
the word "executes" instead of "activates."
For calling methods, I like the term "invokes."
You should verify all of this with the JLS, to make sure you are using
the correct terminology. I haven't read that thing as thoroughly as I'd
like, so I might be off-base here.
So to change your paragraph above:
"The compiler will evaluate expressions in your code.
At runtime, each term in the expression will be
executed."
I assume that the following sentences are all correct.
But which one is to prefer for a tutorial?
"When the expression java.lang.Thread.dumpStack();
is executed, the method java.lang.Thread.dumpStack
will be invoked by the runtime."
Notice that I do chain my verbs together. The compiler evaluates, then
the runtime executes. I use "executed" twice in those two paragraphs to
chain the idea expressed in each that I am continuing with the same thought.
I guess over all I like your first one better:
For example, when the expression
?java.lang.Thread.dumpStack()? is evaluated, the
operation ?java.lang.Thread.dumpStack()? is activated.
But I have issues with your exact terminology. You should use terms
closer to the JLS and standard programming terminology. It's a little
jarring to read you excerpts when they use terms so differently than
what is normal.
(Regarding "is being", it's kind of subtle, but it means "right now." In
the same instant of time as the speaker. "Help! The bank is being
robbed!" The speaker means the bank is being robbed right now. "Is"
means all the time, as a statement of fact or a property that does not
change. "The bank is on Main Street." The bank was on Main Street
yesterday, it is on Main Street today, it will be on Main Street
tomorrow. This does not change.
Since the runtime always invokes Thread.dumpStack() for the expression
"Thread.dumpStack()," it is better to use "is." This is not a property
that changes. If there were something special about the context of the
speaker, and Thread.dumpStack() would not be invoked in another context,
"is being" might be better. But I would probably use "would" or "will"
instead.)