I was almost agreeing with you until you got here:
> For C++, we use the
> communicator as the base object and now the other 1% is happy because the names
> are both long and (from their perspective) obvious.
As I've already said, I don't like this scoping. To summarize:
What possible business does a communicator object have knowing
how to initialize a file object?
And as for this:
> MPI_FILE_OPEN just *radiates* wrongness. There is no FILE object yet, so how
> can we possibly perform an OPEN action on it?
There are plenty of examples (shown earlier) of pseudo-constructors
in MPI-2 that perform an action (create or initialize) on an object
that doesn't exist yet. To be more precise, they bring the object
into existence. The only objection to MPI_FILE_OPEN can be that the
"create" or "init" action is misnamed "open". The reason for
the funny name is that "file" refers both to a collection of
data in storage and to the MPI object through which it is manipulated.
Creating a File object amounts to opening a file. If the name
of the MPI object were, say, File_handle, we could call the
function MPI_File_handle_create and everything would make sense.
John