Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!usc!samsung!umich!sharkey!bnlux0!bam From: bam@bnlux0.bnl.gov (Bruce A. Martin) Newsgroups: comp.lang.fortran Subject: Re: Dates for the different versions of FORTRAN? Message-ID: <2064@bnlux0.bnl.gov> Date: 16 Aug 90 00:39:50 GMT References: <3093.26c6b1cd@cc.curtin.edu.au> <1990Aug13.145301.20663@cs.umn.edu> Organization: Brookhaven National Lab Lines: 187 In article <1990Aug13.145301.20663@cs.umn.edu> pockrand@cs.umn.edu (Mitch Pockrandt) writes: >In article <3093.26c6b1cd@cc.curtin.edu.au> North_TJ@cc.curtin.edu.au (Tim North) writes: >>Hi, >> I'm running a class on various programming languages, and I'm doing a >>couple of lectures on FORTRAN. I'm not really sure of the different versions >>of FORTRAN that have appeared over the years, though. I'd really appreciate it >>if someone could make corrections/additions to the following table: >> >> 1953 FORTRAN I >> 19?? FORTRAN II ? >> 19?? FORTRAN III ? >> 1966 FORTRAN IV <***** ??? (see below) >> 1977 FORTRAN 77 >> 198? FORTRAN 8X >> 1990? FORTRAN 90 ? >> >Time for some confusion on my part. I used to use Fortran 66 on IBMs >mainframes (FORTG and FORTG1 as I recall). At the time I was under >the impression that Fortran IV was a newer different beast (not >necessarily blessed by ANSI or any such body) that had come about in >the early 1970's to take care of some of the shortcomings of Fortran >66. At least on the Burroughs equipment I worked on 12 years ago, we >had a Fortran IV compiler (FORTIV) which was different from the >Fortran 66 extended workhorse we frequently used. > >Any body else remember or know? > >=========================================================================== > Mitchell S. Pockrandt - Computer Science Dept. - University of Minnesota... >=========================================================================== There's some confusion, here. Let me try: The year numbers refer to standards. (Date of completion -- not necessarily publication.) The roman numerals were used by IBM to identify major releases. __________________________________________________________________________ WARNING: Type "J" now, to avoid lots of gory detail, replete with opinions and bad jokes. __________________________________________________________________________ As most people know, the original "Fortran" was developed at IBM by a team led by John Backus, beginning in 1954. [An excellent and enjoyable article about this work appeared over ten years later in IBM's "Computing Report (for the Scientist and Engineer)", Nov. 1976, Vol. II, No. 4.] They slipped somewhat in schedule, but completed it in 1957. The resulting commercial product was then known as "FORTRAN", but nowadays most people add a Roman numeral to distinguish "Fortran I" from its successors. (Most people nowadays have keyboards with lower case, so I'll avoid ALL-CAPS, below.) Shortly thereafter (I'll let somebody else look up the exact dates!), another team (under Libby Miller) developed a revision which was dubbed \Fortran II. It added many useful extensions (like subroutines) and became enormously popular on IBM machines (particularly the 704). I'm fuzzy about the details of \Fortran III, but it never really saw the light of day. (Some say it was never completed and that there is no such name -- just a placeholder; others say it was named but stillborn; others say it became PL/I. Inquiring minds want to know! :^> ) Finally, IBM came out with FORTRAN IV, which cleaned up a lot of silly stuff (like SQRTF and XMAXF) and added much good stuff (like the logical IF statement). FORTRAN II and FORTRAN IV were implemented on other computers (after IBM released the rights, in order to placate nervous customers who didn't want to get locked in forever to proprietary hardware). Thus arose serious issues of code portability! (Like 1620 to 7094? ;-) The American Standards Association (ASA, later renamed USASI, know known as ANSI) established a technical committee (via X3, but I'll skip the internal logic) named "X3.4.3" (later renamed X3J3) to develop a "standard". That standard -- the first standard ever developed for a programming language -- was known published as "X3.9-1966". It was virtually completed in 1963, when it was published in Communications of the ACM, but the 1966 reflects the year in which ANSI completed all the red tape and published it. The term "Fortran 66" was occasionally used to describe the language defined by X3.9-1966. The term "FORTRAN IV" refers to any of a number of slightly different IBM compilers, which more or less conform to X3.9-1966 but which also allowed various extensions (which made the user programs nonstandard). The standard also defined the semantics more precisely and more generally, restricted the syntax somewhat more to insure portability across vendors, and defined a number of things as "undefined" -- especially when different vendors (and different IBM compilers) executed them differently. [COMMON saving, Assigned GO TO variable values, and DO loop indexes are some examples.] Certainly, there was a FORTRAN IV before there was a Fortran 66. In fact, by 1964, I was already using FORTRAN IV under IBSYS on the 7040 at Brooklyn Poly. (I earned half my Graduate School tuition money by converting crystallographic codes from II to IV, and discovered how much effort a $NAME card could save! The rest came from guiding white-water canoe trips.) Many people erroneously used the term "FORTRAN IV" to describe compilers and languages conforming to X3.9, altho it rarely mattered: the differences were not very noticeable -- except when porting to another machine. (THEN you'd hear them yell at the new vendor for not having the nonstandard extension which they THOUGHT was part of the language!). Anyhow, the term "Fortran 66" got used much more AFTER the term "Fortran 77" was invented. -=o=- The term "Fortran 77" was introduced by X3J3 (the ANSI Fortran Standards Committee, at a November 1976 meeting (which I hosted at BNL)) as an *informal* name for the revision which was just being completed. It replaced the ugly name "FORTREV", which X3J3 had been using to refer to drafts of the proposed revision to ANSI standard X3.9. Unfortunately, some people used the term "Fortran 78", which either had no meaning or substitutes the ANSI adoption/publication date for the *name* of the language. (This is silly: you wouldn't call it "Fortran 80" just because the (identical) ISO standard bears a publication date of 1980; Similarly for the Canadian (1979?) and other national standards.) Some clever vendors chose product names to suggest that their compiler was bigger, or better, or up to date with the state-of-the-whatever. For example: Fortran 76, Fortran 79, Fortran 80 (which was realy a subset of 66 (!) with a few 77 features, but which ran on the Z-80), Fortran V, Fortran VI, Fortran VII, WATFIV. Such names were parochial (and much hyped), but they only served to confuse the issue of name and vintage. -=o=- When X3J3 first met (July 1977, in Jackson, WY) to plan the next revision, there was much debate as to whether we should call it "Fortran 82" or "Fortran 83". (ANSI had recently reasserted its policy of revising standards on a five-year basis.) Some preferred a quickie extension (for free form, longer names, an extended-range substitute, and perhaps a structured loop) in a couple of years, with work being done in parallel on the major changes for a more complete revision. [Alas. Would that our side had won that vote!!] :-[ Altho the revision effort was completed in about 1985, its finalization was prevented by a number of internal conflicts (vendors vs. users, vendor vs. vendor, ANSI vs. ISO, idiot vs. genius [pick your own villan(s)], micro vs. mainframe, vector vs. scalar, and many permutations [and perversions] thereof) which are too-extensively dealt with elsewhere. |-{ Of course, "Fortran 8x" was used as the working name throughout most of the revision effort. One esteemed member of X3J3 (JHM) did predict (in about 1984) that "x" was a hexadecimal digit! 8*> At one point, the ISO Fortran Standards Committee (WG5) -- which had delegated the technical work to X3J3 (in parallel with X3's delegation of work to X3J3) got so fed up that it defined the language features at its August 1988 meeting (in Paris) and threatened to proceed if X3J3 didn't finish by early the next year. The language so described was named "Fortran 88". Subsequently, "Fortran 88" was often used (but NOT by all -- it became VERY political) to describe whichever "compromise had a plurality that week. #:+< Partly to distinguish the end product from specific versions (including the August 88 ultimatum), and partly because too much time had slipped by, the committees agreed to the name "Fortran 90" to describe what has now finally become a "Draft International Standard". 8-) Whether ISO publishes it in 1990 or later (and whether ANSI revises X3.9 or adopts two languages this decade or never) the *name* of the language is "Fortran 90". -=o=- The term "Fortran 9x" often appeared in proposals and in articles as a reference to the "next" revision (i.e. the one in which ASSIGN and alternate return will be "deleted"). However, people seem to have stopped guessing when or whether there will be another revision. Maybe the next one will be "Fortran 00". :-> ;-} Just to confuse things further: around these parts, 9X is part of the Bell system (^G ?). -/s/- BAM Bruce A. Martin (516) 282-3712 [Address given for identification only.] Grumman Space Systems [Every conceivable disclaimer applies!!] c/o National Synchrotron Light Source [Opinions are mine only, & will change,] Bldg. 725C, Brookhaven National Lab. [without notice, whenever appropriate!!] Upton, NY 11973 [DISCLAIMER: The statements made herein do not necessarily reflect those of any other individual, group, organization, corporation, or government agency. My work on X3J3 does not in any way represent official policies or positions of my past or present employers nor those of any other sponsor or affiliate.]