那时,开发人员与金属的距离越来越近。C本质上是汇编的更高层次的替代品,它几乎与您所能获得的硬件几乎一样,因此很自然地需要指针来有效地解决编码问题。但是,指针是锋利的工具,如果使用不当可能会造成很大的损坏。此外,直接使用指针可以解决许多安全问题,而这在当时并不是问题(在1970年,互联网由几所大学中的几十台机器组成,甚至没有这样的名称) ...),但此后变得越来越重要。因此,如今有意识地设计了高级语言以避免原始内存指针。
说“用C无法在VB.Net或Java中完成高级的事情”表示的观点非常有限,至少可以这样说:-)
首先,所有这些语言(甚至汇编语言)都是图灵完整的,因此从理论上讲,用一种语言可能发生的一切,都将是可能的。只需考虑一下一段VB.Net或Java代码的编译和执行会发生什么:最终,它会被翻译成(或映射到)机器代码,因为那是机器唯一能理解的东西。在像C和C ++这样的编译语言中,您实际上可以将等同于原始高级源代码的完整机器代码作为一个或多个可执行文件/库。在基于VM的语言中,获取程序的整个等效机器代码表示形式比较棘手(甚至可能无法实现),但最终仍会在运行时系统和JIT的深层隐蔽中找到某个地方。
现在,当然,在某种特定语言下某种解决方案是否可行是一个完全不同的问题。没有明智的开发人员会开始以汇编形式编写Web应用程序:-)但是请记住,大多数或所有这些高级语言都建立在大量的运行时和类库代码的基础上,其中很大一部分用较低级别的语言(通常用C语言)实现的。
因此,要解决这个问题,
您认为对年轻人的指点知识重要吗?
指针背后的概念是间接的。这是一个非常重要的概念,恕我直言,每个优秀的程序员都应在一定程度上掌握它。即使有人只使用高级语言,间接和引用仍然很重要。不理解这一点意味着无法使用一整套非常有效的工具,从长远来看会严重限制一个人的问题解决能力。
因此,我的答案是肯定的,如果您想成为一名真正的优秀程序员,那么您还必须了解指针(以及递归-这是刚起步的开发人员的另一个典型绊脚石)。您可能不需要从头开始-我认为C作为当今的第一语言不是最佳的。但是到某个时候,人们应该熟悉间接。没有它,我们将永远无法理解我们正在使用的工具,库和框架是如何工作的。不了解其工具工作原理的工匠是非常有限的。相当公平,人们也可以使用高级编程语言来掌握它。一个很好的石蕊测试是正确地实现一个双向链表-如果您可以用自己喜欢的语言来做,则可以声称您对间接的理解足够好。
但是,如果没有别的事情,我们应该这样做,以尊重那些设法使用他们曾经拥有的荒谬简单工具(与我们现在拥有的工具相比)来构建令人难以置信的东西的老程序员。我们都站在巨人的肩膀上,承认这一点对我们有好处,而不是假装我们自己就是巨人。