Programming languages 为什么PL/I没有';你在科学计算方面做不到吗?

Programming languages 为什么PL/I没有';你在科学计算方面做不到吗?,programming-languages,scientific-computing,pl-i,Programming Languages,Scientific Computing,Pl I,PL/I是一种非常古老的语言,但在科学计算方面似乎没有像Fortran那样受到广泛的关注和赞赏。为什么呢?在网上搜索确实表明有许多科学计算的PL/I代码。IBM在PL/I中开发了一个科学计算库 但是我还没有找到任何针对Windows for PL/I的免费编译器。是不是因为缺少免费编译器,PL/I没有吸引到科学界 非常感谢 为什么呢 我认为有两个原因 也许是因为习惯是第二天性。当PL/I出现时,FORTRAN已经存在了将近10年。当一些新技术/语言出现时,您可以通过调用遗留代码来贬低现有代码库。

PL/I是一种非常古老的语言,但在科学计算方面似乎没有像Fortran那样受到广泛的关注和赞赏。为什么呢?在网上搜索确实表明有许多科学计算的PL/I代码。IBM在PL/I中开发了一个科学计算库

但是我还没有找到任何针对Windows for PL/I的免费编译器。是不是因为缺少免费编译器,PL/I没有吸引到科学界

非常感谢

为什么呢

我认为有两个原因

也许是因为习惯是第二天性。当PL/I出现时,FORTRAN已经存在了将近10年。当一些新技术/语言出现时,您可以通过调用遗留代码来贬低现有代码库。但没有理由立即开始转换。尤其是在70年代,由于缺乏自动转换器和其他工具,这是一个大问题

第二个原因可能是没有银弹。PL/I试图创建这样的银弹通用语言。他们尽了最大努力,其余的你都知道PL/I是一种可怕的语言。弗劳:

程序员被分成了两部分 科学程序员(使用 Fortran)和业务程序员(who) 使用COBOL),具有显著的张力 甚至是群体之间的厌恶。 PL/I语法借用了两种COBOL语言 和Fortran语法。所以不是 注意到会使 他们的工作更容易,Fortran程序员 当时注意到COBOL语法和 他认为这是一项生意 语言,而COBOL程序员 注意到FORTRAN语法并观看 它是一种科学语言

此外,像FORTRAN这样的“老人”在死亡的危险下进化,并增加了结构化编程、面向对象等功能,这降低了PL/I的相对优势


另外,请看前面提到的维基百科文章。

我与IBM的人员一起工作,他们开发了PL/I优化编译器和PL/I签出编译器。我喜欢使用PL/I,但它是“第二个系统效果”的经典示例:非常复杂和笨拙,尽管功能强大。想象一下Perl的一个封闭源代码版本,您就不会太远了。这里的关键是封闭源代码。语言需要数年时间才能站稳脚跟,到20世纪70年代中期PL/I稳定下来时,计算已经从大型机转向小型计算机。然后在20世纪80年代末,微型计算机开始流行起来。PL/I编译器的设计并不是为了可移植,而是在IBM 360之后才开始的,这将是人们所需要的最后一台计算机,IBM不可能在新平台上赶上更简单、更易于移植的语言。(我无法想象IBM会尝试为PDP-11设计一个PL/I端口。)

总之,

  • 使PL/I成功与IBM无关
  • IBM只关心自己的大型机硬件
  • PL/I极难移植到其他硬件
  • 当大型机时代已经结束时,PL/I已经太晚了,无法跟上时代的步伐

  • 我喜欢PL/I,但我并不怀念它。

    同意上面的说法,它有点像瑞士军刀,刀片太多了


    就编译器可用性而言,有一个为gnu编译器构建PL/1前端的项目。请参阅(尽管从上次发布之日起,它看起来已经奄奄一息)。此外,还提到了一个适用于MSDOS的Digital Research PL/1编译器,该编译器被认为是免费供个人使用的。

    谢谢。两个答案都很有用,但我选择了Kemiisto的答案。1票赞成。+1:FWIW我认为@ycallecharan选择了不太好的答案来接受。当两个答案都非常有用时,很难做出选择。我两人都投了1票,最后我不得不选择一个答案。我知道其他人可能不同意我选择的答案。PL/I确实有一些我错过的功能。我特别记得拥有具有有趣计数序列的循环的能力,这在某些协议应用程序中非常有用,其中循环的开始和结束需要特殊处理。感谢Skaffman的编辑和创建标记PL/I。