含泪吐槽学C++的血与泪
C++在各位程序猿眼里并不陌生,但凡学习过C++的人,都极有可能被它曾经蹂躏得不要不要的,而我就是其中一个。
文章目录
- 1 我和C++的那段血泪史
- 2 再次与C++重逢
- 3 我想和你再来一次
- 4 柳暗花明友情推荐
- 5 福利赠书活动
- 6 一个彩蛋
大家好,我是 架构师李肯,那个爱学习、爱劳动的学习委员。
最近C++在业界掀起了一波大浪,那就是TIOBE把年度编程语言颁给了C++。
说实话,我还是挺意外的。
本身,我并不是从事以C++为编程语言的工作岗位,熟悉我的朋友都知道,我是从事嵌入式物联网系统的架构设计,主要的工作编程语言是C语言和汇编语言,而C++此等高级语言,似乎离我还是比较遥远。
但是,就这样的一个意外消息,却让我不禁勾忆起当年,我和C++的那段爱恨情仇,也可以说是一段惨痛的血泪史。
1 我和C++的那段血泪史
我本身在大学里学习的专业是电子科学与技术,专业的本身根本就不是一个纯软件的技术专业,恰好相反,它是一个偏硬件的专业。
我从小就有捣鼓各种电子设备的兴趣爱好,小时候也曾拆坏过家里不少的大小电器,当然啦,为此也挨了不少的打。但是呢,就是这样长此以往培养的兴趣爱好,加上大学专业录取时的阴差阳错,我就是那样意料之外但又理之中地上了第2志愿的【电子科学与技术】专业。
大学的学习生涯是短暂且懵懂的,我依然清晰地记得我的大学第一学期,学习的第一门编程课程叫《C语言程序设计》。
那个时候,湿胸和老师都告诉我们,让你们一上大学就学习C语言编程,可想而言,它对你们的专业有多么地重要,将来到了大三的时候,你们就会明白的。
就凭借着他们这么一顿【忽悠】,我越发对C语言产生了浓厚的兴趣,慢慢开始了解到,将来我们的硬件编程都极有可能要使用C语言来完成的,所以我对这么课程是十分地上心,学习也比较带劲,在班上也基本走在前列,至少有不少同学来找我抄作业(手动狗头)。
一边上着C语言程序设计的专业必修课,另一边,我们还在上着大学生计算机基础课程。这个课程好像也是理工科的学习都是必修课,属于通识培训课程,旨在让学生了解更多计算机相关的基础知识。
而就在这个课程上,我对此课程的授课老师产生了膜拜之意。后来经一打听,原来他是我校计算机软件学院的副教授级别的老师,吹起牛B来也是6得很。他经常跟我们说的一句话是:“这个我就不展开了啊,我要是跟你讲的话,这页PPT我可以给你讲一天!”
好吧,牛皮吹完了,但是我却对他的专业知识的广度非常地认可,觉得能向他学习是一件很荣幸的事情。
于是,正将第一学期快结束的时候,老师放话了:”你们好像都学习了C语言吧?不过,要学编程,还得是面向对象编程爽,要是你们感兴趣的话,可以下学期来报我的专业课程《面向对象程序设计C++语言编程》,包你学得爽!“
没办法,谁让我崇拜呢,于是就这么信了他的gui话,兴致冲冲地报了他的课程,开始了C++的课程学习。
有了C语言的编程基础,说实话,一开始其实是没有太吃力的,毕竟鸡蛋还是母鸡生的,C++的身上时常能看到C的影子。
然而,课程没上几周,老师给我们布置了一个课程作业:
请计算1000!(阶乘),并以合适的方式输出结果。要求使用C++语言来完成。
这一下子给我干蒙了,这啥子啊!1000的阶乘,我的计算机都溢出了,还表示个啥?毕竟有点C语言基础知识的都知道,常规方式压根不可能表示得了这个结果。
就这样,我这个课程实验经过了无数次地请教老师,才勉强交了一份答卷,然后老师给了一个80分,还算满意吧。
只是,课程越往后学,越发现不对劲,开始好多东西搞不清楚了,什么虚函数、什么友元函数,诸如此类的,头都大了。
无奈,自己脑子进的水,吃饱了撑着也要把它排出来。
很快到了期末考,毫无波澜,考试成绩最后拿了一个B(75-84分之间),我的绩点也因此落下了一大截,毕竟当初考C语言,我的成绩可是A+(85分以上+30分的附加题拿18分以上)的呀。
此乃真正的血与泪,被C++折磨的日子结束后,我决定不再跟它玩一块了。Bye-bye !
2 再次与C++重逢
熟悉我的朋友可能知道,最近几个月来,我都在搞一门叫 Matter 的新技术,没错,就是那个 “What’s the matter ?” 的那个matter。
这项技术牛B了,号称它出来要一统物联网的江湖,野心不可谓不大。
以下是它的基础架构图:
当然,这不是它最牛B的地方,毕竟像我们这种架构水平的架构师,也一样可以做成这种应用层、中间层、硬件层相互隔离的架构设计,属于一种业内比较常见的架构模型。只不过在通讯硬件上,它支持了以太网、Wi-Fi,还有Thread,但并没有特别出奇。
真正它牛B的地方在于,各种应用的业务逻辑,把所有生态进行统一化抽象化了,这是一种很厉害的突破。
在当下或者之前,各大云服务厂家都是各自为政,各家生态的智能产品是不可能兼容的,如果你要接入,那你得一家家去过认证对接,而Matter的出现正好打破了这个僵局。
为何他能这么牛B地一统天下,那是因为都是国外的科技巨头公司在牵头搞的,随便拎一个出来都够我们喝一壶了,比如Google、Amazon、Apple等等,都是Matter的核心贡献力量。
Matter的宣传介绍语:
Matter 是由业内巨头公司 Amazon、Apple、Google 联合 CSA 联盟的众多成员公司共同发起的智能家居行业应用层标准,旨在解决通信协议纷繁复杂的碎片化问题,打破多生态系统间的交互壁垒,实现智能设备的无缝通信与协作。
很开心的是,Matter所有的方案实现,除了底层芯片厂商的部分核心代码是闭源的外,所有的Matter协议实现都是开源的。
但是,TM的Matter SDK代码是用C++写的,我的血,我的泪啊,否则又看到了1000的阶乘在脑袋里飘荡!
出道快10年了,搞嵌入式开发头一次要钻入到C++的深水区里,你说我能不头大吗?
3 我想和你再来一次
如果有回头路可以走的话,我愿意再重新好好地学习一遍C++,毕竟它能在编程届持续优秀这么多年,一定有它的独到魅力所在,而且Matter官方既然选择了C++语言为主要编程语言,而没有采用嵌入式编程的常规C语言,大概也是考虑到各式各样的C++特性能够帮助Matter更好、更编辑地实现Matter的核心设计吧。
正如我一个同事也在从事Matter相关的研发工作,他也是从其他语言转过来看C++代码的,他说:“这个Matter里面的C++真的是太难懂了,用到了很多新的特性,如果没有去了解和使用过,压根就不太可能掌握得了。”
而,还有一个民间说法:“国外优秀的程序员都尤其喜欢用C++”。不知道传闻是真是假,反正Matter就这么用了。
当下,我还是特别迫切地需要一个能帮助我们切入学习C++的一个路线,或者说是提纲,以帮助我们不再走弯路。
4 柳暗花明友情推荐
这不,刚好技术圈子里都在交流,本周4(2/16)和本周(2/17),机械工业出版社联合多位业界大佬,一同聊一聊C++的各种功能特性以及C++的未来。参考如下,
总共涉及两个主题:
- 新时代的C++编程语言:畅谈C++特性、C++之困,现代C++20时代
- 重新认识C++:畅谈C++的兴起、衰落与复兴
我相信,听完这两场直播,你一定会对C++有了更多的了解,今后学习C++也许思路就打开了。
好了,记住我们约定的时间,我加入直播预约了,那你呢?
5 福利赠书活动
为了感谢广大粉丝朋友的支持,特举行一次福利赠书活动,这次我们赠送的2本与C++相关的顶尖学习书籍,详细的活动介绍,请点击 阅读原文 来了解。
活动真实有效,请各位朋友放心参加,你们的成长,也是我最大的荣幸,真心希望你们在C++的学习路上不再踩坑。
6 一个彩蛋
最近在玩ChatGPT,我想问一下它,如果是它做这个课程作业,它会怎么做?我们一起来看看答案: