试用笔记:
Silverfrost FTN95 ,官方的最新版本是 v9.00。
这是一个免费的 Fortran 编译器,支持 Win32 平台和 .NET 平台,Fortran95 规则和部分 200X 规则。v5.1 还可以集成到 Visual Studio 2005 中。软件套装里还有一个 C++ 编译器:SCC。
我拿到的是个人版,可能功能上有限制。从个人版来看,整个软件非常小。(安装以后才 30 多 MB,基本没有在系统盘放置什么东西)。
当然了,“小”并不是一件好事儿。至少个人版的帮助信息比较少,Demo 也不多。这让人很不习惯。
这个编译器对语法的检查比较严格,很多习惯上的问题都会被它认为是错误和警告(虽然可以通过设置参数来放弃一部分这些警告)。所以比较适合培养好的编程习惯。
随便写了一段垃圾代码来测试:
Program www_fcode_cn Implicit None Integer, Parameter :: N = 70 integer :: i , j , k , l Real :: V , time1 , time2 V = 0.0 time1 = 0.0 time2 = 0.0 Call CPU_TIME( time1 ) Do i = 1 , N Do j = 1, N Do k = 1 , N Do l = 1 , N 100 V = V + sin( i * 1.0 ) * cos( j * 1.0 ) * cos( k * 1.0 ) * sin( l * 1.0 ) End Do End Do End Do End Do Call CPU_TIME( time2 ) Write(*,*) V , time2 - time1 End Program www_fcode_cn
Release 测试结果:
0.143942 6.10938
Press RETURN to close window . . .
(.NET 结果差不多)
发现区别并不是很大,应该代码的优化程度很高才对啊。仔细看了看帮助里面的命令行说明和工程选项,原来优化选项(/OPTIMISE)并没有开启。(就算是 Release 方式也没有,需要手动设定,这一点有些不方便)
设定优化选项以后,结果如下:
0.143948 1.67188
Press RETURN to close window . . .
计算时间从 6 秒多减少到 1.67 秒,已经明显加快了。但是相对于 IVF 的 Release 来说,还显得不足。
Intel(R) Fortran Compiler 10.0.026 [IA-32] Debug 结果:
0.1438519 4.687500
请按任意键继续. . .
Release 结果:
0.1439651 0.8750000
请按任意键继续. . .
如果把程序中的 100 行换成:
V = V + sin( ( i + l ) * 1.0 ) * cos( ( j + l ) * 1.0 ) * cos( ( k + l ) * 1.0 ) * sin( l * 1.0 )
则 Ftn95 的优化选项更显得不足了。
可能这个例子并不恰当。大家有更好的例子也可以试试看。
程序的调试也是非常的有意思,Win32 平台下使用软件附带的 sdbg.exe 来调试。除了可以单步执行,查看变量,寄存器和堆栈以外,还针对 Fortran 的 Open 语句,可以查看 Open Unit 的内容。
这个编译器还附带一个叫做 Plato3 的 IDE 环境。使用起来也蛮方便的,关键字亮显(可以增加自定义关键字),无限 Undo,多行缩进与注释,书签等常见功能都具备了。还可以设定其他的语言和编译器选项,这样就可以在 Plato3 里面使用别的编译器,编译其他的语言代码。比如可以通过设置 MASM 选项变成一个汇编语言的 IDE 环境。(当然,还是缺少资源编辑器这样的可视化工具。)
Plato3 中还有一个 Clip Library 功能,可以把常见的代码甚至 Subroutine 和 Module 写入粘贴板库,以后使用时可以非常方便地直接粘贴。这也是非常贴心的功能。
Plato3 对中文也是支持的,但是经常会出现半个中文字符和乱码的现象。支持中文路径。
Ftn95 提供的函数库不多,除了标准的函数,还有一些小的扩展函数,以 @ 为后缀,比如 UPCASE@ ,CURRENT_DIR@ 之类的。基本上算是实用。
Ftn95 还有一个叫 ClearWin+ 的东西,概念上类似于 VF 的 QuickWin。但是并不限制于一个设定好的窗口,用户可以比较自由地设定窗口。但是个人觉得学习起来非常繁琐,一个 WinIO@ 函数,第一个参数叫做 format string,是一个好奇怪好奇怪的字符串。通过设定这个字符串实现不同的功能。比如例子程序中有一段代码是这样的:
ans=winio@('%ca[Number Factoriser]&')
ans=winio@('%il&',1,2147483647)
ans=winio@('Number to be factorised: %rd&',number)
ans=winio@('%ta%`^bt[Fac&torise]&',factoriser)
ans=winio@('%2nl%ob%42st%cb',str)
我想是借鉴了 Fortran 规则的格式化输入输出的那些编辑符的想法吧。这样做的结果就是很生涩,不容易记忆(反正我是没有心思去记)。真正用的时候需要频繁翻阅帮助。
但是我很喜欢其中一个叫 SIMPLEPLOT 的函数。可以非常方便地绘制一个曲线图,包括坐标轴和标签。Demo 中还有更华丽的 3D 图形显示,我还没有仔细去看,从效果图上来看,有 MatFor 的风范。(当然,实际上差距还是比较远)
软件附带一个 SCION.EXE 工具,可以用来绘制/创建图标,据说也是用 ClearWin+ 制作的。但是真的想要做到,应该也不容易。
编译器最终生成的 EXE 文件都比较小巧,是因为 Win32 平台的 EXE 依赖于 salflibc.dll 。这个 DLL 描述为“Salford Fortran/C++ Library”(大约 2 MB)。貌似不能像 IVF 那样设置 Runtime Library 取消这个依赖。.NET 平台当然依赖于 Framework。
所以,综合起来说,如果你是打算开发实际应用的程序或软件,也许 Ftn95 Personal Edition 不是一个好的选择。但是它具有免费,小巧,功能实用等特点,比较适合于 Fortran语言的学习。作为免费的编译器来说,能做到这样,真的是非常不错的,值得尝试。
官方网站免费下载:
http://www.silverfrost.com
点击下载
去除个人版闪屏补丁:
点击此处去了解《去闪屏补丁》