`
touchmm
  • 浏览: 1064499 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

语言及其应用

阅读更多

我本来就《C++不是万能的》一文写了一个续篇,令狐提醒我说:

C++作为一种语言,它拥有任何特性都是没有问题的,并不存在什么“多余的特性”一说。从这个角度上说,C++标准委员会的一切努力都是有意义的。因为它们是在完善C++语言本身
但是,作为项目开发来说,开发语言并不是唯一的决定因素。没有必要将语言限制在仅使用C++上。在这种背景之下,其它几种语言的组合,可能会比单一使用C++,来得更好。尤其是像C++这样,编译器对标准的实现都未必完整和正确的复杂语言,使用那些过于“高级”的特性其实是会带来风险的。事实上,很多公司在实际使用C++的时候,都会或多或少的通过代码规范进行一些裁减,减少那些“C++高级特性”的使用。
谈这个问题的时候,理论归理论,实践归实践,这样比较好。把语言特性、语言本身发展的争论和语言在项目中应用的争论放到一起,很容易把自己都绕进去的。

我醒悟过来,的确是有些不妥,于是改写成现在这一篇,主要是作为对上一篇中一些评论的回复。

fastzhao所说,语言问题在大多数时候“只是个信仰的问题”。只是这一次在于Kakurin要把自己的信仰强加于Torvalds。在Kakurin们看来,C++就是万能的,Torvalds不用C++是不对的,但我不这么认为,所以我就掺和了。

祭出Bjarne或标准委员会是一件很可笑的事情,因为正如令狐所说——语言本身和语言的应用是两回事,Bjarne等大师们考虑的是语言本身的问题,我们考虑的应用的问题。

一个人所处的位置决定了TA看问题的角度脱离位置来谈问题就是空谈。所以在我在前文里反复强调,对于Torvalds的Git以及云风或sunway他们的项目来说,C++并不总是最合适的。他们都是经验丰富的开发专家,在语言的应用层面,考虑得比Kakurin们要全面得多。

不可否认,C++的很多feature都是很好的东西,单是一个template就让多少别的语言用户馋得流口水。但是并不是说C++具有所有C(旧版)的feature并提供更多的可能性,用C++就一定更好。举一个最简单的一个例子:在C里,一句“a=b+c;“,每个C程序员都可以理解,并且通常不会有什么误解,对于C高手来说,甚至可以一眼看出目标代码会是什么样的。但是在C++里呢?谁知道加号有没有做过运算符重载。

duyanninglaibach0304所说,既然用了就要了解,这是没错。但这只是站在一个Coder的位置上来看,而作为一名leader,却不可能要求team里 的每一位成员都能做到。dick_song说leader在分配人员的时候就应该知道成员加以区分适当使用,但作为公司特别是软件公司来说,压低人力资源 成本是很重要的,所以leader能用到什么水平的人,其实也没有什么决定权。

duyanning说他想不出有适合C而不适合C++的地方。如果仅仅是从个人使用的技术层面上考虑,我的确也很难想到有什么适合C而不适合C++的地方。但是如果是在一个实际项目的团队应用层面呢?想不出其实只是因为碰到过的状况还不够多

dogdotnet说的没错,C++只有少数优秀的程序员能够驾驭,但是软件公司要的是生产效率,等不及公司的所有程序员都成长为优秀的程序员,在他们还没有成长起来之前写出来的C++代码不但没有效率,更没有质量。

就我用过的几种主流语言来说,C++无疑是最接近万能的但是“能”并不意味着“好”。比如说tuple吧,boost里也有tuple,但是跟python简单直接的tuple相比,boost的tuple则明显面目可憎。

刘未鹏在《为什么C++》说得不错,只要谨慎地使用C++,它的确能为我们提供更多可能性。你可以要求自己谨慎并尽可能做到,但是对于团队中的leader,你最多只能要求成员们谨慎,但他们能做到什么样的程度却是个未知数——当然有很多管理方法可以在一定程度上加以控制,比如Code review,但对于公司来说,这又会增加开发的成本。

对了,就是成本!

对 于一个单打独斗的程序员来说,所有成本就是自己,所以C++带来的好处都是实实在在的好处。但是对于一个团队来说,会有很多额外的成本要考虑,比如训练团 队成员达到某个水平所需要的成本,比如Code review的成本,比如某个成员对C++某个特性的误用造成的修改成本……C++的高级特性带来的好处是不是足够补偿这些成本?

综合所有的成本考虑,作为leader可能就不得不在团队中限制使用C++的高级特性,甚至于在某些极端的情况下需要使用C,这也就不足为奇了。

语言本身主要是一个技术问题,而语言的应用则需要面对更多技术以外的问题。

分享到:
评论

相关推荐

    《MATLAB语言及其应用》上机指导书_《MATLAB语言及其应用》上机指导书_

    《MATLAB语言及其应用》上机指导书是学习MATLAB编程的重要参考资料,旨在帮助读者深入理解和熟练运用MATLAB进行数值计算、符号计算以及图形用户界面(GUI)设计。本指导书详细介绍了MATLAB的基本概念、操作及应用,...

    VHDL语言及其应用

    VHDL语言及其应用

    pyphon语言及其应用

    总的来说,"pyphon语言及其应用"这本书涵盖了Python的基础知识和实际应用,无论是对于想要进入编程领域的新人,还是需要提升Python技能的专业人士,都是一本宝贵的资源。通过阅读和实践书中的案例,读者可以逐步掌握...

    JAVA编程语言及其应用

    ### JAVA编程语言及其应用 #### 摘要 本文旨在介绍近年来在网络中兴起的一种面向对象的编程语言——JAVA。文章详细阐述了JAVA语言的特点、基本数据类型、对象以及其广泛应用领域。随着互联网(INTERNET)的普及和...

    MATLAB语言及其应用

    总之,MATLAB语言及其应用课程不仅提供了一个系统学习MATLAB的机会,而且为学生将来从事相关领域的研究和工作打下了坚实的基础。通过本课程的学习,学生将能够具备使用MATLAB进行科学计算、数据处理和算法开发的基本...

    常用计算机语言及其应用.docx

    常用计算机语言及其应用 计算机语言是计算机科学中的一门重要领域,涉及到软件开发、编程、算法设计等多个方面。本文将对常用计算机语言进行总结,并对其应用进行剖析。 1. C 语言 C 语言是一种古老的程序设计...

    Python语言及其应用1

    Python语言及其应用是这本书的核心主题,它涵盖了Python的基础知识和在不同领域的实际应用。Python是一种高级编程语言,以其简洁、易读的语法而闻名,被广泛应用于商业、科研以及艺术领域。本书特别强调了Python 3.x...

    《Python语言及其应用》

    为了让更多的读者能有效掌握Python的使用,入门书籍《Python语言及其应用》应运而生,不仅为初学者提供了坚实的基础,也为进阶开发者揭示了Python的更多高级特性。 该书以Python 3.x版本为核心,以一种条理清晰、...

    PLM程序设计语言及其应用_0分

    本文是由袁涛、孙腾谌1990年编写的《PL/M-96程序设计语言及其应用》一书翻版而来的。录入时是由一小妹完成,此人对计算机语言不了解,录入时错误较多,版面也很粗糟,虽校对过2次,还是发现了些错误! 西安周公:我...

    matlab基础知识教程ppt(全) MATLAB 语言及其应用.ppt

    MATLAB 语言及其应用知识点 MATLAB 是一种高效、功能强大、易学易用的编程语言和开发环境,广泛应用于科学计算、数据分析、可视化、机器学习、人工智能等领域。下面是 MATLAB 语言及其应用的知识点: 1. MATLAB ...

    MATLAB语言及其应用课程思政建设(毕设&课设论文参考).docx

    哈尔滨工业大学开设的“MATLAB语言及其应用”课程主要面向全校本科生,课程内容涵盖了MATLAB的软件开发环境、数据类型、矩阵运算、数组运算、程序设计、可视化绘图、数值计算、符号计算、概率统计、数值拟合和插值、...

    《Matlab语言及其应用》形考作业1-3答案.docx

    "Matlab语言及其应用" Matlab语言是高级的编程语言和环境,主要用于技术计算和数据分析。Matlab语言提供了两种创建符号变量和表达式的函数:sym和syms。Matlab中的变量必须遵循先定义后使用的原则。Matlab的含义为...

    《VHDL语言及其应用》中国科学院计算机技术研究所

    《VHDL语言及其应用》中国科学院计算机技术研究所

    PLM-96程序设计语言及其应用.

    PLM-96程序设计语言及其应用. 网上仅有的plm教程,感谢录入者的辛勤劳动,不过还有一些错别字,看得时候要注意

    国家开11放大学《Matlab语言及其应用》实验报告(第一章-熟悉Matlab 操作环境).docx

    ..国家开11放大学《Matlab语言及其应用》实验报告(第一章--熟悉Matlab 操作环境).docx

    国家开11放大学《Matlab语言及其应用》实验报告(第一章-熟悉Matlab 操作环境).pdf

    ..国家开11放大学《Matlab语言及其应用》实验报告(第一章--熟悉Matlab 操作环境).pdf

    matlab教程PPT——MATLAB 语言及其应用(共340页)

    讲授MATLAB语言基础入门知识,介绍MATLAB产品的体系、MATLAB桌面工具的使用方法,重点介绍MATLAB的数据可视化、数值计算的基本步骤以及如何使用MATLAB语言编写整洁、高效、规范的程序。并涉及到一些具体的专业应用...

    Delphi编程语言及其应用场景介绍

    内容概要:本文详细介绍了 Delphi 编程语言和集成开发环境(IDE)的主要特点和开发流程。Delphi 提供高效的开发速度、跨平台支持、强大的数据库支持、面向对象编程以及丰富的第三方库和组件。文章还列举了一些实际...

    MapBaSiC语言及其应用

    为了解决这个问题,MapInfo提供了一个用户系统开发工具MapBasic,人们可以用MapBasic来设计、建立符合自己工作特点和要求的纯用户化的应用系统。作为一种功能强大、易于使用的结构化程序设计语言,MapBasic提供了380...

Global site tag (gtag.js) - Google Analytics