Fortran入门:Windows平台的Fortran编译器安装和使用
因为课程需要,今年开始学习FORTRAN语言。之前学校的计算概论用的是C,后来又学了C++和Python作为面向对象的工具,数值计算方面主要通过学校的许可证用的MATLAB。因为专业侧重数值模拟和反演问题,对于FORTRAN这一门上古的数值计算语言早有耳闻,在学习Scientific Computing的时候也经常讲到一些原本是基于FORTRAN优化的子程序和底层设计模块。上网查了一下,FORTRAN的社区非常少,而且可能是因为使用者都已经是富有经验的程序设计者,自学入门的新手不多,很多地方还是需要自己摸索,就决定索性在博客上记录一下摸索的过程。
FORTRAN,原意为Formula Translation(公式翻译器),是出现很早的一门高级语言。FORTRAN的主要面向科学计算、数值计算,虽然在FORTRAN-2003版本中逐渐引入了更加丰富的面向对象(Object Oriented)设计思维,但是其主要的功能仍然是数值计算领域;某种意义上,使用FORTRAN的人一般不需要过于复杂的面向对象策略,需要使用复杂完整的面向对象策略的人也并不会选择FORTRAN。最近还发现非常辛酸的一点,CNBlogs上的代码插入不支持Fortran的语法高亮,也没有找到支持的插件。
一. FORTRAN 编译器的安装
查了一下,目前相对常见的Fortran编译器版本是Fortran77或者Fortran90/95,进入新世纪的修正版本Fortran2003反而用的比较少。流行的免费FORTRAN编译器实现方案包括GCC的GFortran,Intel的Intel Fortran Compiler等。我这里使用的是G95,是GFortran对应Fortran95的一款编译器。Windows系统上如果已经安装了MinGW体系(如果你使用过gcc的C语言或者C++编译器,一般都已经装了),那么一个.exe文件就可以帮忙搞定安装G95的全部操作!非常方便!
G95.org提供下载g95_MinGW.exe的ftp:http://ftp.g95.org/g95-MinGW.exe;如果没有成功,加载不出来(对我来说就是这样),那么fortran company网站的g95下载也可以:https://www.fortran.com/the-fortran-company-homepage/whats-new/g95-windows-download/。下载下来解压,应该就是一个.exe文件,直接运行就可以了,程序会自动询问你安装位置(可以自己选)、是否添加到路径(PATH,选是就好)等等问题,不到两分钟整个安装就完成了!如果要验证安装是否成功,在命令行cmd中直接输入
然后cmd会返回一个G95的版本信息,如下所示。首先看到这个版本其实已经8年半没有更新过了;此外,G95编译器是开源的,所以“You may redistribute copies of G95 under the terms of the GNU General Public License”。
- C:\Users\admin>g95 --version G95
- (GCC 4.1.2 (g95 0.93!) Jun 16 2010)
- Copyright (C) 2002-2008 Free Software Foundation, Inc.
- G95 comes with NO WARRANTY, to the extent permitted by law.
- You may redistribute copies of G95
- under the terms of the GNU General Public License.
- For more information about these matters, see the file named COPYING
二. FORTRAN文件的编写的编译
本来,之前用C语言的时候,Code::Blocks是一款相当不错的IDE,而且支持C,C++和Fortran。不过后来转到C++以后,因为更快的速度,选择了Dev-C++作为写小文件的IDE,而Visual Studio作为写比较大文件的IDE。Fortran的IDE不算很多,就没有再安装,目前我用Notepad++文本编辑器写Fortran文档,然后在命令行里面编译运行。Notepad++真是神勇,作为一款文本编辑器各种高亮都有。在Notepadd++中编辑如下代码:
- PROGRAM hello_world
- PRINT *, 'Hello World! Welcome to FORTRAN!'
- END
并且将其储存为 hello_world.f90。然后,我们在命令行中用刚刚下载的g95 compiler编译这个程序。首先,进入文件所在的文件夹,键入盘符加冒号(如 “D:”)进入某个磁盘,键入”dir”查看当前目录下的文件及文件夹,键入”cd+空格+路径”(如”cd Documents”)进入某一文件夹。使用g95,将hello_world.f90编译为可执行的对象文件hello_world.o:
再使用”dir”命令,就可以看到当前目录下出现了”hello_world.o”,直接键入文件名运行:
- D:\Personal Documents\Programming\Fortran>hello_world.o
- Hello World! Welcome to FORTRAN!
新建一个计算两浮点数算术平均和几何平均的fortran文件,存为add_numbers.f90:
- PROGRAM add_numbers
- REAL :: a, b, av1, av2
- PRINT *, 'Input 2 numbers:'
- READ (*,*) a, b
- av1 = (a + b)/2; av2 = (a*b)**0.5
- PRINT *, 'Arithmetic mean: ', av1
- PRINT *, 'Geometric mean: ', av2
- END
同样编译运行:
- D:\Personal Documents\Programming\Fortran>add_numbers.o
- Input 2 numbers:
- 2.0 8.0
- Arithmetic mean: 5.
- Geometric mean: 4.
Fortran入门:Windows平台的Fortran编译器安装和使用的更多相关文章
- TQ2440 学习笔记—— 1、Windows平台下开发工具安装与环境建立
板子:广州天嵌公司的TQ2440,处理器为三星的S3C2440 1.开发工具的安装与环境建立 系统:win7 64位 SecureCRT软件:该软件能够取代Windows中的超级终端,是个非常好的串 ...
- Windows平台JDK8下载和安装说明
本页介绍如何安装和卸载Windows的JDK 8. 该页面包含以下主题: “系统要求” “安装说明符号” “安装说明” “卸载JDK” “已安装的目录树” “安装疑难解答” 有关安装JDK 8和JRE ...
- windows平台Perl模块离线安装
工具: Perl windows工具:ActivePerl-5.24.0.2400-MSWin32-x86-64int-300560.exe Dmake工具:https://cpan.metacpan ...
- Windows平台Hadoop编译、安装、配置与运行(转)
http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windo ...
- Windows平台的JDK安装(转)
下载Java的开发包JDK JDK有好几个类型版本,我们只需要选择Java SE类型的版本就行了.进入网页:http://www.oracle.com/technetwork/java/javase/ ...
- Windows平台JDK安装
原文链接:http://android.eoe.cn/topic/android_sdk 下载Java的开发包JDK JDK有好几个类型版本,我们只需要选择Java SE类型的版本就行了.进入网页:h ...
- Node.js入门:Node.js&NPM的安装与配置
Node.js安装与配置 Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0. ...
- Django 1.6在Windows平台下的配置
Django 1.6 在Windows平台下的配置 前言 最近两天研究了下Django1.6在Windows平台中的配置安装,服务器采用Apache.期间遇到过许多新手所遇到的各种问题,也算是一种宝贵 ...
- Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE
Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE Windows平台下安装Arduino IDE Windows操作系统下可以使用安装向导和压缩包形式安装.下面详细讲解这 ...
随机推荐
- Elasticsearch 学习之提升性能小贴士
小贴士1:规划索引.分片 以及集群增长情况 ES使得创建大量索引和超大量分片非常地容易,但更重要的是理解每个索引和分片都是一笔开销.如果拥有太多的索引或分片,单单是管理负荷就会影响到ES集群的性能,潜 ...
- javascript prototype学习
function foo(a, b, c) { return a*b*c; } alert(foo.length); alert(typeof foo.constructor); alert(type ...
- Unity3D动作资源(AnimatinClip)优化
能做到去掉Scale曲线,降低浮点精度 using System; using UnityEngine; using System.Collections; using System.Collecti ...
- 应用程序创建自己的奔溃转储(crash dump)文件
1.注册自定义的UnhandledExceptionFilter,C/C++ Runtime Library下需要注意自定义handler被移除(hook kernel32.dll的SetUnhand ...
- SSH 服务器不用密码
1 A: user assh-keygen -t rsa 2 Created a directory on B, if ~/.ssh exists, which is fine.a@A:~> s ...
- yii---where该如何使用
简单示例yii 的where使用方法: $where = ['post_id'=>$postId]; //$list = ForumThreadPost::find()->where($w ...
- mvc 实现超时弹窗后跳转
为了实现保持登录状态,可以用cookie来解决这一问题 假设过期时间为30分钟,校验发生在服务器,借助过滤器,可以这样写 public class PowerFilter : AuthorizeAtt ...
- 【巷子】---webpack配置非CMD规范的模块
一.前言 webpack在配置多页面开发的时候 ,发现用 import 导入 Zepto 时,会报 Uncaught TypeError: Cannot read property 'createEl ...
- split和strip的使用
我觉得都可以进行分隔,但最大的不同就是一个返回list,一个返回字符串 s1 = 'deng ye xun' s1.split() Out[8]: ['deng', 'ye', 'xun'] s1.s ...
- H-数学考试 想法题+最新头文件 2018年长沙理工大学第十三届程序设计竞赛
https://www.nowcoder.com/acm/contest/96/H 坑点:INF开太小了... #define _CRT_SECURE_NO_WARNINGS #include< ...