C++语言的设计与演化

标题党.

 

C++的目的是成为betterC,所以如果Cpp成功,是因为cpp设计的好,还是因为C本身好?

后者的例子是,object pascal失败了,是因为pascal不如C么?

 总之,cpp的成功不能证明它是一个好语言,事实上,它是一个很坏的语言,至少virtual在cpp11里面引入了override,是一个当初的设计失误.

但是cpp11试图以旧代码源码兼容,使得语言越来越复杂,这一点,python3就比较果断,勇于实践不兼容python2.

 

Anyway,在cpp之后,已经有两代人三位天才explict挑战cpp:

 

1 java 1995

2. golang/rust 2009/2015

 

我们把golang和rust归入一代,它们的区别是是否有GC

 

以下表格列出了每一代设计者的思考:

   

C++的坏特性
java的选择
golang的选择
c++ 11的特性
评论
引用类型
obj一律在堆上
使用C的指针语法
 
C的指针语法并不复杂,cpp使用引用语法带给了程序员负担,cpp11引入了右值引用更加使得语言复杂
无法返回栈变量
 
变量逃逸
 
 
异常很难用
 重新设计
不要异常
 
 
 virtual关键字
 默认virtual所以不需要关键字
 
 override
 override是抄袭了c#
 需要头文件
 type信息写入二进制class中
 同java
 
 
 
 

posted on 2021-08-14 17:36  SimonBlog  阅读(235)  评论(0编辑  收藏  举报

导航