C++很难?神级程序员自述对C++的认识!见解独到能少走很多弯路!
很多小伙伴都老是会碰到疑问,其实还是基础没打扎实,这些题如果你不看答案你能知道多少呢?如果还有很多不知道就证明基础没打扎实,如果你还在入门纠结,如果你还在苦恼怎么入门!小编有个建议,可以加小编弄的一个C语言交流基地,大家可以进入交流基地:379249575,里面新手入门资料,可以说从零到项目实战,都是可以免费获取的,还有程序员大牛为各位免费解答问题,热心肠的小伙伴也是蛮多的。不失为是一个交流的的好地方,小编在这里邀请大家加入我的大家庭。欢迎你的到来。一起交流学习!共同进步!小编等你!
本人对于c++的认识,多年下来,经历了以下几个阶段,
1、 c++很好很强大,盲目追求运行性能,简直巴普洛夫条件反射,贡献了一大坨垃圾代码;
2、 c++的面向对象对持很垃圾,什么鬼,代码很容易就耦合,于是迷上对象+消息发送的面向对象;
3、 c++太复杂了,template太抽象,天外飞仙,搞不懂,二进制复用又差。整个c++就是垃圾,简直程序设计语言里面的败类,C语言多好啊,小巧精致简单清晰;
4、 使用其他语言做开发,java、C#、F#、elisp、scheme、python、haskell、javascript、php等等一大坨语言,感概每一种语言都比垃圾C++不要好太多,发誓不再用c++写哪怕一行的代码;
5、 某一天,突然有点理解了这种语言,一切变得清晰了,原来c++也相当不错,也可以做一些事情,看开之后,感觉开发效率也跟上来了,做同样的事情,用c++实现不会比C#、python等慢。
相比于其他语言,c++的独特优势在于
预编译期的伪图灵完备,这一点,好多语言还是有的,并且更超级好,比如rust,scheme
编译期间的C++是功能完备的解释器,其输出结果是正常运行的c++代码,结合宏,可以制造很多其他语言必须在语法层面上支持的语法糖。这个解释器的奇妙之处在于它运行于编译期,一旦错误的模板代码要进入运行期,就会出现编译错误,而不需要进入运行时的代码,即便天大错误,也都不要紧,而一旦这段代码要进入运行时,那么模板错误就逃不过编译期解释器的法眼。
生成各种内存布局的便利语法糖和自由的内存操控;不同类型的对象,只要其内存布局一致,通过强制转换,就可按同一类型来处理,这一点作死能力,绝不被有gc的语言支持。内存的无节操玩弄,结合template,分分钟就能仿真出来其他必须语言层面上提供的数据结构,类型安全、运行性能、易用性,一点都不逊色,好比string,委托,元组,列表,可空类型;
C++的专有特性,raii、多继承和全局变量。特别是全局变量,结合它的构造函数特点和类型推导,所能玩出来的丰富新花样,其他语言很难做到。全局变量是连接运行期和编译期的桥梁。如果没有全局变量,本座应该不会再次对c++产生热情。奇怪的是,至今为止,c++的基础库都不怎么挖掘全局变量的潜能。当然,对全局变量的使用,肯定是把它当做常量来用,全局变量有唯一的内存地址,就起到原子的作用,但它又可打包了丰富的静态类型信息。
以上的独特,造就了c++层出不穷的新意,而卓越的运行性能,只是其微不足道的优点。虽然说,语言不重要,思想才重要,软件架构才重要,但是c++所能承载的思想,以及其到达的抽象高度,的确就真的大大降低框架的复杂性,诚然,c++的基础库开发要面临无穷无尽的细节纠结,其实,这也反映了c++编译器掌控细节的能力,因此,我们又可以让编译器自动完成很多很多细节重复,从而大幅度地减轻代码数量,还无损其运行性能。又由于c++完备强大的静态类型特性,在用动态语言风格的简洁来编写代码的同时,又无损其快速方便地代码重构。笔者的基础库项目,几十次大规模的重构,借助单元测试,保证了重构顺利快速的完成,深感c++在重构上的便利,这些代码,包括不到1千行却功能完整的xml库(还支持对象与xml数据的直接互相转换);不到1千行却一点都不逊色于boost的spirit组合子解释器(编译速度却快了很多,语法上简洁很多,更能方便地解释各种语法);才1千多行的异步io框架;输入输出,文件操作,数据库,协程等代码都简洁异常,所有这些代码都支持动态库上的二进制复用,让人很惊诧于c++的光怪陆离的强大。
当然,c++的缺陷也震撼人心,
1、 语言特性太过繁杂抽象微妙,比如template、多继承、运算符重载、类型转换、兼容性考虑的很多糟糕语言特性,所以对使用者的节制力要求很高,要求他们时刻清楚自己在干什么,琐碎上的思考太多;
2、 缺乏统一的二进制标准,基础库都用源代码的形式共享,这让原本就龟速的编译速度更加地令人大大感动;
3、 缺乏高标准的基础库,stl和boost更在某些技术运用的展示上更起到很坏的影响;
4、 缺乏某些延迟求值的机制,缺乏必要的函数式语言机制;
就这样吧。
C++很难?神级程序员自述对C++的认识!见解独到能少走很多弯路!相关推荐
- 想做程序员?弄明白这些问题,你会少走很多弯路
前言 几乎每一个新手程序员都会走上那么一段自学的道路,尤其是在校生或进入工作岗位之后,技术的提升基本都靠自学,有的虽然是网上报班学习,但更多时候还是自己在学习,师傅引进门,修行靠个人. 有的人自学很快 ...
- 世界神级程序员之一,成了被人唾骂的神棍?
本文转载自 差评 前几天, Richard M.Stallman(查理德 · 斯特曼)在视频中宣布,自己将要回到 35 年前一手创立的 FSF(自由软件基金会),并且希望再次领导 FSF . 在技术圈 ...
- 怎么用python制作简单的程序-神级程序员教你如何用python制作一个牛逼的外挂!...
玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?(当然用外挂不是那么道义哈,呵呵),那我们就来看一下如何用python来制作一个外挂.... 我打开了4399小游 ...
- 《千字文细谈》2021神级程序员都在用什么工具?-09-02
答者:如下图 普通码农一枚,分享一下自己最常使用的几个效率生产工具. 目前还没看到神级程序员的回答,问题先码一下,坐等神级程序员. 下面本人抛砖引玉的回答: 1.关于架构设计和系统设计:会推荐几个自 ...
- 神级程序员都用什么工具?2020 年度开发工具 Top 100
[CSDN 编者按]在过去的 2020 年,诞生了哪些新的开发工具?最优秀的开发工具和开发服务是什么?神级程序员们是怎么使用它们来开发顶尖的软件和服务? 作者 | StackShare Team ...
- 在校大学生想当程序员,听老叔这番话,你会少走很多弯路【18年开发经验分享】
前言 大家好,我是龙叔,一直以来都有一些大学生粉丝私聊向我"取经",可以看得出来很多人对前路多多少少都有些迷茫,我把大家的问题总结了一下,并对每个问题都做了我自己的见解,高频出现的 ...
- 码农提高工作效率很难?神级程序员五分钟带你提高!就这么简单!
很多小伙伴都老是会碰到疑问,其实还是基础没打扎实,这些题如果你不看答案你能知道多少呢?如果还有很多不知道就证明基础没打扎实,如果你还在入门纠结,如果你还在苦恼怎么入门!小编有个建议,可以加小编弄的一个 ...
- 神级程序员8000行css代码画出一个蒙娜丽莎,堪比达芬奇!
代码画出的蒙娜丽莎 今天逛CODEPEN找HTML5动画案例的时候,偶尔看到一位神级大师的作品,用纯CSS代码画出一副蒙娜丽莎,虽然分辨率不高,但是仍然让我很是震撼,一看代码,整整8000行,基本一行 ...
- 普通程序员和神级程序员的区别?
或许从大神们的工作状态中,能找到一些蛛丝马迹. 有位名叫Ivan Bessarabov (简称"伊万") 的好事者,刚刚统计了各路大佬的代码提交 (git commit) 时间分布 ...
- python连接池框架_Python中的连接池是非常重要的!神级程序员详解!
概述 连接池的作用就是为了提高性能,将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对Server端进行访问.这样 省略了创建连接和销毁连接的过程(TCP连接建立时的三次握手和销毁 ...
最新文章
- 《Linux From Scratch》第二部分:准备构建 第三章:软件包与补丁- 3.1. 简介
- springmvc + springboot + mybatis java b2b2c电子商城系统源码...
- php7 swoole 扩展,PHP7.2加入swoole扩展
- IDS与IPS的区别
- uvc音频传输协议_蓝牙中的三种音频编码:Apt-X、SBC、AAC,请问分别有什么区别?...
- MATLAB 内存容量修改
- 原生js动态为table追加html,JS动态添加Table的TR,TD实现方法
- 用freeze.py打包python程序成可执行程序(linux)
- linux 切换用户_Linux 用户态切换到内核态的 3 种方式
- Jquery 提示插件
- 面对 this 指向丢失,尤雨溪在 Vuex 源码中是怎么处理的
- linux 进程函数替换,Linux使用exec函数实现进程替换的代码分享
- springboot starter工作原理_98,谈谈SpringBoot的工作原理
- 大杂烩 -- 四种生成和解析XML文档的方法详解
- 一文了解下对小微风控策略的优雅调整
- java中sam接口_具有非SAM接口的lambda的Java习惯用法
- 如何对数据目标进行分析
- WebStorm2018.2 破解 激活
- 【hbase】解决海量图片存储
- Flink 常见问题总结