短答案:理由有很多,但我认为最根本的理由是“历史的包袱”
--------------------------------------------------------------------------------------------------------------------------------------
长故事:
计算机在很早就被美国用于科研目的,而在当年在语言上并有没太多选择。
举个我了解一些的美国Traffic Simulation领域栗子(虽然这不算尖端领域,但是我觉得道理是一样的):
其实在该领域美国早在70年代就已经开始计算机化,利用计算机程序来模拟城市/区域交通,进行信号灯的控制,路线的优化等等。而那个年代,C也还没成熟并被广泛利用,也正是Fortran的黄金时代(Fortran 66),。再加上Fortran本身特性也适用于科学计算,所以自然整个Traffic Simulation软件的核心CORSIM: Microscopic Traffic Simulation Model是用Fortran写的。
而在这种专业领域的软件,并不是随便招个程序猿就能维护。而是需要程序猿和专业人士非常密切的交流,所以开发/维护软件的人一般也算是半个业内人员。这种程序员因为技术壁垒高,待遇自然也很高,相对稳定。相对稳定的人员环境,也导致即使后来C或者其他语言流行起来在Computer Science圈子流行开来,却无法渗透到这种专业性强的领域,没有足够的动力让程序员去迁移旧的Fortran代码到C上(况且,谁说在这种领域C就比Fortran好?)
虽然接下来80年代末,90年代初,GUI急速发展导致Fortran似乎已经开始不占优势了。但是要知道,这个时候Fortran已经被用了接近20年。所有核心module都是Fortran,再去迁移更不可能。于是乎折中的处理就是继续用Fortran做数据处理和计算的内核,外面套一层C的shell,于是乎就有了TSIS。
其他太尖端的行业不了解,但像问题中美国国家大气研究中心的大气模型和气候预测程序,NASA的全球气候变化模型等很可能或多或少都是经历着很类似的发展过程。
--------------------------------------------------------------------------------------------------------------------------------------
总结:当然Fortran作为语言本身,有他很多的优势,这些也是他在现在依然被运用的原因。但是说放到今天的环境下,如果给当年的程序员们再爱一次的机会,他们还会选择Fortran么?
利益相关:就不告诉你~
— 完 —
本文作者:
知乎用户(登录查看详情)