F language | |
---|---|
Paradigm | Array, procedural, modular |
Developer | The Fortran Company |
Typing discipline | static, manifest |
Influenced by | |
Fortran 95 |
F is a modular, compiled, numeric programming language, designed for scientific programming and scientific computation. [1] F was developed as a modern Fortran, thus making it a subset of Fortran 95. [2] It combines both numerical and data abstraction features from these languages. F is also backwards compatible with Fortran 77, allowing calls to Fortran 77 programs. F was implemented on top of compilers from NAG, Fujitsu, Salford Software and Absoft. It was later included in the g95 compiler.
F is designed to be a minimal subset of Fortran, with only about one hundred intrinsic procedures. [3] Language keywords and intrinsic function names are reserved keywords in F and no other names may take this exact form. F contains the same character set used in Fortran 90/95 with a limit of 132 characters. Reserved words are always written in lowercase. Any uppercase letter may appear in a character constant. Variable names do not have restriction and can include upper and lowercase characters.
F supports many of the standard operators used in Fortran. The operators supported by F are:
+
, -
, *
, /
, **
<
, <=
, ==
, /=
, >
, >=
.not.
, .and.
, .or.
, .eqv.
, .neqv.
//
The assignment operator is denoted by the equal sign =
. In addition, pointer assignment is denoted by =>
. Comments are denoted by the !
symbol:
variable=expression! assignment pointer=>target! pointer assignment
Similar to Fortran, the type specification is made up of a type, a list of attributes for the declared variables, and the variable list. [2] F provides the same types as Fortran, except that double precision floating point variables must be declared as real with a kind with a kind parameter:
! type [,attribute list] :: entity declaration listreal::x,y! declaring variables of type real x,y without an attribute listinteger(kind=long),dimension(100)::x! declaring variable of type big integer array with the identifier xcharacter(len=100)::student_name! declaring a character type variable with len 100
F does not have intrinsic support for object-oriented programming, but it does allow for records: [2]
type,public::Citycharacter(len=100)::namecharacter(len=50)::stateend type City
Variable declarations are followed by an attribute list. The attributes allowed are parameter
, public
, private
, allocatable
, dimension
, intent
, optional
, pointer
, save
and target
. The attribute list is followed by ::
, which is part of the syntax. F also allows for optional initialization in the list of objects. All items in a list will have the same attributes in a given type declaration statement. In addition, declarations are attribute oriented instead of entity oriented.
F supports 3 statements for control flow: if
, a basic conditional, case
, a switch statement, and do
, a conditional while loop. The return
, stop
, cycle
, and exit
statements from Fortran may be used to break control flow.
real::xdo i=100x=x+iprint*,icycleend domax:do if(x>y)then exit maxend ifx=yend do maxstopif(x<y)thenx=x+yelse if(x>y)thenx=y-xend ifselect case(maximum):case(0)x=0case(1)x=1case(5)x=5case defaultx=10end select
F places a heavy emphasis on modular programming.
program main! Insert code hereend program main
Placing procedures outside of a module is prohibited. F supports most of the functions and subroutines found in the Fortran 95 standard library. All functions in F are external by default and require a result clause that returns the value of a function. [2] F supports recursion.
All of the intrinsic procedures found in Fortran 95 may be used in F, with the exceptions of achar
, iachar
, lge
, lgt
, lle
, llt
, transfer
, dble
, dim
, dprod
, and mod
.