武汉c培训
达内武汉中心

15271940953

热门课程

武汉C++培训丨C语言的完美体现

  • 时间:2018-01-29 11:40
  • 发布:武汉C++培训
  • 来源:互联网

    C++很复杂,这门语言有太多的诱惑,程序员需要极度的自律.而C++设计成这样也是因为Bjarne说过他不希望把自己任何的喜恶都加在语言上,他希望程序员自己去判定,完全信任程序员.然而,信息时代发展到现在了,程序员也已经不像80,90时代一样,似乎是少数人才可以做得事情,现在可以写冒泡排序都可以找到一个编程开发工作,不需要理解计算机组织,不需要理解操作系统等等.而由于计算机基础的缺失,这样的程序员却往往是需要语言来帮助规范的,需要语言帮他选择,而非他来选择语言的特性.而这样的发展也是必然,如互联网时代,很多时候就是需要可以快速构建抢占市场,所以需要很快的搭建出来可运行的业务,而这时候很多情况下会选择动态语言.当然,这样很多时候也会有代价,当达到很大规模时,会回过头借助Native的语言,如C++.
    也正是这样,C++具有着很大的复杂性,融合OOP,GP等各种编程范式于一身,而这也是对新手不利的地方.虽然现在的C++已经进化了,C++11/14对于新手来说已经算友善了,少了很多历史残留的坑,但是C++发展的路途增加新特性也是对新手的更大学习负担,如增加的右值引用,std::move,std::forward到底又是什么东西?
    学编程最重要的是实践,就是写代码、看别人写的代码、再写代码,你看再多的书,不写代码,你还是不会编程.但是写代码也要讲究方法循序渐进,不能刚学了几天语法,就想写个操作系统什么的,树立这种不切实际的目标只会让你的自信受到严重打击迷失自我
    C++的复杂性也体现在类型系统上,不知道多少人都被C++的隐式类型转换给弄的头昏脑胀,如为什么会有bool转换这样的东西.同时,加入了泛型编程和右值引用后,那么类型推导也变得复杂

    为什么明明是T&&,却会让我的类型推导出不同的类型,这个时候对于初次接触的人都是不解.以前有句话叫做没有读过Effective C++的C++程序员不应该让他开发,我觉得这句话现在也可以引申为没有读过Effective Modern C++的C++程序员不应该让他开发,因为这本书写的真的很好很透彻,而这本书就详细解释了这个例子的原因.

武汉C++培训

    下面我想说说上面几个用户提到的问题,如模块化系统,编译慢,ABI,异常等问题.

    的确,C++在不断的进化,在不断的改善,也同时增加了新手的学习.如上面有人谈到C++没有模块系统,编译慢的问题,而C++17有一篇提案讲述的正是这个,叫做Module System,简单的语法
    而这篇提案也提到了有用户答的私有成员问题,如在Module M声明的foo是可见的,而bar则是完全不可见,而远非私有成员的不可访问,但可见.
    而其实大家痛苦的很多地方,C++标准委员会的人也不是不知道,如ABI的问题,也有提案说想要做一个标准,这篇提案是微软的Herb提出的: https://isocpp.org/files/papers/n4028.pdf 而前一篇的Module System深得Bjarne的喜欢,而通过的几率其实也是蛮大的了,而Herb这篇我不知道,说不定也已经被毙了,只是我不知道.
    对于异常,大家都在讨论用不用.可是,对于用户来说,是否真的需要异常呢?我曾在一个回答中说C++的异常是很鸡肋的东西,或者说的更直白点,要用好C++的异常不容易,不是无脑的try throw就好,C++也不会像Java一样会强制要求你,C++的设计就是程序员自己做主.
    而上面同样说到没有Metadata,没有反射.而C++17也在考虑加入反射.是的,正如C++标准委员会之前定的计划一样,C++11是大改动,C++14小修改,C++17又是大改动.
    总体来说,C++真的很复杂,或许现阶段还有ABI,还有编译链接模型,还有类型系统,模块系统等的问题,其实C++也许都可以解决,但是解决完后又变复杂了,因为要保持与之前的兼容,还要保证高性能这一根本立足点,这真是对智力的一大考验啊,所以我一直在说C++标准委员会的人都蛮碉的,比如C++11提出的Memory Model,真是把能抽象剥离的都抽象剥离出来了,很精细.
    我是很喜爱C++的,更是Bjarne的脑残粉,也靠着C++在吃饭.我很欣喜的看着C++不断的变好,但是也必须承认C++还有很多不足,如很多小伙伴和我上面提到的很多问题都的确是客观存在的.
    本篇文章是由武汉C++培训为您呈现,希望给您带来更多更好的文章,喜欢的朋友们可以添加微信公众号.

    更多武汉C++培训相关咨询,请扫描下方二维码

武汉C++培训

上一篇:武汉C++培训丨前端程序员的无奈
下一篇:武汉C++培训丨WEB前端找工作需要多久?

武汉C++培训丨C#泛型不同参数的浅析

武汉C++培训丨有关c#中委托的详解

武汉C++培训丨sizeof函数的简单介绍

武汉C++培训丨C语言文件的读写操作代码示例

选择城市和中心
贵州省

广西省

海南省