欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
Fortran
小 |
小 (→项目) |
||
(未显示1个用户的73个中间版本) | |||
第1行: | 第1行: | ||
{{SeeWikipedia}} | {{SeeWikipedia}} | ||
− | + | Fortran | |
− | + | [[文件:Fortran-logo.png|right|Fortran]] | |
− | [[ | + | ==简介== |
+ | 在数值计算和高性能计算领域,Fortran语言仍然不可替代。 | ||
+ | |||
+ | [[Lisp]] 和 Fortran 是目前仍在使用中的两门最古老的编程语言。可能更有意思的是,它们在语言设计的哲学上代表了截然相反的两个极端。Fortran 被发明出来以替代汇编语言。Lisp 被发明出来表述算法。如此截然不同的意图产生了迥异的两门语言,Fortran 使编译器作者的生活更轻松;而 [[Lisp]] 则让程序员的生活更舒服。 | ||
+ | |||
+ | Fortran是高性能计算开发人员使用的一种主要编程语言。在众多领域中,它是首选编程语言,这些领域包括计算流体动力学(包括天气与海洋建模)、有限元分析、分子动力学以及量子化学。 | ||
+ | |||
+ | 许多流行的高性能计算软件包最初都是用Fortran语言开发出来的,这些软件随着时间的推移不断得到增强。Fortran编译器让开发人员能够以其母语(Fortran语言)进行编程,从而能够重新编译这些代码,以利用全新的性能与架构特性。 | ||
+ | |||
+ | ==历史== | ||
+ | *2017,Fortran迎来60周年庆,[https://www.reddit.com/r/programming/comments/7cvtxm/happy_60th_birthday_fortran/ Happy 60th birthday, Fortran] | ||
+ | |||
+ | ==特性== | ||
+ | * Fortran是为了满足数值计算的需求而发展出来的。 | ||
+ | * Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。 | ||
+ | * 易学,语法严谨。 | ||
+ | * 可以直接对矩阵和复数进行运算,这点[[MATLAB]]有继承。 | ||
+ | * 自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的软件包。 | ||
+ | * 很多专用的大型数值运算计算机针对Fortran做了优化。 | ||
+ | * 广泛地应用于并行计算和高性能計算领域。 | ||
+ | * Fortran 90,Fortran 95,Fortran 2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。 | ||
+ | *[https://www.cs.rpi.edu/~szymansk/OOF90/F90_Objects.html Fortran 90 的面向对象概念介绍] | ||
+ | * 其矩阵元素采用列式存储优先(Column first),MATLAB也效仿这点,目前最多使用的C语言则采用行式存储优先(Row first)。 | ||
+ | |||
+ | ==标准== | ||
+ | ISO/IEC JTC1/SC22/WG5 (Fortran)[https://wg5-fortran.org/ - WG5工作组负责开发和维护Fortran语言标准] | ||
+ | |||
+ | 主要版本:Fortran 77, 90, 95, 2003, 2008, 2018, 2023 | ||
+ | *[https://github.com/j3-fortran/fortran_proposals Fortran Proposals] | ||
+ | *[https://j3-fortran.org/doc/year/22/22-007r1.pdf Draft Fortran 2023] J3/22-007r1 | ||
+ | *[https://j3-fortran.org/doc/year/18/18-007r1.pdf Fortran 2018] | ||
+ | *Fortran 2015 Fortran 2008的增强:与C的互操作和并行处理。 | ||
+ | *[https://j3-fortran.org/doc/year/10/10-007r1.pdf Fortran 2008] 新功能:Co-array Fortran –并行处理模式,BIT数据类型 | ||
+ | *[https://wg5-fortran.org/N1601-N1650/N1601.pdf Fortran 2003] 标准引入了与C的标准接口。标准委员会的这个决定释放出明确的信息:Fortran只是作为底层计算密集型任务的编程语言,上层的UI, IO还是由C/C++来做吧。Fortran2015标准将强化与C/C++的接口功能。 | ||
+ | *[https://wg5-fortran.org/N1151-N1200/N1191.pdf Fortran 95] | ||
+ | *[https://wg5-fortran.org/N001-N1100/N692.pdf Fortran 90] | ||
+ | *[https://wg5-fortran.org/ARCHIVE/Fortran77.html Fortran 77] 1980年,Fortran 77被ISO接纳为国际标准。 | ||
+ | *[https://wg5-fortran.org/ARCHIVE/Fortran66.pdf Fortran 66] | ||
+ | |||
+ | ==Fortran包== | ||
+ | Fortran Package:[https://en.wikipedia.org/wiki/List_of_numerical_libraries#Fortran List of Fortran numerical libraries] | ||
+ | *IMSL--国际数学和统计链接库 | ||
+ | *MKL--Intel数学核心库 | ||
+ | *NAG--NAG数学库 | ||
+ | *[http://www.netlib.org/blas/ BLAS]--Basic Linear Algebra Subroutines | ||
+ | *[http://www.netlib.org/lapack/ LAPACK]--Linear Algebra PACKage | ||
+ | *[https://www.nag.com/content/nag-library-fortran NAG (Numerical Algorithms Group)] | ||
+ | |||
+ | ==HPF== | ||
+ | High Performance Fortran(有时简称:HPF)是一种编程语言,它延伸自Fortran 90编程语言,高效能Fortran是为了支援并行计算所创设的编程语言,它使用一种SIMD的运算型态,使运算工作能够进行分拆,并以扩散方式发派到运算阵列中的各颗处理器上,以此达到高效能运算。 | ||
+ | |||
+ | HPF有一种forall语法可以同时更新并行计算中的整组阵列派项,这项语法自Fortran 95之后开始具备,除此之外forall语法也提供建议(或称:提示、指点),建议在并行计算系统中处理器间应如何协同工作。 | ||
+ | |||
+ | [http://wotug.org/parallel/standards/hpf/ Internet Parallel Computing Archive] | ||
==项目== | ==项目== | ||
+ | [[文件:gtk-fortran-logo.png|right|gtk-fortran]] | ||
+ | [[文件:fortran-wrf-model.jpeg|right|Weather Research and Forecasting Model]] | ||
+ | *[https://github.com/rabbiabram/awesome-fortran Awesome Fortran] [[image:awesome.png]] | ||
*[[GNU Fortran]] | *[[GNU Fortran]] | ||
+ | *[https://www.openradioss.org/ OpenRadioss] | ||
+ | *[https://github.com/flang-compiler/flang Flang] Front-end for [[LLVM]] | ||
+ | *[[LLVM]] [https://github.com/llvm/llvm-project/tree/main/flang Flang] is a ground-up implementation of a Fortran front end written in modern C++ | ||
+ | *[https://lfortran.org/ LFortran] Modern interactive [[LLVM]]-based Fortran [[compiler]] | ||
+ | *[https://fortran-lang.org/packages/ Fortran Packages] A rich ecosystem of high-performance code | ||
+ | *[https://github.com/fortran-lang/stdlib Fortran Standard Library (stdlib)] | ||
+ | *[https://github.com/fortran-lang/fpm Fortran Package Manager (fpm)] [https://conda-forge.org/ conda-forge] | ||
+ | *[https://github.com/mapmeld/fortran-machine Fortran.io] An MVC web stack written in Fortran 90 | ||
+ | *[https://github.com/wavebitscientific/functional-fortran functional-fortran] [[Functional programming]] for modern Fortran. | ||
+ | *[https://github.com/rabbiabram/awesome-fortran#math-libs Fortran Math Libs] | ||
+ | *[https://github.com/Reference-LAPACK Lapack @ GitHub] | ||
+ | *[https://github.com/xianyi/OpenBLAS OpenBLAS] | ||
+ | *[https://github.com/jerryd/gtk-fortran/wiki GTK-Fortran] 用Fortran来实现GUI | ||
+ | *[[Code::Blocks]] | ||
+ | *[https://github.com/Fortran-FOSS-Programmers/FOODIE FOODIE] Fortran Object-Oriented Differential-equations (ODE, PDE) Integration Environment | ||
+ | *[[Code::Blocks]] IDE for [https://cbfortran.sourceforge.io/ Fortran] | ||
+ | *[https://github.com/wrf-model Weather Research and Forecasting Model] | ||
+ | |||
+ | ==领域== | ||
+ | *[[Numerical analysis|数值分析/数值计算]] | ||
+ | *[[Linear algebra|线性代数]] | ||
+ | |||
+ | ==GPU== | ||
+ | *[https://developer.nvidia.com/cuda-fortran CUDA Fortran] | ||
+ | *[http://www.nvidia.cn/object/fortran_cn.html NVIDIA(英伟达)CUDA架构GPU对Fortran语言的支持] | ||
+ | *[http://www.pgroup.com/resources/cudafortran.htm PGI CUDA Fortran Compiler] | ||
+ | |||
+ | ==培训== | ||
+ | *[https://www-uxsup.csx.cam.ac.uk/courses/moved.Fortran/ Introduction to Modern Fortran] 完整的幻灯片资料 | ||
+ | *[https://github.com/scivision/fortran2018-examples Fortran 2018 Examples] | ||
+ | *[https://www.cs.rpi.edu/~szymansk/OOF90/main.html High Performance Object-Oriented Concepts in Fortran 90] | ||
+ | *[http://www.chem.helsinki.fi/~manninen/fortran2014/ Modern Fortran Programming for Chemists and Physicists] | ||
+ | *[https://github.com/tkoenig1/coarray-tutorial/blob/main/tutorial.md Coarray tutorial] | ||
+ | *[https://fs.hlrs.de/projects/par/par_prog_ws/ Parallel Programming Workshop] | ||
+ | *[https://www.mcs.anl.gov/~itf/dbpp/ Designing and Building Parallel Programs] | ||
+ | *[https://coarrays.sourceforge.io/doc.html Parallel programming with Fortran 2008 and 2018 coarrays] | ||
+ | *[https://www.ecmwf.int/sites/default/files/elibrary/2008/15361-combining-object-oriented-techniques-co-arrays-fortran.pdf Combining Object-Oriented Techniques with Co-arrays in Fortran 2008] | ||
+ | |||
+ | ==社区== | ||
+ | *[[灰狐量子实验室]] | ||
+ | |||
+ | ==书籍== | ||
+ | *[https://cyber.dabamos.de/programming/modernfortran/ 《Programming in Modern Fortran》]A HyperText-based introduction to programming in Fortran 2003, 2008, and 2018 on Unix. | ||
+ | *《Numerical Recipes in Quantum Information Theory and Quantum Computing: An Adventure in FORTRAN 90》 M.S. Ramkarthik, Payal D. Solanki, 2021 | ||
+ | *[https://www.ce-fortran.com/ 《Introduction to Computational Economics Using Fortran》] Fehr, H. and Kindermann, F.. 2020.[https://github.com/fabiankindermann/ce-fortran/ ce-fortran @ github] | ||
+ | *[https://netlib.org/lapack/lug/ 《LAPACK Users' Guide Third Edition》] | ||
+ | *《Modern Fortran: Building Efficient Parallel Applications》 Curcic, M.. 2020. | ||
+ | *《Modern Fortran Explained Incorporating Fortran 2018》 Michael Metcalf, John Reid, and Malcolm Cohen | ||
+ | *《Fortran for Scientists and Engineers Fourth Edition》 Stephen J. Chapman | ||
+ | *《Fortran 2018 with Parallel Programming》 Subrata Ray | ||
+ | *《 Parallel Programming with Co-arrays》Numrich, R. W.. 2018. | ||
+ | *《Numerical Methods of Mathematics Implemented in Fortran》 Bose, Sujit Kumar | ||
+ | *《Scientific Software Development with Fortran》 Dr. Drew A. McCormack | ||
+ | *《FORTRAN程序设计权威指南》 白海波 | ||
+ | |||
+ | ==图集== | ||
+ | <gallery> | ||
+ | image:Programmers-Reference-Manual-for-Fortran.jpeg|第一本Fortran书籍 | ||
+ | Image:pvf1.jpg|PGI Visual Fortran 2008(高性能Fortran编译器) | ||
+ | image:gtk-fortran-developing.png|gtk-fortran | ||
+ | </gallery> | ||
==链接== | ==链接== | ||
+ | [[文件:fortranwiki.png|right]] | ||
+ | *[https://fortran-lang.org/ Fortran Programming Language] | ||
+ | *[https://www.fortran90.org/ Fortran 90] | ||
+ | *[http://fortranwiki.org Fortran Wiki] | ||
+ | *[http://www.fortran.com/ The Fortran Company] | ||
+ | *[https://www.fortranplus.co.uk/ Fortranplus] 出版了《Introduction to Programming with Fortran Fourth Edition》Springer 2018 | ||
*[http://krsna.lamost.org/popular/fortran/fortran.htm FORTRAN等计算机高级编程语言的发展历程] | *[http://krsna.lamost.org/popular/fortran/fortran.htm FORTRAN等计算机高级编程语言的发展历程] | ||
+ | *[https://zhuanlan.zhihu.com/modern-fortran 知乎专栏: 现代化的Fortran] | ||
+ | [[category:fortran]] | ||
[[category:programming language]] | [[category:programming language]] | ||
+ | [[category:numerical analysis]] | ||
+ | [[category:mathematics]] | ||
+ | [[category:physics]] | ||
+ | [[category:science]] | ||
+ | [[category:Huihoo Foundation]] |
2023年6月22日 (四) 14:50的最后版本
您可以在Wikipedia上了解到此条目的英文信息 Fortran Thanks, Wikipedia. |
Fortran
目录 |
[编辑] 简介
在数值计算和高性能计算领域,Fortran语言仍然不可替代。
Lisp 和 Fortran 是目前仍在使用中的两门最古老的编程语言。可能更有意思的是,它们在语言设计的哲学上代表了截然相反的两个极端。Fortran 被发明出来以替代汇编语言。Lisp 被发明出来表述算法。如此截然不同的意图产生了迥异的两门语言,Fortran 使编译器作者的生活更轻松;而 Lisp 则让程序员的生活更舒服。
Fortran是高性能计算开发人员使用的一种主要编程语言。在众多领域中,它是首选编程语言,这些领域包括计算流体动力学(包括天气与海洋建模)、有限元分析、分子动力学以及量子化学。
许多流行的高性能计算软件包最初都是用Fortran语言开发出来的,这些软件随着时间的推移不断得到增强。Fortran编译器让开发人员能够以其母语(Fortran语言)进行编程,从而能够重新编译这些代码,以利用全新的性能与架构特性。
[编辑] 历史
- 2017,Fortran迎来60周年庆,Happy 60th birthday, Fortran
[编辑] 特性
- Fortran是为了满足数值计算的需求而发展出来的。
- Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。
- 易学,语法严谨。
- 可以直接对矩阵和复数进行运算,这点MATLAB有继承。
- 自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的软件包。
- 很多专用的大型数值运算计算机针对Fortran做了优化。
- 广泛地应用于并行计算和高性能計算领域。
- Fortran 90,Fortran 95,Fortran 2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。
- Fortran 90 的面向对象概念介绍
- 其矩阵元素采用列式存储优先(Column first),MATLAB也效仿这点,目前最多使用的C语言则采用行式存储优先(Row first)。
[编辑] 标准
ISO/IEC JTC1/SC22/WG5 (Fortran)- WG5工作组负责开发和维护Fortran语言标准
主要版本:Fortran 77, 90, 95, 2003, 2008, 2018, 2023
- Fortran Proposals
- Draft Fortran 2023 J3/22-007r1
- Fortran 2018
- Fortran 2015 Fortran 2008的增强:与C的互操作和并行处理。
- Fortran 2008 新功能:Co-array Fortran –并行处理模式,BIT数据类型
- Fortran 2003 标准引入了与C的标准接口。标准委员会的这个决定释放出明确的信息:Fortran只是作为底层计算密集型任务的编程语言,上层的UI, IO还是由C/C++来做吧。Fortran2015标准将强化与C/C++的接口功能。
- Fortran 95
- Fortran 90
- Fortran 77 1980年,Fortran 77被ISO接纳为国际标准。
- Fortran 66
[编辑] Fortran包
Fortran Package:List of Fortran numerical libraries
- IMSL--国际数学和统计链接库
- MKL--Intel数学核心库
- NAG--NAG数学库
- BLAS--Basic Linear Algebra Subroutines
- LAPACK--Linear Algebra PACKage
- NAG (Numerical Algorithms Group)
[编辑] HPF
High Performance Fortran(有时简称:HPF)是一种编程语言,它延伸自Fortran 90编程语言,高效能Fortran是为了支援并行计算所创设的编程语言,它使用一种SIMD的运算型态,使运算工作能够进行分拆,并以扩散方式发派到运算阵列中的各颗处理器上,以此达到高效能运算。
HPF有一种forall语法可以同时更新并行计算中的整组阵列派项,这项语法自Fortran 95之后开始具备,除此之外forall语法也提供建议(或称:提示、指点),建议在并行计算系统中处理器间应如何协同工作。
Internet Parallel Computing Archive
[编辑] 项目
- Awesome Fortran
- GNU Fortran
- OpenRadioss
- Flang Front-end for LLVM
- LLVM Flang is a ground-up implementation of a Fortran front end written in modern C++
- LFortran Modern interactive LLVM-based Fortran compiler
- Fortran Packages A rich ecosystem of high-performance code
- Fortran Standard Library (stdlib)
- Fortran Package Manager (fpm) conda-forge
- Fortran.io An MVC web stack written in Fortran 90
- functional-fortran Functional programming for modern Fortran.
- Fortran Math Libs
- Lapack @ GitHub
- OpenBLAS
- GTK-Fortran 用Fortran来实现GUI
- Code::Blocks
- FOODIE Fortran Object-Oriented Differential-equations (ODE, PDE) Integration Environment
- Code::Blocks IDE for Fortran
- Weather Research and Forecasting Model
[编辑] 领域
[编辑] GPU
[编辑] 培训
- Introduction to Modern Fortran 完整的幻灯片资料
- Fortran 2018 Examples
- High Performance Object-Oriented Concepts in Fortran 90
- Modern Fortran Programming for Chemists and Physicists
- Coarray tutorial
- Parallel Programming Workshop
- Designing and Building Parallel Programs
- Parallel programming with Fortran 2008 and 2018 coarrays
- Combining Object-Oriented Techniques with Co-arrays in Fortran 2008
[编辑] 社区
[编辑] 书籍
- 《Programming in Modern Fortran》A HyperText-based introduction to programming in Fortran 2003, 2008, and 2018 on Unix.
- 《Numerical Recipes in Quantum Information Theory and Quantum Computing: An Adventure in FORTRAN 90》 M.S. Ramkarthik, Payal D. Solanki, 2021
- 《Introduction to Computational Economics Using Fortran》 Fehr, H. and Kindermann, F.. 2020.ce-fortran @ github
- 《LAPACK Users' Guide Third Edition》
- 《Modern Fortran: Building Efficient Parallel Applications》 Curcic, M.. 2020.
- 《Modern Fortran Explained Incorporating Fortran 2018》 Michael Metcalf, John Reid, and Malcolm Cohen
- 《Fortran for Scientists and Engineers Fourth Edition》 Stephen J. Chapman
- 《Fortran 2018 with Parallel Programming》 Subrata Ray
- 《 Parallel Programming with Co-arrays》Numrich, R. W.. 2018.
- 《Numerical Methods of Mathematics Implemented in Fortran》 Bose, Sujit Kumar
- 《Scientific Software Development with Fortran》 Dr. Drew A. McCormack
- 《FORTRAN程序设计权威指南》 白海波
[编辑] 图集
[编辑] 链接
- Fortran Programming Language
- Fortran 90
- Fortran Wiki
- The Fortran Company
- Fortranplus 出版了《Introduction to Programming with Fortran Fourth Edition》Springer 2018
- FORTRAN等计算机高级编程语言的发展历程
- 知乎专栏: 现代化的Fortran