In the literature on object oriented programming (OO), design patterns are a very popular subject. Apart from any hype that may be connected to the concept, they are supposed to help you look at a programming problem and come up with a robust design for its solution. The reason design patterns work is not that they are something new, but instead that they are time-honoured, well-developed solutions.I will not repeat the story about architectural design patterns and Christopher Alexander who recognised their potential. Instead I will try to explain how these (software) design patterns can be used in setting up Fortran 90/95 programs, despite the "fact" that Fortran 90/95 lacks certain OO features, such as inheritance and polymorphism. It may not be stressed in all OO literature, but design patterns help you find solutions that do not necessarily involve inheritance or polymorphism (cf. Shalloway and Trott, 2002).Design patterns come by fancy names such as the Adapter pattern or the Decorations pattern and explaining what they are and how to use them is best done via a few examples.
{"title":"Design patterns and Fortran 90/95","authors":"A. Markus","doi":"10.1145/1124708.1124711","DOIUrl":"https://doi.org/10.1145/1124708.1124711","url":null,"abstract":"In the literature on object oriented programming (OO), design patterns are a very popular subject. Apart from any hype that may be connected to the concept, they are supposed to help you look at a programming problem and come up with a robust design for its solution. The reason design patterns work is not that they are something new, but instead that they are time-honoured, well-developed solutions.I will not repeat the story about architectural design patterns and Christopher Alexander who recognised their potential. Instead I will try to explain how these (software) design patterns can be used in setting up Fortran 90/95 programs, despite the \"fact\" that Fortran 90/95 lacks certain OO features, such as inheritance and polymorphism. It may not be stressed in all OO literature, but design patterns help you find solutions that do not necessarily involve inheritance or polymorphism (cf. Shalloway and Trott, 2002).Design patterns come by fancy names such as the Adapter pattern or the Decorations pattern and explaining what they are and how to use them is best done via a few examples.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2006-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121668515","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
The Fortran language has been standardised a number of times• Fortran 66• Fortran 77• Fortran 90• Fortran 95• Fortran 2003and Fortran 2008 is work in progress.
{"title":"Parallel programming","authors":"I. Chivers, J. Sleightholme","doi":"10.1145/1105755.1105759","DOIUrl":"https://doi.org/10.1145/1105755.1105759","url":null,"abstract":"The Fortran language has been standardised a number of times• Fortran 66• Fortran 77• Fortran 90• Fortran 95• Fortran 2003and Fortran 2008 is work in progress.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120948310","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Windows Absoft Editor (ae) • http://www.absoft.com CRiSP • www.crisp.com • http://www.crisp.demon.co.uk compaq visual fortran 6.x • www.hp.com Comes with its own visual studio version. editeur • www.studioware.com emacs/xemacs stand alone • http://www.gnu.org/software/emacs/emacs.html emacs/xemacs cygwin components • http://www.cygwin.com/ gvim/vim stand alone • http://www.vim.org/ gvim/vim cygwin component • http://www.cygwin.com/ jed. wjed (Windows) • http://www.jedsoft.org/jed/ lahey ed • http://www.lahey.com/ microsoft visual studio 6 Compilers that work with this release. • dec/compaq/hp visual fortran 6.x Microsoft Visual Statant when one of the following compilers are also installed: • Intel Visual Fortran (www.intel.com) • Lahey/Fujitsu Fortran (www.lahey.com) • Salford FTN95 (www.salfordsoftware.co.uk)
{"title":"Fortran aware editors and development environments","authors":"I. Chivers, J. Sleightholme","doi":"10.1145/1105755.1105758","DOIUrl":"https://doi.org/10.1145/1105755.1105758","url":null,"abstract":"Windows Absoft Editor (ae) • http://www.absoft.com CRiSP • www.crisp.com • http://www.crisp.demon.co.uk compaq visual fortran 6.x • www.hp.com Comes with its own visual studio version. editeur • www.studioware.com emacs/xemacs stand alone • http://www.gnu.org/software/emacs/emacs.html emacs/xemacs cygwin components • http://www.cygwin.com/ gvim/vim stand alone • http://www.vim.org/ gvim/vim cygwin component • http://www.cygwin.com/ jed. wjed (Windows) • http://www.jedsoft.org/jed/ lahey ed • http://www.lahey.com/ microsoft visual studio 6 Compilers that work with this release. • dec/compaq/hp visual fortran 6.x Microsoft Visual Statant when one of the following compilers are also installed: • Intel Visual Fortran (www.intel.com) • Lahey/Fujitsu Fortran (www.lahey.com) • Salford FTN95 (www.salfordsoftware.co.uk)","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130678846","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Including the new Fortran 2003, there are three revisions of the Fortran standard beyond the venerable, quarter-century-old Fortran 77. While the newer revisions, Fortran 90, 95 and 2003, have standardized more features, they are (very nearly) upwards compatible with Fortran 77. In fact, many of the new features are standardisation of extensions implemented by Fortran 77 compilers, albeit each with its own spelling. Still, the introduction of modern Free Format in place of the card-image-based Fixed Format, and the overall amount of new features (many first appearing in the Fortran 90 standard), means that some applications programmers consider modern (90, 95, 2003) Fortran to be a different language than archaic (66, 77) Fortran.
{"title":"Archaic to modern 1: basic tools & issues","authors":"D. Nagle","doi":"10.1145/1105755.1105756","DOIUrl":"https://doi.org/10.1145/1105755.1105756","url":null,"abstract":"Including the new Fortran 2003, there are three revisions of the Fortran standard beyond the venerable, quarter-century-old Fortran 77. While the newer revisions, Fortran 90, 95 and 2003, have standardized more features, they are (very nearly) upwards compatible with Fortran 77. In fact, many of the new features are standardisation of extensions implemented by Fortran 77 compilers, albeit each with its own spelling. Still, the introduction of modern Free Format in place of the card-image-based Fixed Format, and the overall amount of new features (many first appearing in the Fortran 90 standard), means that some applications programmers consider modern (90, 95, 2003) Fortran to be a different language than archaic (66, 77) Fortran.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128968853","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Traditionally, and indeed until the advent of Fortran2003, Standard Fortran I/O has been entirely record-based. This is fine if you are reading or writing a file of records such as a text file, where each line is a record, since it means that you don't need to be concerned about the record terminators (which, depending on the platform, may be line-feeds, or carriage-returns, or both). It can, however, be a serious handicap when you want to use Fortran to read a file generated by some instrument, or produced by a package such as a spreadsheet or database system. Often these files do not have records that Fortran can recognise, or they have a more complex structure than a simple linear sequence of records, but Standard Fortran has not previously provided any means of accessing them simply as a stream of bytes or characters. Another problem is that sometimes one wants to access the records in some random order, rather than in a strict sequence. One can do this in Fortran using direct-access files, but these are restricted to files where all records have the same length. Stream I/O provides solutions to all these problems.
{"title":"Stream input/output in Fortran","authors":"C. Page","doi":"10.1145/1105755.1105757","DOIUrl":"https://doi.org/10.1145/1105755.1105757","url":null,"abstract":"Traditionally, and indeed until the advent of Fortran2003, Standard Fortran I/O has been entirely record-based. This is fine if you are reading or writing a file of records such as a text file, where each line is a record, since it means that you don't need to be concerned about the record terminators (which, depending on the platform, may be line-feeds, or carriage-returns, or both). It can, however, be a serious handicap when you want to use Fortran to read a file generated by some instrument, or produced by a package such as a spreadsheet or database system. Often these files do not have records that Fortran can recognise, or they have a more complex structure than a simple linear sequence of records, but Standard Fortran has not previously provided any means of accessing them simply as a stream of bytes or characters. Another problem is that sometimes one wants to access the records in some random order, rather than in a strict sequence. One can do this in Fortran using direct-access files, but these are restricted to files where all records have the same length. Stream I/O provides solutions to all these problems.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"43 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127094086","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Generic programming is a paradigm in which a single piece of code can be used with multiple data types. For example, code for a linked list could be used to create lists of integers, reals, or even strings. The same source code is used to define each list; the compiler produces different instances of the code, substituting concrete data types (e.g., integer, real) as appropriate to generate a list capable of storing the required data. Without generic programming, a programmer would typically need to make virtually identical copies of the linked list source code for each data type used.
{"title":"Generic programming in Fortran with Forpedo","authors":"Drew McCormack","doi":"10.1145/1080399.1080401","DOIUrl":"https://doi.org/10.1145/1080399.1080401","url":null,"abstract":"Generic programming is a paradigm in which a single piece of code can be used with multiple data types. For example, code for a linked list could be used to create lists of integers, reals, or even strings. The same source code is used to define each list; the compiler produces different instances of the code, substituting concrete data types (e.g., integer, real) as appropriate to generate a list capable of storing the required data. Without generic programming, a programmer would typically need to make virtually identical copies of the linked list source code for each data type used.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"66 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132310016","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This paper describes what software tools are and makes particular reference to the NAGWare Fortran Tools. I describe how compiler technology may be used to design tools to reformat code to help programmers understand code that they may not necessarily have written, but have to maintain or develop further.
{"title":"Software tools for Fortran","authors":"I. Hounam","doi":"10.1145/1058176.1058178","DOIUrl":"https://doi.org/10.1145/1058176.1058178","url":null,"abstract":"This paper describes what software tools are and makes particular reference to the NAGWare Fortran Tools. I describe how compiler technology may be used to design tools to reformat code to help programmers understand code that they may not necessarily have written, but have to maintain or develop further.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128852262","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
In the December issue of the Fortran Forum (Markus, 2004) I described the format of XML files and ways to handle them in Fortran. The present paper is meant to elaborate on a few aspects of XML that were not considered then but which are at least as important to appreciate what XML is all about. Most notably: the advantages of using a strict format and internationalisation. I wish to thank Rolf Ade for his valuable comments that led to this second paper.
{"title":"Have a second look at XML files","authors":"A. Markus","doi":"10.1145/1058176.1058177","DOIUrl":"https://doi.org/10.1145/1058176.1058177","url":null,"abstract":"In the December issue of the Fortran Forum (Markus, 2004) I described the format of XML files and ways to handle them in Fortran. The present paper is meant to elaborate on a few aspects of XML that were not considered then but which are at least as important to appreciate what XML is all about. Most notably: the advantages of using a strict format and internationalisation. I wish to thank Rolf Ade for his valuable comments that led to this second paper.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115201780","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Software engineering seems to be ridden with hypes: someone launches a "new" idea, a lot of noise is made over that in the various journals which leads the casual reader or listener to believe that all previous ideas are very wrong or at least completely ancient and therefore useless. The new idea inspires the creation or resurrection of a bunch of TLAs and FLAs and other buzzwords. But after a while the hype is gone and the new idea is either forgotten or becomes an old and more or less well-understood tool - one of many and not one instead of many.
{"title":"Have a look at XML files","authors":"A. Markus","doi":"10.1145/1044586.1044587","DOIUrl":"https://doi.org/10.1145/1044586.1044587","url":null,"abstract":"Software engineering seems to be ridden with hypes: someone launches a \"new\" idea, a lot of noise is made over that in the various journals which leads the casual reader or listener to believe that all previous ideas are very wrong or at least completely ancient and therefore useless. The new idea inspires the creation or resurrection of a bunch of TLAs and FLAs and other buzzwords. But after a while the hype is gone and the new idea is either forgotten or becomes an old and more or less well-understood tool - one of many and not one instead of many.","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130024327","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Review of \"Fortran 95/2003 Explained, by Michael Metcalf, John Reid, and Malcolm Cohen\" OUP, Oxford and New York, 2004.","authors":"V. Snyder","doi":"10.1145/1024334.1024336","DOIUrl":"https://doi.org/10.1145/1024334.1024336","url":null,"abstract":"","PeriodicalId":379614,"journal":{"name":"ACM SIGPLAN Fortran Forum","volume":"147 2","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114109027","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}