Answers:
它可以,但很可能不会导致问题。
这只是经济学。如果绝大多数人失去了理解基础架构的能力,并且仍然需要大量的知识来理解基础架构,那么有工作的人将获得工作并获得更多的报酬,而那些没有工作的人将只有得到的报酬。不需要的工作(而且可能还会获得更多的报酬……谁知道?)。
知道对您有帮助吗?绝对。您可能会更好。在大多数情况下是否有必要?不。这就是为什么抽象是如此出色的原因,我们站在巨人的肩膀上,而不必自己成为巨人(但周围总会有巨人)。
我认同。这个趋势令我担心。 没有抽象是完美的 ; 如果有一种简化任何复杂问题的完美方法,它将很快替换原来的问题。(这种情况在过去曾发生过,偶尔在计算机上发生过,在其他领域则更为频繁,这些领域并没有像我们这样担心后向兼容性,例如物理学。)
这意味着每次使用抽象时,都会隐藏一些重要的基本复杂性。如果您不知道那是什么,为什么在那儿以及它在做什么,您最终会不小心写出大火车残骸,而又不知道如何解决它们,因为您不知道真正发生了什么。
试图告诉您其他情况的人要么在卖蛇油,要么根本就没有认真使用软件的经验。在工作中,我正在编写一个程序,该程序在美国所有电视台和广播台中都可以正常运行。随着站点和网络变得越来越大,越来越复杂,为一个小型站点设计产品的很好的快速而肮脏的技术在为具有50个站点和200个通道的网络实施时最终碰到了很大的技术壁垒!没有对语言如何工作的深刻理解(首先是一种高效的语言),对数据库如何工作的深刻理解,我们的编码人员将永远无法成功地使产品规模化。
这也不是一个孤立的故事。软件不断增长,越来越复杂,而不是简单,而且恐怕这种水平的技术专长将成为一门失传的艺术,明天的程序将比今天的程序更糟,而不是更好。
javascript:alert("Hello world")
需要弦理论的博士学位。
不,它不会导致缺乏计算机体系结构知识的程序员。语言用于解决特定领域中的问题。如果要解决特定的问题,请使用适当的语言或在资源允许的情况下使用一种足够好的语言。
实际上,哪些领域实际上需要计算机体系结构的知识?那需要绑定到特定的硬件体系结构吗?操作系统?设备驱动程序?可以,但是即使如此,此类代码中只有一部分需要特定的体系结构知识。
性能改进?是的,您可以应用计算机体系结构的知识来提高算法的性能。但是另外两个因素对性能有更大的影响:使用更好的算法和对语言运行时环境的了解。
从本质上讲,更多的抽象编程语言解决了不需要计算机体系结构细节的问题。它们允许解决更多问题。使用它们的人不是在使用它们来解决与机器有关的问题。需要解决与机器有关的问题的人们将继续使用机器支持的语言。这不是零和问题。