Fats : Programming : Programming Languages
Here you can find information about:
- Fortran , its standards and history , some resources, tutorials , and books ,
- C , its standards and history , some resources, tutorials , and books , and
- C++ , its standards and history , some resources, tutorials , and books .
They correspond to the three main languages used for scientific programming and numerical calculations.
Please see our Compilers & Libraries web page for information about the compilers and software libraries available on fats. You can visit our Shell Scripting web page for information about scripting languages, and our Parallel Programming web page for information about writting parallel programs.
Fortran
Fortran standards and history
Fortran was the very first high level programming language. It was developed in the late 1950's, and evolved through a long chain of standards. Here are a few links to the current standard and to some historical material.
-
The International Standards Organization (ISO) Fortran working group JTC1/SC22/WG5 establishes the worldwide Fortran standards. The J3 committee is the US counterpart of the ISO WG5 group. You can also find materials to help programmers, on the J3 site link called
links
(sic). Try in particular an item calledmore Fortran information
. -
Wikipedia has a good short article on Fortran , with excellent links to historical and current material about Fortran.
-
Worth reading also is the article on Fortran's inventor John Backus , a Columbia University alumni, and his almost apologetic efforts to convince programmers to move on to other programming languages,
liberated from the von Neumann style
(i.e. Fortran). -
John Backus also wrote The history of Fortran I, II, and III , his historical view of Fortran's development.
-
For an outlook of what the future will be, see The future of Fortran , a 2003 article by John Reid.
Fortran resources and tutorials
-
Fortran is the big play-ground of numerical analysis and scientific computing. Steve Sullivan, at Mathcom Inc., keeps an up to date and very useful Scientific Computing FAQ . If you are a fan of
Numerical Recipes
numerical analysis software, i.e. not only of their methods, you may want to check this out. -
Clive G. Page, at the University of Leicester, UK, keeps an excellent list of Fortran resources . You may want to check Dr. Page's
Fortran90 for Fortran77 programmers
class notes (also available in pdf format), and hisFortran90 for Fun and Profit
. If you are reluctant to move on to Fortran 90, but want to write clean Fortran 77 programs, a highly recommended text is Dr. Page'sProfessional Programmer's Guide to Fortran77
, available also in pdf and other file formats. -
Michel Olagnon, at IFREMER, Brest, France, keeps a very good set of Fortran 90 texts and programs , and an excellent list of Fortran 90 resources .
-
The University of Liverpool's Interactive Fortran 90 Programming Course .
-
Ian Chivers and Jane Sleightholme of King's College, University of London, UK, prepared these nice Fortran 90, 95, 2003, 77 Information Resources .
-
Bo Einarsson and Yurij Shokin's Fortran 90 for the Fortran 77 Programmer , at Linköping University, Sweeden.
-
Michael Metcalf's wrote a terse series of Fortran 90 articles , availabe from CERN.
-
Also from Michael Metcalf is this Fortran 90/95 information page.
-
A good selected list of Fortran tutorials is available from
fortran.com
. -
Wise advice and useful hints are available on these
User notes on Fortran programming
, which also has recommendations on programming style and debugging, a comparison with C programming, etc. -
A list of Fortran FAQ is available on this site.
Fortran books
-
Michael Metcalf, John Reid, and Malcolm Cohen, Fortran 95/2003 Explained , Oxford University Press, Oxford, UK, 2004. - Covers all aspects of the newest (95 and 2003) Fortran standards, which were designed by Metcalf and Reid, among others. A bit terse, but very precise.
-
Jeanne C. Adams et al., Fortran 95 Handbook , The MIT Press, Cambridge, MA, 1997. - A complete reference book, with examples.
-
James F. Kerrigan, Migrating to Fortran 90 , O'Reilly & Associates, Inc., Sebastopol, CA, 1994. - Has many case studies comparing the Fortran 77 code with a corresponding solution written in Fortran 90. Note that differences between Fortran 77 and Fortran 90 are major, whereas differences between Fortran 90 and Fortran 95 and 2003 are small. Hence, books on Fortran 90 are still very useful.
-
T. M. R. Ellis, Ivor R. Philips, and Thomas M. Lahey, Fortran 90 Programming , Addison-Wesley, Reading, MA, 1994. - A good textbook, with many examples. Lahey designed and sells his own Fortran 90 compiler.
-
William H. Press et al., Numerical Recipes in Fortran 77, 2nd. edition, The Art of Scientific Computing , Cambridge University Press, Cambridge, UK, 1992 - A classic reference book on numerical mathematics and algorithms. The computer programs on this edition are written in Fortran 77. This book is self contained, but can be also considered as Volume 1 of a two volume set, when complemented by
Numerical Recipes in Fortran 90
(see below).This book is also accessible online at the Los Alamos National Laboratory web site. However, please read the note
Permitted Use of Numerical Recipes Books On-Line
. -
William H. Press et al., Numerical Recipes in Fortran 90, The Art of Parallel Scientific Computing , Cambridge University Press, Cambridge, UK, 1996 - A classic reference book on numerical mathematics and algorithms. This book is actually a continuation (Volume 2) of
Numerical Recipes in Fortran 77
. The same algorithms are re-written in Fortran 90, and the opportunities to explore parallelization are discussed and implemented, mostly through the use of thearray section
feature of Fortran 90 (a.k.a.vectorization
). The book doesn't repeat the mathematical and numerical discussions of the Fortran 77 volume. Although parallelization is emphasized, it is not implemented explicitly, through the use of MPI, OpenMP, or other technique. The authors assume the Fortran 90 compiler will take care of parallelization. This may be true on fancy machines, but it is not true on Beowulf cluster like fats. However, the algorithms are ready for explicit parallelization, if one inserts the appropriate calls to MPI subroutines, or the suitable OpenMP directives, in the correct places.This book is also accessible online at the Los Alamos National Laboratory web site. However, please read the note
Permitted Use of Numerical Recipes Books On-Line
.
Back to top.
C
C standards and history
-
The technicalities of the C programming language are standardized by the International Standards Organization (ISO) work group JTC1/SC22/WG14 , responsible for the 1999 and 2005 C programming language standards.
-
Wikipedia, as usual, has a very good and complete article on the C programming language .
-
The home pages of Brian Kernighan and Dennis Ritchie , the designers of C.
C resources and tutorials
-
An entry level C programming tutorial from Drexel University.
-
At a slightly higher level, this C language tutorial is available from C. D. Sherrill, at the Georgia Institute of Technology.
-
A light, yet complete, Programming in C tutorial by Peter Burden, Universith of Wolverhampton, UK.
-
Another intermediate level C Programming tutorial by Steve Holmes, University of Strathclyde, UK.
-
The ITCS 101 is an entry level tutorial, but covers all aspects of the C language.
-
The C Book by Mike Banahan, Declan Brady and Mark Doran, is a very good intermediate level course in C.
-
Peter Seebach's articles
Everything you ever wanted to know about C types
, in three parts. -
Steve Summit has a set C Programming class notes from courses taught at the University of Washington. They are closely related to B. Kerninghan and D. Ritchie's classic book:
The C Programming Language
. -
This advanced tutorial, Programming in C: UNIX System Calls and Subroutines using C , by A.D. Marshall, University of Cardiff, UK, covers the C programming language, and applications to UNIX system calls.
-
Brian Keringhan, one of the designers of C, wrote this Programming in C: A Tutorial , with materials that later would be part of his famous book with Dennis Ritchie:
The C Programming Language
. Note, however, that this is not the ANSI C used by most compilers today. -
A list of C programming language FAQ .
-
And a list of C programming language infrequently asked questions .
C books
-
Brian W. Kernighan, and Dennis M. Ritchie, The C Programming Language, 2nd Edition , Prentice Hall PTR, Englewood Cliffs, NJ, 1988. - The celebrated classic reference on C, by the two designers of the language. It is for C what Shakespeare is for English. So, lend them your ears. The style is bright, terse, almost hermetic, but deep, and precise.
-
Stephen Kochan, Programming in C, 3rd. Edition , SAMS, Indianapolis, IN, 2004. - An excellent book to learn how to program in C. Very readable by beginners, but not written for dummies. Kochan wrote another book,
Unix Shell Programing
with the same clever andto the point
style. -
Harvey M. Deitel, and Paul J. Deitel, C How to Program, 4th. Edition , Prentice Hall, Upper Saddle River, NY, 2004. - A good book for beginners. A bit prolix, but very thourough.
-
William H. Press et al., Numerical Recipes in C, 2nd. edition, The Art of Scientific Computing , Cambridge University Press, Cambridge, UK, 1992 - A classic reference book on numerical mathematics and algorithms. The computer programs on this edition are written in C.
This book is also accessible online at the Los Alamos National Laboratory web site. However, please read the note
Permitted Use of Numerical Recipes Books On-Line
. -
Robert Sedgewick, Algorithms in C , Addison-Wesley, Reading, MA, 1990. - This excellent book discusses the main data structures and algorithms used in computers, from the standpoint of efficiency. It covers lists, trees, heaps, graphs, searching, sorting, and several numerical algorithms. The corresponding programs are presented in C.
Back to top.
C++
C++ standards and history
-
The International Standards Organization (ISO) work group JTC1/SC22/WG21 , is responsible for the C++ standard.
-
Wikipedia has a good and complete article on the C++ programming language .
-
The home page of Bjarne Stroustrup , the designer of C++.
C++ resources and tutorials
-
The C++ reference page . A summary of all syntatic forms of the language..
-
The C++ reference page , and the C++ language and library page . Summaries of all syntatic forms of the language..
-
Downloadable C++ class libraries .
-
Allen B. Downey's popular free online book How To Think Like A Computer Scientist: Learning with C++ , has many versions, for several computer languages: Java, Python, etc. This is the C++ version, and is also available in a new format .
-
A set of notes on C++ by Frank B. Brokken, University of Groningen, The Netherlands, meant for C, Perl, and Python programmers who want to learn C++.
-
A list of C++ FAQ , organized by Marshall Cline.
C++ books
-
Bjarne Stroustrup, The C++ Programming Language, 3rd. Edition , Addison-Wesley, Reading, MA, 1997 - The main reference to the C++ programming language, written by the C++ designer.
-
Bartosz Milewski, C++ In action: Industrial-Strength Programming Techniques , Addison-Wesley, Reading, MA, 2001 - A popular book in C++, also avaliable free online .
-
Bruce Eckel, and Chuck Allison, Thinking in C++: Introduction to Standard C++, Volume One, 2nd Edition , Prentice Hall PTR, Upper Saddle River, NY, 2003 - An introductory book in C++ (Vol. 1), also avaliable free online .
-
Bruce Eckel, Thinking in C++: Practical Programming, Volume Two , Prentice Hall PTR, Upper Saddle River, NY, 2000 - An introductory book in C++ (Vol. 2), also avaliable free online .
-
Steve Heller, C++: A Dialog: Programming with the C++ Standard Library , Prentice Hall PTR, Upper Saddle River, NY, 2002 - Yet another introductory book in C++ also avaliable free online .
-
William H. Press et al., Numerical Recipes in C++, 2nd. edition, The Art of Scientific Computing , Cambridge University Press, Cambridge, UK, 2002 - A classic reference book on numerical mathematics and algorithms. The computer programs on this edition are written in C++.
Back to top.
Last updated on by Gus Correa.