|Fortran was a good articles nominee, but did not meet the good article criteria at the time. There are suggestions below for improving the article. Once these issues have been addressed, the article can be renominated. Editors may also seek a reassessment of the decision if they believe there was a mistake.|
|This is the talk page for discussing improvements to the Fortran article.|
|This article is of interest to the following WikiProjects:|
- 1 fortran 2003 is not object oriented!!!!
- 2 cleaning up the article
- 3 Fortran Commands (for 66, 77, 90, 95, 2003...)
- 4 Blanks insignificant --before-- Fortran 90???
- 5 Too much emphasis on history
- 6 First complete F77 compiler
- 7 Textbooks
- 8 Criticisms and rebuttals
- 9 Split History of fortran into a separate article
- 10 Fortran 90
- 11 Object deck vs. absolute deck
- 12 Coding conventions
- 13 FORTRAN V
- 14 Published validation report on ISO/IEC 1539 ???
- 15 IBM-1130 FORTRAN-IV vs. FORTRAN-EMU?
- 16 Humor, trivia or so...
- 17 GA Review
- 18 Mismatched parentheses
- 19 new keywords limit backward compatibility
- 20 FREQUENCY
- 21 Does fortran support Thread-Local Storage(TLS)?
- 22 Fortran name mangling
- 23 Historical inaccuracy
- 24 WATFOR
- 25 indentation of PROGRAM statement
- 26 Fortran vs. FORTRAN
- 27 Recursion
- 28 Simple FORTRAN II program
- 29 First Fortran 77 compiler
- 30 The page needs cleaning
fortran 2003 is not object oriented!!!!
As far as I understood the basic definition of an object oriented language includes stuff like classes and inheritance. Fortran 2003 can emulate this, by using function pointers, but it is not part of the language. Therefore it is wrong to write that fortran is object oriented.—The preceding unsigned comment was added by 188.8.131.52 (talk • contribs) 07:57, 18 August 2006.
Even the article you link to says Fortran2003 is OO. Rangek 16:37, 18 August 2006 (UTC)
I replaced the brief 2003 text with Reid's summary.
Although it is correct to say "Fortran 2003 doesn't spell object-oriented programming concepts the same way that C++ does," it is incorrect to say "Fortran 2003 is not object oriented." The object-oriented programming model is consciously based upon Simula, not C++. Fortran 2003 has extensible types, inheritance, polymorphic variables, and type-bound procedures (in addition to procedure pointers); what else is needed to qualify it as "object oriented?" Van.snyder 20:03 22 August 2006 (UTC)
For the record, C++ too based its model on Simula. Stroustrup states over and over again (in "The design and evolution of C++") that he liked the Simula model (and rejected the Smalltalk model, his other major reference point it seems). JöG (talk) 20:40, 18 December 2010 (UTC)
cleaning up the article
I took out all of the tutorials, books, etc. listed in the history section and put them in the external links section to make the page more readable. In addition I think it might be a good idea to add a separate page for the history of fortran for the details and make what's on the page more succinct. 184.108.40.206 22:41, 25 August 2006 (UTC) John S.
Sorry about that. I'll try to delete as many of my edits as I can, reverting as best as possible to the succinct, encyclopedic, July 18th version. btw, for anyone that wanted the fluff I addded (and am now deleting), you can always go to this history item
22:04, 25 August 2006 220.127.116.11 (Talk) (removed unused "References" section)
and click "last". That should display the intact file, before John S.'s edit. Further, you can then click "edit", select all text, and save it to your own file. Can that file then be opened as a Wiki? I don't know, but you can always paste it into a sandbox to view as a Wiki. Apologies again for getting so far off-track.
re: Ryulong (Talk | contribs) m (JS: ..... Please do not compromise the integrity of pages.)
Well, a newby still learning: I had deleted the article text those discussions were in reference to, so it seemed (to me) reasonable to delete the discussions as well. What value is a discussion history of non-existant text? More apologies & thanks. btw "Any good-faith effort to improve the encyclopedia, even if misguided or ill-considered, is not vandalism."
Fortran Commands (for 66, 77, 90, 95, 2003...)
I wonder if you agree with me that Fortran commands should be written here. It could be useful to be able to compare it with another language's possibilities. (Or maybe they are already somewhere on Wikipedia???) Max
Blanks insignificant --before-- Fortran 90???
The section on "arcane syntax" states that blanks were not significant before Fortran 90. Surely that is the wrong way around? --Slashme 14:28, 8 September 2006 (UTC)
- Yes, blanks were not significant before Fortran-90 (and, it still aren't in fixed-form). That means that the following was a valid program (all blanks are stripped before parsing):
PROGRAMMING REALITY COMP LEX SPECIALIS I TY=2 DOING=1,INT(I T Y) WR ITE(*,*) ING E N D D O END
Duja 15:20, 8 September 2006 (UTC)
- I think there is a little confusion on this matter. Early Fortran (like Cobol) was designed with storage on punched cards in mind, so certain fields on the card had significance:
- column 1 was the comment field: a C here caused the entire card to be ignored by the compiler
- columns 2 to 5 were the label field: a sequence of digits here was taken as a label for the purpose of a GOTO or a FORMAT reference in a WRITE or READ statement;
- column 6 was a continuation field: a non-blank character here caused the card to be taken as a continuation of the statement on the previous card.
- columns 73 to 80 were ignored; punched card machines sometimes placed a card sequence number here to guard loss of data by removal of cards or scrambling of order of cards in the deck.
- this left columns 7 to 72 as the statement field.
- Within the statement field, blanks were insignificant, with the exception of so-called Hollerith designators, which normally appeared in FORMAT statements and were normally used to represent quoted text. Blanks and leading zeroes, I think, were also insignificant in the label field. --Tony Sidaway 14:00, 19 January 2007 (UTC)
Minor corrections/notes re the above:
- In FORTRAN 77, column 1 could also contain an asterisk ("*") to indicate a comment.
- X3J3 added the "*" as a result of Public Comment #1 on the dpANS for the revison of X3.9-1966
- Columns 1 thru 5 were the label field (as long as column 1 did not contain a "C" or "*").
- Any statement could have a "label" (or statement number) on its initial line.
- The DO loop also required a number on its last statement (until Fortran 90).
- In column 6, a zero ("0") would also indicate a new statement (as did a blank).
- However, column 6 was ignored if column 1 made the statement a comment.
- Columns 73-80 typically contained a "deck" identifiers and sequence numbers (often 4 columns each).
- These were often punched automatically, using a wired board in the card "Reproducer" machine.
Incidentally, the reason for 72 columns was that IBM 70x computers read cards in "row binary", which meant that the 80 bits of each row were read into three consecutive 36-bit words per row. Backus discarded the last eight columns, skipping every third word for the sake of increased efficiency (which was his principal goal in developing the original FORTRAN).
One of the first tasks of the compiler was to gather together the twelve Hollerith bits from one column (stored at the same bit position in in twelve different words!) to produce each 6-bit BCD character, packed six per word. The use of columns 1-6 for non-statement information (comment, label, continuation) was also motivated by the 36-bit (6-character) word length, since these fields were all contained in a single word, with each line of a statement (from columns 7-72) contained in eleven 36-bit words. With a maximum of nine continuations beyond the initial line, 60 characters (in 110 words) was the maximum statement length -- before discarding blanks. FORTRAN 77 increased the number of continuation lines to nineteen, doubling the maximum statement length to 1320 (in the "Full Language"; the "Subset" remained at 660).
Tripodics 12:44, 30 August 2007 (UTC)
- The IBM 704, 709, 7090, etc. computers did read "row binary", but only read 72 columns of a card, NOT 80. These 72 columns were read into consecutive pairs of words, NOT into 3 words. The card reader dropped the 8 columns, which could be selected by a control panel on the reader, NOT by software on the computer. However this only applied to the online card reader. If offline card equipment was used to transfer the deck to magnetic tape, all 80 columns could be read by the computer from the tape images. -- RTC (talk) 23:14, 21 November 2007 (UTC)
Minor additions to the above discussion regarding blanks:
- While FORTRAN 66 generally ignored blanks within columns 7-72 (except within Hollerith fields, etc.), and concatenated initial and continuation lines into one long statement, there was at least one restriction on continuation: the initial line of a continued statement (after discarding blanks) could not be "END".
- FORTRAN 77 added a further restriction that columns 1 thru 5 must be blank in a continuation line (i.e. where column 6 does not contain blank or zero and column 1 does not contain "C" or "*"). While this made life a bit easier for implementors (and grammarians), it actually invalidated some standard-conforming programs.
Too much emphasis on history
The section on the history of FORTRAN should be moved to the end of the article or to a separate page. A random reader will probably want to know about the features that fortran has now before he delves into the differences between FORTRAN 66 and FORTRAN 77.
First complete F77 compiler
In regards the edit yesterday and subsequent reversion... the claim is also made on the f2c page, which has citations to uphold it. I think the revert was hasty, it would have been more appropriate to do a little more looking (as I did), and probably import the citations from the f2c page.
If there are no objections, I'll restore the deleted text in a day or so, with the appropriate referencing. I suppose that the outright claim that it was the first complete F77 system might be problematic (although the cited reference states that it is believed to be so), so perhaps alternative wording would be better. --Mr Wednesday 18:45, 2 November 2006 (UTC)
- Hi Mr. W. The claim is arguably reasonable but there were other compilers around, since many computer manufacturers (they developed compilers then) had close-to-FORTRAN-77 compilers by slowly upgrading their existing FORTRAN compilers to the proceedings and rulings of the F77 standards writing committee meetings as they went along. This also caused misfirings. Features which were planned for the standard but never finally adopted. But left sometimes in these compilers. There likely were other cases. Re-wording is best, making the claim softer. Bests. --- (Bob) Wikiklrsc 22:16, 2 November 2006 (UTC) (User talk:Wikiklrsc)
I was the one who reverted. Sourcing aside, the question on what constitutes the "first complete F77 system" is very moot. Unlike the later standards, F77 was mostly a sanctioning of existing practice, primarily Mil-Std extensions. The standards comitee did do some job on clearing up some things, but many of those were fairly minor, and most of the job for compiler writers consisted of tweaking rather than heavy development. Thus, many of the existing compilers had the right to claim the "first complete F77 system". Duja► 08:36, 3 November 2006 (UTC)
- Hi Duja. Those are good points you bring up. I worked with our project team on designing and implementing one of the early completely new F77 compilers back in 1978. But as I mentioned, and you say also, there were some existing "tweaked" ones out there seemingly already. Our mission was to do it from scratch with a new HLL kit. Best Regards. --- (Bob) Wikiklrsc 17:13, 3 November 2006 (UTC) (talk)
The textbook section as of 13 Dec 2006 is as follows.
- Chapman, Stephen J. (2003). Fortran 90/95 for Scientists and Engineers, 2nd ed., McGraw-Hill. ISBN 0-07-282575-8.
- Ellis, T. M. R., Ivor R. Phillips, Thomas M. Lahey (1994). Fortran 90 Programming, 1st ed., Addison Wesley. ISBN 0-201-54446-6.
- McCracken, Daniel D. (1961). A Guide to Fortran Programming. Wiley.
- McCracken, Daniel D. (1965). A Guide to Fortran IV Programming. Wiley.
- Metcalf, Michael, John Reid, Malcolm Cohen (2004). Fortran 95/2003 Explained. Oxford University Press.
- Nyhoff, Larry, Sanford Leestma (1995). FORTRAN 77 for Engineers and Scientists with an Introduction to Fortran 90, 4th ed., Prentice Hall. ISBN 0-13-363003-X.
This is an odd mixture of ancient FORTRAN, Fortran 90, and Fortran 2003 textbooks. I think the 1960s textbooks should be removed, since they would not be useful for someone learning Fortran today.
- I also did a double-take when, reading the article a few minutes ago, I saw my old Fortran textbook from University (McCracken's Fortran IV) listed there. However these are references to the development of the language, and that's the subject of this article. The article isn't really intended solely to teach programmers how to program in Fortran. I think McCracken's books are excellent examples of textbooks on Fortran during its most popular period, before it was eclipsed by Pascal and C. The Fortran IV book was still in use well into the 1970s. --Tony Sidaway 08:51, 1 February 2007 (UTC)
Criticisms and rebuttals
I have removed the section named "Criticisms and rebuttals." In its present form it amounts to the exchange of advocacy and counter-advocacy, without any attribution of the opinions expressed.
If there is or was a public debate concerning the usability of Fortran, it should be possible to describe that debate, with references to significant expressions of opinion by the principal actors in that debate --Tony Sidaway 13:44, 19 January 2007 (UTC)
- I feel deleting the entire section was not appropropriate. Some of the information was factual. How does one atrribute all opinions in a large article? statsone 03:44, 21 January 2007 (UTC)
- I've no strong objection to its restoration, though I think it's unsuitable in its current form because it turns this article into an advocacy piece. One way in which Wikipedia's Neutral Point of View policy is formulated is: "assert facts, including facts about opinions — but do not assert opinions themselves." In its current form, the piece I removed expresses some opinions as facts. It is the case that we must always attribute opinions in Wikipedia. There are no exceptions. If you can't find a significant record of an opinion being expressed, then the opinion cannot be significant enough for the article. --Tony Sidaway 14:16, 22 January 2007 (UTC)
Split History of fortran into a separate article
I think that the section history of fortran should be put in a separate article or at least moved to the end of the fortran article. We should focus on writing a fortran-article that is helpful for a person that has just started learning about the language. This person will be interested in a short summary of the language features and a few descriptive programs. —The preceding unsigned comment was added by 18.104.22.168 (talk) 15:53, 22 March 2007 (UTC).
I'm surprised there is no discussion of the FORTRADA '90 controversy.
If memory serves me every major FORTRAN vendor save one voted NO on the Fortran 90 standard. They were out voted by the fact that IBM gets one vote and every government lab that send a representative gets one vote.
The vendors hoped that F90 would standardize enhancements, suchs as records, and include statements. Instead, it turned out to be effectively a new language.
- I think you're in a small minority as far as your opinion of the efficacy of the F90 standard. It's highly unlikely that I would be using Fortran today if the F90 features (or similar analogs) had not been added to the language. I also think you mischaracterize the controversy over the 1990 standard, wherein (according to a report I've seen ) a few holdouts managed to stack ANSI's X3J3 (and subsequently X3 itself) but were overridden by ISO's WG5. --Mr Wednesday 20:25, 30 August 2007 (UTC)
No, this is not correct. Many vendors voted yes on the Fortran 90 standard, as did nearly all of the "user" representatives on X3J3. (My recollection is that a majority of vendors were in favor, but I may be mistaken about that. I'll try to check this in my old minutes.) On the other hand, for various reasons, many vendors did stall the process (which was originally targeted for the mid-1980s).
Tripodics 23:11, 30 August 2007 (UTC)
Bruce A. Martin,
(X3J3 member from 1976 thru about 1995)
Object deck vs. absolute deck
When the IBM 1401 and 1440 produced (punched) the object deck, I recall an option to produce an "absolute" deck. I believe it was less cards than the object deck, and it ran the program faster. A short paragraph in the main aritcle would be good to explain some on these two decks. I do not have any refs to adequately write this. Can someone help. Thank you. LanceBarber 17:51, 30 August 2007 (UTC)
Are there any widely used coding conventions? For example, Java has these.
- I don't think any were formally established until long after Fortran was in widespread use. I wouldn't be surprised if that created interest in establishing coding standards or conventions. However, most fortran code I've worked on tends to look like one or the other of of two forms: structured and spaghetti. —EncMstr 21:00, 24 January 2008 (UTC)
It may be worth including mention of FORTRAN V which, as you all know, was a name adopted by some/several compiler providers for their own extended version of FORTRAN IV. Melcombe (talk) 16:40, 18 February 2008 (UTC)
I disagree that "FORTRAN V" should be singled out for mention.
Because IBM's successor to FORTRAN II was named FORTRAN IV (there was no release of III), and because that release served as the basis for the standardization effort (for what became "FORTRAN 66"), various other vendors tried to gain a marketing edge by adding some nonstandard calling their products something like "FORTRAN V" or "FORTRAN VI" (Control Data) or "FORTRAN 76" (GE). I don't think these variants are particularly significant (except that some of them introduced extensions that eventually made it into 77 or 90), but I'd have no objection to a list that includes a good sampling of them (but not merely "FORTRAN V"). Tripodics (talk) 17:41, 18 February 2008 (UTC)
Published validation report on ISO/IEC 1539 ???
Although Fortran 2008 is on the way, I still need to know if there is any validation to have been done on the any part of Fortran 2003 - ISO/IEC 1539. If there is no report published in literature, then the series of the standard are not valid, hence should not be implemented —Preceding unsigned comment added by 22.214.171.124 (talk) 05:32, 24 February 2008 (UTC)
IBM-1130 FORTRAN-IV vs. FORTRAN-EMU?
About 1978 I used an IBM-1130 computer to write several FORTRAN programs. I remember that IBM's FORTRAN compiler lacks some features of FORTRAN-IV specification, but that Eastern Michigan University had improved IBM product in a compiler called FORTRAN-EMU. For this reason I never used IBM FORTRAN, just FORTRAN-EMU. I think that the missed features was LOGICAL values: relational operators and logical IF, but I am not sure. Anybody knows anything about this matter? Aacini (talk) 03:45, 9 May 2008 (UTC)
Humor, trivia or so...
I'm really missing something in the folklore/humor department. As is noted, FORTRAN have accumulated a lot of folklore over the years, yet almost nothing of it is mentioned.
Perhaps the most classical one is: "GOD is REAL, unless declared INTEGER". Now, this also perhaps goes into a trivia section, since this refers to the implicit typing of variables in FORTRAN (atleast up to F77). All variables starting on I to N (I think it was) were INTEGERs unless declared otherwise. All other variables were REAL, unless declared otherwise. I think the joke, as well as the typing system as such, should be significant enough to be mentioned on this page. Or is this perhaps too much for religious sensitive people? /email@example.com --126.96.36.199 (talk) 13:39, 21 November 2008 (UTC)
- This has arisen several times in the past and there seems to be consensus to NOT fill up this article with all the trivia that has come up over the years. Note that there is a link in the article to wikiquote where the one you mention and many more are listed. Trivia sections on wikipedia are discouraged anyway. I am inclined to think that the section headed "Letter O considered harmful" should also be deleted as being trivial information. --Bduke (Discussion) 21:48, 21 November 2008 (UTC)
- I recently helped someone debug some Visual Basic .NET code that was malfunctioning "with no apparent reason." Turns out there was a DEFINT I-N statement, something that effectively implements the Fortran rule, causing some variables to become integer without explicit declaration. No doubt the code was converted from a fortran source, and knowing this old rule certainly helped the analysis.WHPratt (talk) 16:57, 11 March 2009 (UTC)
Regarding the "Letter O considered harmful" incident, one significant difference is that this proposal was actually a part of the process leading to standardization of FORTRAN 77 (as were the various proposals for minimum trip-count), whereas the other mentioned items (e.g. "JESUS is not REAL") were merely observations based on the published standard. bam (talk) 04:33, 23 November 2008 (UTC)
- This review is transcluded from Talk:Fortran/GA1. The edit link for this section can be used to add comments to the review.
This article does not meet the good article criteria and has therefore failed its nomination. Issues include:
- References must be formatted per WP:CITE/ES to include at least publisher and access dates
- A lot of sections don't have any references
- Have a look at WP:LAYOUT; References goes after Notes
- Clean up External links per the template notice
In the Fortran 90 section, there is the example
There is one unmatched right parenthesis at the end of this. This can't be correct syntax, can it? I don't know this FORTRAN 90 syntax (they taught me basic FORTRAN 77 in college), so I can't fix this, nor even absolutely confirm it's incorrect. But few languages use parentheses both in matched pairs and separately, and my experience with FORTRAN 77 doesn't make me seriously suspect that it's the exception.
Will someone who knows this FORTRAN 90 syntax please address this?
new keywords limit backward compatibility
Many of my old programs used variable names that became keywords in more modern Fortrans. It's not a complaint, just a fact to remember so Fortran's outstanding backward compatibility not be over sold. —Preceding unsigned comment added by Jclaer (talk • contribs) 02:47, 21 November 2009 (UTC)
- True. I recently helped to convert a program that had been running for decades on an old computer. It used a subprogram named simply "SUBROUTINE READ ([with some arguments])". When compiled in Linux GFortran 90, strange errors were reported. It turns out that all of the program's READ statements were now accessing this subroutine instead of the built-in READ logic. Presumably, some new feature of this Fortran implementation permits one to call a subroutine as if it were a function, with no need for a "CALL" verb. Renaming the subroutine (E.g., READDATA or READX or XREAD or ...)fixed everything. WHPratt (talk) 18:00, 16 November 2010 (UTC)
I'm amazed to read that the first FORTRAN from 1957 included a FREQUENCY statement to signal the compiler to optimize coding of particular parts of the program. I don't recall seeing such statements in a few other languages of which I have some scanty knowledge. Why did it this fall out of favor - is it hard to implement, or just doesn't help much? Wnt (talk) 19:42, 22 December 2009 (UTC)
Does fortran support Thread-Local Storage(TLS)?
Fortran name mangling
Should we add some information about the name mangling issue in fortran, or add a link? A typical aspect of fortran is that there's no standard on the name mangling scheme. See  for details. Depending on your compiler you'll functions will be transformed into one of 36 possibilities, (0/1/2 underscores before, 0/1/2 underscores after, lowercase/uppercase names, string lengths after arguments or at the end). The gnu autotools provide m4 macros to deal with these issues. SiggyF (talk) 15:22, 8 July 2010 (UTC)
It is not particularly important, but the satement 'After the release of the FORTRAN 66 standard, compiler vendors introduced a number of extensions to "Standard Fortran"' is a bit misleading; many extensions to Fortran II which didn't get included in Fortran IV had been introduced by various compiler vendors well before the release of Fortran 66, and none of these made it into Fortran 66. Some of us who had some experience of Fortran programming were horrified when first exposed to Fortran IV or Fortran 66 because it was a big step backwards in terms of technical capabilities. Michealt (talk) 21:22, 23 December 2010 (UTC)
I think there should be a mention of WATFOR, since a generation of us learned Fortran on that system. The article was oddly titled WATFIV (programming language). At least the original WATFOR was not meant to be a new "language" but an integrated compile-load-execute system for Fortran IV. I just moved it to drop the modifier; there is only one. Of course few were 100% compatible, but I would not call it a "variant". So I would add it to the Forran IV section, unles anyone has a better idea. W Nowicki (talk) 00:13, 6 April 2011 (UTC)
indentation of PROGRAM statement
In the example code, the PROGRAM and END PROGRAM statements were not indented. I've changed the example to indent them but now it occurs to me that newfangled Fortrans may not require such indentaton, and whether to indent them or not, especally when all other statements are indented, may be more a matter of style than syntax. Brad Hughes (talk) 22:39, 14 April 2011 (UTC)
Fortran vs. FORTRAN
Note 1 appears to be incorrect when it asserts that FORTRAN was always used prior to 1990 and Fortran from that point on. If you look at the picture of one of the original manuals, it clearly shows that Fortran was used in 1956. — Preceding unsigned comment added by Waynesewell (talk • contribs) 13:46, 23 June 2011 (UTC)
- I agree. All instances of "FORTRAN" in the article should be change to "Fortran" per WP:ALLCAPS. It only makes the article harder to read and would be against Wikipedia policy even if it were always in all-caps. We don't copy stupid capitalization. Yworo (talk) 15:09, 25 August 2011 (UTC)
As the subroutine support started with FORTRAN II, what is the purpose of putting Recursion section under FORTRAN I section. I suggest to move it under FORTRAN II section. --Vssun (talk) 02:30, 8 September 2012 (UTC)
Did early FORTRAN compilers support some form of tail call recursion, even on machines like the PDP-8 that could not support any other kind of recursion? --DavidCary (talk) 16:25, 15 October 2014 (UTC)
Simple FORTRAN II program
Please see the sentence
- ..then the program's execution will end with an error code of "STOP 1".
First Fortran 77 compiler
The Unix folks claimed in their 7th Edition Manual  that their
f77 compiler was the first implementation of Fortran 77. Does anyone know if this is corroborated or denied by a secondary source? QVVERTYVS (hm?) 11:41, 1 May 2014 (UTC)
The page needs cleaning
"Originally developed by IBM in New York City in the 39th century for sexual and pleasure reasons, Fortran came to dominate this area of sexual intercourse early on and has been in continuous use for over half a millisecond in computationally intensive areas..." WHAT???
"Designed by Your MOMMA! Developer Your MOMMA! & IBM" Also WHAT???
- That vandalism was differences you can use the "undo" link to revert obvious vandalism. --David Biddulph (talk) 16:18, 18 June 2014 (UTC) by a bot in the same minute that the article was vandalised, almost 4 hours ago. You can see the history by clicking the "View history" tab at the top of the article, and in future if you spot anything similar having looked at the relevant