透过现象看本质为什么CC深受计算机

北京治疗白癜风最好的医生 https://yyk.39.net/hospital/89ac7_doctors.html

人们一直试图用“更好的更有效的语言”废除C和C++,但是C/C++活着的时间比某些新兴语言更长。

计算机仅能理解字节码-一种语言,单词相对较少,但语法复杂度却比许多人曾经希望理解的高出很多。在计算的形成年代,程序员必须学习他们为其编写程序的计算机的特定字节码语言。随之而来的是汇编器-编程世界中的一个天赐之物!程序员可以学习一种语言,这种语言将在现有约80%的系统中保持约90%的一致性。(当时系统使用的“字节”长度在6到48位之间,并且可用寄存器的数量存在很大差异。)

输入编译器-特定于平台的软件,该软件可以将程序从“高级”语言转换为系统所需的确切字节码。最早的代码之一是Speedcoding,如果您真正阅读了该条目,您会注意到,它使程序员编写代码的速度大大提高,但是计算机实际执行所需的时间却是十倍之多。尽管有些牵强,但却充分说明了计算机与人们完全不同的方式“思考”的事实。

多年来,出现了许多特定于任务的语言-FORTRAN,ALGOL和Pascal是最成功的语言(其他的很少有人记得),它们在很大程度上解决了跨平台的兼容性而又不牺牲太多的性能。随着它们的应用范围的扩大和整体效率的提高,它们中的每一个都经历了许多变化,但是它们仍然偏重于诸如编译轨迹表之类的科学任务。缺乏一些“通用”的东西。

CPL-组合编程语言-第一种“通用”跨平台编译语言和具有较低功能的相对高性能的高级语言。听起来很完美,除了“覆盖所有基础”会产生巨大的“词汇”,本质上是试图将单词与语法合并。简单得多的BasicCPL(BCPL)取得了更大的成功,并为称为B的语言奠定了基础,而该语言最终是C的后继者。

我希望人们现在已经掌握的主要事情是,偏离计算机的“思考方式”,而不是偏离人类的“思考方式”所带来的复杂性。(就好像Java迷需要放弃自己的引以为傲的虚假想法,认为Java可以以速度或力量远程访问C/C++。)

C设法将适度的类人抽象与类机器语法相结合,以在程序员和计算机之间建立一种愉快的中介-就像任何高级编程语言所希望的那样,“接近金属”,甚至能够利用内联必要时,组装商可以提高性能。

尽管C++因为其复杂而外界说它“缺乏效率”,但这仅与其C语言的父语言有关。与Speedcoding一样,计算机在编程语言中具有纯功能性和OOP功能,可以简化程序员的工作,但会导致字节码复杂得多,并严重影响性能。

出于很多原因,计算机喜欢C/C++。使用Swift和Java之类的语言进行编程就像通过你与外国人说你的中式英语一样,并期望以英语为母语的人对你说的能够理解。




转载请注明:http://www.aierlanlan.com/grrz/1622.html