打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
最完美的语言C ?大牛来带你解读真正的C 是否为完美的语言


       【【C语言编程】最完美的语言C ?大牛来带你解读真正的C 是否为完美的语言】http://toutiao.com/group/6491898175190729230/?iid=15906422033&app=explore_article&tt_from=copy_link&... 

C 很复杂,这门语言有太多的诱惑,程序员需要极度的自律。而C 设计成这样也是因为Bjarne说过他不希望把自己任何的喜恶都加在语言上,他希望程序员自己去判定,完全信任程序员。然而,信息时代发展到现在了,程序员也已经不像80,90时代一样,似乎是少数人才可以做得事情,现在可以写冒泡排序都可以找到一个编程开发工作,不需要理解计算机组织,不需要理解操作系统等等。而由于计算机基础的缺失,这样的程序员却往往是需要语言来帮助规范的,需要语言帮他选择,而非他来选择语言的特性。而这样的发展也是必然,如互联网时代,很多时候就是需要可以快速构建抢占市场,所以需要很快的搭建出来可运行的业务,而这时候很多情况下会选择动态语言。当然,这样很多时候也会有代价,当达到很大规模时,会回过头借助Native的语言,如C 。
  也正是这样,C 具有着很大的复杂性,融合OOP,GP等各种编程范式于一身,而这也是对新手不利的地方。虽然现在的C 已经进化了,C 11/14对于新手来说已经算友善了,少了很多历史残留的坑,但是C 发展的路途增加新特性也是对新手的更大学习负担,如增加的右值引用,std::move,std::forward到底又是什么东西?
  学编程最重要的是实践,就是写代码、看别人写的代码、再写代码,你看再多的书,不写代码,你还是不会编程。但是写代码也要讲究方法循序渐进,不能刚学了几天语法,就想写个操作系统什么的,树立这种不切实际的目标只会让你的自信受到严重打击迷失自我。同时小编推荐一个学C/C 的学习群627819188无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!群内有很多干货和技术分享!
  C 的复杂性也体现在类型系统上,不知道多少人都被C 的隐式类型转换给弄的头昏脑胀,如为什么会有bool转换这样的东西。同时,加入了泛型编程和右值引用后,那么类型推导也变得复杂。如:
  为什么明明是T&&,却会让我的类型推导出不同的类型,这个时候对于初次接触的人都是不解。以前有句话叫做没有读过Effective C 的C 程序员不应该让他开发,我觉得这句话现在也可以引申为没有读过Effective Modern 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 还有很多不足,如很多小伙伴和我上面提到的很多问题都的确是客观存在的。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
对九个超级程序员的采访
程序员编程语录
C 改变了世界,未来还要助力人工智能、大数据、机器学习的研发
C 之父给的C 学习路线图(C 赠书)
C 之父Bjarne Stroustrup:程序员在数学上付出的努力,永远也不会白费
推荐5本学习新的编程语言的书
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服