Fortran与设计模式(Design Pattern)

我一直在问我自己这个问题:Fortran程序里要不要用设计模式;更通俗的,Fortran里要不要面向对象(Object-Oriented)设计。

从面象对象及设计模式的角度看,Fortran程序是极其反动的,动辄上万行代码,就几个函数在那儿撑着。

但从科学家的角度,Fortran工作的很好,甚至还有人写了本“Classical Fortran”的书,提出只用F77里的风格。

如果思考一下科学计算的本质,就可以很容易得到答案。科学计算的本质是面向过程的算法,从这点上看,科学计算里用Fortran是合适的。

除了算法结构外,科学计算追求的是速度,而OO所带来的各种负担和开销也是不可忽略的。为了榨干CPU最后的油水,直接明了的内存访问是必不可少的。

注意,这里不是在谈写软件,而是在谈实现一种科学计算里的算法!知道自己在什么地界上、干什么是很重要的。

所以,如果是写一个给科学家用的软件,Fortran就不合适了,应该用支持OO的语言应付了。

其实,这种东西用C++是不错的。你可以用C++里面向过程的特性写算法;再用C++里面向对象的特性写软件。不过,这个组合我只能给60分。

我倾向的组合是:Fortran+JAVA或Fortran+C#。原因在于,C++做科学计算,速度是不如Fortran的。写软件呢,比如写界面,C++是不如JAVA或C#的。

当然,这样组合也是有缺点的,比如我现在都不敢写For循环了。因为各家写法不同,我也记不住那么多种写法:(

Advertisements
此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s