65.9K
CodeProject 正在变化。 阅读更多。
Home

Fortran for Microsoft.NET

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.69/5 (7投票s)

2001年12月27日

6分钟阅读

viewsIcon

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至今仍是全球使用的流行语言之一。

许可证

本文没有明确的许可条款,但可能包含文章文本或下载文件本身的用法条款。如有疑问,请通过下面的讨论区与作者联系。有关作者可能使用的许可列表,请在此处找到此处

© . All rights reserved.