CPL语言有哪些在当时看来极为先进的特征?

我说的CPL就是指C的老祖宗…… 近日听说它是FPL……
关注者
47
被浏览
2736

这是个很有趣的问题,因为CPL是个很有趣的语言。

我就先说说CPL有趣在那吧。

0:CPL标准出现在63年,而在60年Algol 60标准出世,并且有实现(注意,最早的Algol是Algol 58,也是同年有实现)。Lisp也是58年出现的(实现则在1958-1960),CPL的实现则出现在1970左右,跟BCPL(CPL的简化版),B(BCPL的简化版,C的前身)出现时间大致同时。

换句话说,就算我们谈CPL标准,不谈实现,重点是,CPL前面就是两个极其有影响力的语言(Lisp就不说了,Block,BNF,CBN,都是Algol引入的)。在此之下,CPL难以引入什么‘极其先进的特征’。

看到这,你应该感到不对:“既然如此,为什么CPL用了7年左右才实现,远远比Algol,Lisp慢?”

因为重点不同:前两个语言都是极其精简的(同样,Lisp也懒得说),Algol 60的Full Reference Manual只有16页-可以当conference paper投给各种会议了。

CPL呢?我们来看看作者怎么说

1:“某种意义上,CPL基于Algol 60”(“CPL is to a large extent based on ALGOL 60”, The main features of CPL), “CPL希望程序员可以保留跟机器的接触”,比如“the actual computer program must specify for each operation whether it is to be done single length, double length, etc.”。换句话说,CPL是Algol*底层,自然,就没有太大的语言层面上新的特性。

也因为CPL很大(194页的reference manual,Algol 60的12倍以上),导致很难实现。

所以说,对比Algol,BCPL中有String,有Logical Shift,不过,这些完全跟先进沾不上边

2:不过,这么多页,的确塞了点新东西的:Parallel Assignment,Dynamic Type,Setter&Getter(叫Load&Update Pairs),Casting(Transfer Function)。其中Load&Update Pair估计是最配得上‘极其先进特征’的名号,除了CPL以外,还有POP-2 - Wikipedia(1970实现),Gedanken(cs.cmu.edu/afs/cs/user/ ,1970的paper)(不过CPL自己也是70才有实现,咳咳)。至于剩下的几个特性,我没精力考究了,说不定也不是新的。

至于CPL是FPL。。。估计是The Essence of Algol中把Algol跟Lambda Calculus连一起了,或者你看到的是A Categorical Programming Language(雾)

The main features of CPL: math.bas.bg/bantchev/pl

CPL working paper:homepages.cs.ncl.ac.uk/

Gedanken:softwarepreservation.org

谢邀。