【发布时间】:2010-01-31 20:32:21
【问题描述】:
嗨,我最近在看一个旧的video,关于空指针是如何造成十亿美元的错误。他指出 C# 和 java 都有运行时检查,但没有完全消除它,这在某种程度上是可以理解的。他还指出了一个他认为非常确定的 C 是一个大问题。我得到了以 null 结尾的字符串、没有长度的数组和其他一些不好的东西(数十亿美元的缓冲区溢出漏洞利用),但是要完全删除 null?
一些语言已经让 null 成为过去,而其他语言也试图替代 C,但我找不到哪一种语言同时实现了这两个目标。
如果 C 的 null 如此糟糕,那么为什么没有人创建它的替代品?即 Haskell 很好,但不能作为替代品运行。
【问题讨论】:
-
语言和平台也有惯性。
-
恕我直言,根据定义,没有
NULL的语言不会像 C。 -
很多语言都没有这个 NULL 问题。他们只是不像C。如果您想摆脱 NULL,那么请克服您对 C 的依赖并使用另一种语言。
-
@RBarryYoung - 我真的不明白那条评论想要做什么。我承认存在其他类似 c 的语言和没有 null 的语言。使用 C 不是上瘾。
标签: null computer-science language-design nullable