C的主要缺陷

Exp*_*ice 0 c language-design

C语言的主要缺陷是什么?如何在采访中回答这个问题?我的意思是C Lack现在与新语言比较了什么?

Dig*_*oss 9

C可能是有史以来发明的最重要的单一语言.

C真正完成了所有直接目标,然后更多.这真的没有"缺陷",本身,而是选择,它定义为一个理想的系统实现语言和可以接受的,虽然不是完美的应用程序语言.

当C在20世纪70年代早期爆发时,它与Fortran,Basic,Cobol竞争,特别是组装.正如他们所说,它吃了各自的午餐,并将它们作为实施语言埋葬.尽管很少有程序可以在Fortran中表达而不是C.

到目前为止,C偶尔会在Tiobe索引上排名第一,仅次于更专业,也更疯狂的Java.

当然,对于动态和符号应用程序,C可能无法与Ruby,Lisp或Python进行比较,但它们当时并不存在,并且对实现没有用.这三个通常都是用C语言实现的,有点"笑到最后".Ruby内部有200,000行C语言.

所以是的,它没有实现所有可能的编程范例.并回答您的具体问题:

  1. C不反光
  2. C没有垃圾收集
  3. C不直接实现闭包
  4. 静态类型:C是最终的"编译时"语言处理器.
  5. C不是直接面向对象的,C中的类似对象的包往往是笨重的,没有人使用它们.
  6. C不是类型安全的.(但可以使用类型安全的风格.)
  7. C不是内存安全的.(不保证,但有时可以使用大多数安全的方式.)
  8. 运营商的优先事项太多了.
  9. 某些运营商优先级似乎没有最有用的优先级.
  10. C纯粹是必要的.

在大图中,C是一种结构化的高级语言,其中任何东西可以构建,但是它没有反射和面向对象的属性,往往允许更大,更复杂的程序和抽象.写作C的天才可以做任何事情,但是当我们的问题域允许时,我们大多数人应该使用更高级别的语言.

  • C比许多人认为的更加类型安全.关键问题是(尽管拼写)它不是引入新类型的`typedef`关键字,它的`struct`; 并且编译器历来在C语言不需要的内置类型之间执行静默隐式转换.Varargs函数实际上是唯一一个在没有明确请求的情况下获得类型 - 非安全性的地方. (2认同)