Fortran for Microsoft.NET






4.69/5 (7投票s)
2001年12月27日
6分钟阅读

366584
本文向您介绍如何使用Fortran在.NET框架下编写各种应用程序。
摘要
本文将介绍如何使用Fortran在.NET框架下编写各种应用程序。
引言
在题为《IL“CLR的语言”-跨语言平台》的文章中,我已经讨论了Microsoft.NET架构的跨语言功能。在本节中,我想提请您注意一种流行语言Fortran,并举例说明Fortran如何扩展其功能,以便在.NET下交付广泛的应用程序。
富士通和Lahey合作编写了面向公共语言运行时环境的Fortran编译器,以利用公共语言基础设施的最佳特性。富士通软件是积极的成员,参与了许多与.NET相关的草案的标准化工作。Lahey过去曾带来许多与Fortran相关的解决方案和产品,并正在努力带来更多面向Microsoft.NET的产品。
我偶然看到了富士通-Lahey软件提供的预览版,并借此机会介绍一些示例和对这款新编译器的感受。虽然它不是最终版本,但我还是想提供该语言的未来前景。
安装说明
如果您没有Lahey/Fujitsu Fortran for .NET Technology Preview1软件,您可以从http://www.lahey.com/net_down.htm下载文件LaheyFortranPreview1
(1.92MB),这是一个Windows Installer包。
软件要求
- Windows 2000 Server
- Windows 2000 SP1或更高版本
- .NET SDK Beta 2 (不适用于Beta1)
LaheyFortranPreview1
命令行应用程序 - Fortran
了解LFC.EXE (Lahey FORTRAN Compiler) 的各种编译器选项非常有益。一旦了解了它们,您就可以根据应用程序的使用情况生成“exe”文件或“dll”。以下是一些LFC的重要编译器选项。Fortran文件的默认扩展名是“*.f95*”;这象征着遵循Fortran 95语法。
选项 | 含义 |
-[n]exe | 生成可执行文件。这是ILASM的默认选项 |
-[n]dll | 生成扩展名为*.DLL*的库文件 |
-[n]g | 生成调试信息 |
refer <names> | 指定程序集文件名(以分号分隔) |
-out <name> | 编译到指定名称的文件(用户必须提供扩展名,如果有的话) |
-win | 创建一个Windows应用程序 |
-winconsole | 创建一个Windows控制台应用程序 |
生成可执行文件
要从myFile.f95生成可执行文件;请在命令提示符下发出以下命令
lfc myFile.95
生成DLL
要从myFile.il生成库文件;请在命令提示符下发出以下命令
lfc myFile.f95 -dll
在记事本中输入以下程序,并将其保存为welcome,扩展名为.f95。不一定非要保存为*.f95*扩展名。但是,这是在.NET Framework下使用Lahey Fortran编译器进行Fortran程序的默认扩展名。它被编译为welcome.exe。
program Gui_Sample
typealias :: MessageBox => type(System%Windows%Forms%MessageBox)
typealias :: DialogResult => type(System%Windows%Forms%DialogResult)
type(DialogResult) :: display
display = MessageBox%Show("Welcome to .NET","Patni Computer Systems Limited")
end
通过运行welcome.exe,您将看到如下输出
让我们尝试找出System%Windows%Forms%MessageBox
的含义。System.Windows
是命名空间
的名称;Forms
是类名称;而MessageBox
代表方法名。作为重要事实,所有符合.NET的语言都使用相同的类库,称为基类库(BCL)。有时也称为.NET框架类库。
使用Fortran.NET进行跨语言编程
现在让我们看看如何利用.NET框架的跨语言功能。现在,我们用Fortran编写一个程序,并将其继承到另一种语言(C#)中。不一定非要使用C#,您可以选择任何符合.NET的语言。我们不会止步于此;我们将尝试使用C#重写Fortran中编写的方法。这正是.NET环境如此特别的地方。用任何语言编写应用程序,并在不同的其他语言中使用该作品。这意味着在.NET框架下,所有语言几乎都获得了相同的功能。
以下是一个简单的Fortran程序,它在对话框中显示一条消息。在记事本中输入以下程序(您可以使用任何编辑器),并将其保存为getMessage.f95。通过发出以下命令来编译以下程序
lfc getMessage.f95 -dll
以下程序被编译为库(getMessage.dll)。
subroutine getMessage
typealias :: MessageBox => type(System%Windows%Forms%MessageBox)
typealias :: DialogResult => type(System%Windows%Forms%DialogResult)
type(DialogResult) :: display
display = MessageBox%Show("Welcome to .NET","Patni Computer Systems Limited")
end subroutine getMessage
现在,我们将尝试将其继承到C# (Csharp) 程序中。以下是一个简单的C#程序,它继承了使用Fortran编写的代码。在记事本中输入以下代码,并将其保存为showMessage.cs(C#程序的默认扩展名为*.cs*)。“csc
”代表C#编译器。
//csc /r:getMessage.dll showMessage.cs
using System;
class showMessage
{
public static void Main()
{
getMessage.__procedure();
}
}
通过执行上述程序,您将看到以下输出
既然我们已经看到了如何将Fortran代码继承到另一种语言,我们将继续尝试在C#程序中重写该实现。
在以下程序中,我们将用新的实现重写method __procedure()
。
//csc /r:getMessage.dll showMessage1.cs
using System;
class showMessage
{
public static void Main()
{
__procedure();
}
public static void __procedure()
{
Console.WriteLine("Hi, This is really wonderful for Fortran programmer");
}
}
在记事本中输入上面的程序,并将其保存为showMessage1.cs。通过重写,我们的意思是,当我们编译并运行上面的程序时,它应该显示新的实现。现在我们来检查一下!当我们编译并执行上面的程序时,我们将在命令提示符下得到以下输出。
这对于Fortran程序员来说真是太棒了!
这真是太神奇了!现在,Fortran可以以更有意义的方式使用。毫无疑问,它有其优势,但在.NET的庇护下,它获得了更多优势。
ASP.NET应用程序 - Fortran
在撰写本文时(LaheyFortranPreview1
)并不直接支持ASP.NET应用程序。但很快,我们就会看到对ASP.NET和.NET框架的其他一些功能的直接支持。这意味着,此刻,您找不到对以下语法<…language = "Fortran"…>的支持。它也不支持Web服务。但是,如果您有.NET编程经验,可以将Fortran类作为内联函数使用,并使用C#和托管C++等语言编写Web服务。
结论
富士通和Lahey正在努力尽快将Fortran.NET推向市场。他们在提供COBOL/Fortran相关产品和解决方案方面享有盛誉。富士通积极参与CLI(ECMA)的标准化工作,最近ECMA已经批准了它。其他参与者包括惠普、英特尔公司、IBM、ISE、微软、莫纳什大学、Sun Microsystems等。毫无疑问,Fortran可以比以往任何时候都更有效地用于交付各种应用程序。所有使用Fortran的人现在都可以考虑设计分布式应用程序、编写服务器端编程、编写Windows应用程序等等。请继续关注该领域的进一步发展,因为Fortran至今仍是全球使用的流行语言之一。
许可证
本文没有明确的许可条款,但可能包含文章文本或下载文件本身的用法条款。如有疑问,请通过下面的讨论区与作者联系。有关作者可能使用的许可列表,请在此处找到此处。