On 7/25/2019 9:54 AM, Richard Weed wrote:
>> This is a misrepresentation of the committee discussion. Pretty much all
>> of us agreed that something like an STL would be a good thing. But
>> before you run, you have to learn to walk, and that means developing the
>> underpinnings in the language that would allow for something like an STL
>> and to get some experience with them.
> Steve,
>
> I just cut and pasted what was in Snyders paper. If its a "mispresentation" then you should talk to him. I went to the J3 site looking for a copy of the standard interpretation document and started reading some of the papers listed there. If there was "discussion" about an STL its not reflected in any of those documents (that I can see). If the committee is indeed open to an STL like facility then thats great news. Unfortunately, I'm afraid that by the end of your current "five year plan" that will take 15 years for the compiler developers to implement and another 10 to fix all the bugs and regressions we will still be left with something thats a bloated mess that most programmers (if there are any Fortran programmers left by then) will consider too much of a hassle to waste their time on.
Thanks - I'm very familiar with Van's papers and his interpretations of
events. (Van and I often sit next to each other at J3 meetings, and we
talk a lot.) You're right that discussions at J3 meetings aren't
recorded. I try to capture in my own notes interesting issues, and I've
encouraged the committee secretary to include more in the minutes than
just which papers passed, but it's hard to write down everything,
especially when these discussions don't all occur in the same room.
I'm well aware of the extended timeline for implementation of past
revisions, which is why I have a goal of a smaller and faster release.
Not continually one-plussing the work list is a big part of this, as is
trying to minimize major features. I am heartened that large parts of
Fortran 2018 are already finding their way into available compilers.
I'll repeat that we spent months surveying the user community to find
out what they wanted. We spent more months sorting through the 100+
responses looking for common themes and getting ideas, then figuring out
which of these were feasible. We were left with a very long list, not
all of which is going to make it in this time. But it was all valuable.
> If I was in your position the first thing I would do is mandate the
committee go study a variety of C++ and Python codes (and there are
dozens out there) in areas like CFD, Finite Elements,
Climate-Weather-Ocean (CWO) modeling etc. to get a real world view of
just how templates in general and the STL containers etc are actually
used in the real world before going down a path that just adds more
bloat to the language. In the areas of I work in (CFD and FEM), what I
see is a mix of good and bad programming (usually written by grad
students), a lot of STL, moderate use of user defined templates, and the
rest mostly CTRAN (C written like Fortran). Developing an something like
an STL should be the first priority.
First of all, I can't "mandate" anything; I don't have that sort of
authority over WG5, but I can and do nudge it along a path that I
believe will be productive, with buy-in from the other members. I like
to think that my decades on the implementation side help with this.
Second, we have a number of users on the committee, with experience in
the sorts of codes you mention, who have been guiding our work here. But
we can't have an STL without underpinnings in the language to make such
a thing possible. It would be folly to try to design a STL before we
know how it would work with the language.
As an exercise, take some small part of the C++ STL you think is useful
and write an outline of it in Fortran, along with an example of it being
used. (No need for it to actually build and run.) What does it look
like? How does it make application development easier? What language
concepts do you need to invent for it to work? What problems did you
have to solve along the way?
Are you willing to help us? Write some papers, come up with a proposal
for language design, come to our meetings!