编程|C ++为什么没有被一种快速,实用且合理的语言取代


编程|C ++为什么没有被一种快速,实用且合理的语言取代
文章图片
编程|C ++为什么没有被一种快速,实用且合理的语言取代
文章图片
编程|C ++为什么没有被一种快速,实用且合理的语言取代
文章图片
编程|C ++为什么没有被一种快速,实用且合理的语言取代
从甲骨文到金文 , 再从金文到小篆直到现在的文字 。 每种语言更迭变化 , 淘汰的无外乎是那些繁琐的 , 于现实中无意义的文字 。 那C++存在这么久 , 就没有任何一种语言可以取代它吗?前面文章也说过一些 , 但是现在想从实际难度出发去说 。 这里很多借鉴了国外学者的看法 。
1.需要大量投资:将新的编程语言广泛使用需要大量的精力和时间 。 通常大约十年 , 通常在大公司或社区的支持下 。 这必须包括语言的设计和开发 , 标准库的开发(或与标准库集成) , 可靠的编译器/解释器的构建 , 以及(最后但并非最不重要的)普及语言所需的社区发展 。 看看现在被广泛使用的语言-C , C ++ , Java , Python , Ruby , PHP , C# , JavaScript , Perl-这很清楚 。
2.语言优势很少推动采用:同样 , 从历史上看 。 Lisp具有垃圾回收功能 , 并且动态功能现在在Ruby或Python中得到了认可 , 具有更好的性能 , 但无法保持吸引力 。 几乎没有人认为PHP是一种经过精心设计的语言 , 但是它仍然在发展(在Facebook之类的巨头的支持下) , 即使在大多数评估中 , 更喜欢Python或Ruby之类的替代方案 。 实际上 , 在采用方面 , 几乎每一个 重要的因素比语言的基本设计更为重要 , 包括企业或社区(Sun , Microsoft , Python社区)的支持 , 工具(Eclipse , Visual Studio) , 库支持(C ++ , PHP , Java等) , 杀手级应用程序(Rails) , 平台(Mac / iPhone , .NET)和历史悠久的利基专业知识(具有Fortran的物理学家) 。
3.缺乏专业知识:令人惊讶的是 , 考虑到进行实时编程的人数 , 对编程语言的广泛了解非常罕见 。 大多数开发人员最多只了解其中的两个或三个 , 并且通常来自同一家族(例如C ++和Java) 。 部分原因是学习语言需要大量投资 , 部分原因是文化孤立主义 。 (作为说明 , 请查看有多少Java程序员可以使用REPL风格的探索性开发 , 例如使用BeanShell , Rhino或其他工具 。 )很难提高一流函数 , 类型推断 , 闭包 , 元编程的重要性 。, 延续或方法周围(例如 , 当它们不熟悉时) 。 甚至更糟 , 成功的编程语言的设计者们自己似乎常常没有认真调查其他语言的想法 。 (这里当然有例外 。 )结果是 , 回想起来似乎“合理”的功能在可以添加时就被忽略了 。
4.设计难度:即使您有才华横溢且见多识广的设计师提供了大量支持 , 但在设计语言时仍然很难做出明智的选择 , 因为学习您的错误(包括遗漏和调试)都需要花费很长时间 。 从根本上讲 , 语言设计就是其中的微小细节会产生巨大影响的情况 。 很难预测一种新语言的五十万行代码库的外观 , 以及问题将如何 。 到您知道的时候 , 更改任何实质性内容通常为时已晚 。

  1. 5.实施困难:编写好的编译器或解释器和平台很困难 。 如果没有功能全面且可靠的平台 , 该语言将一无所获 。 它很容易启动并运行一些玩具程序 , 但是构建(例如 , 与gcc进行竞争以进行优化的优化编译器或与Sun的JVM进行竞争的虚拟机)所需的专业知识非常丰富 。 它需要足够牢固地构建 , 或者至少要有足够的支持 , 以使人们足够信任它才能使用它 。