含泪吐槽学C++的血与泪

news2024/11/17 16:21:27

含泪吐槽学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 !

关于泪流满面的说说句子【精选15句】

2 再次与C++重逢

熟悉我的朋友可能知道,最近几个月来,我都在搞一门叫 Matter 的新技术,没错,就是那个 “What’s the matter ?” 的那个matter。

这项技术牛B了,号称它出来要一统物联网的江湖,野心不可谓不大。

以下是它的基础架构图:

image-20230216020835331

当然,这不是它最牛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++的一个路线,或者说是提纲,以帮助我们不再走弯路。

image-20230216023728889

4 柳暗花明友情推荐

这不,刚好技术圈子里都在交流,本周4(2/16)和本周(2/17),机械工业出版社联合多位业界大佬,一同聊一聊C++的各种功能特性以及C++的未来。参考如下,

总共涉及两个主题:

  • 新时代的C++编程语言:畅谈C++特性、C++之困,现代C++20时代
  • 重新认识C++:畅谈C++的兴起、衰落与复兴

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LOfPYwVU-1676489538547)(http://share.recan-li.cn/bed/2023/02/16/΢��ͼƬ_20230216023216.jpg?my_wx_id=721317716)]

我相信,听完这两场直播,你一定会对C++有了更多的了解,今后学习C++也许思路就打开了。

好了,记住我们约定的时间,我加入直播预约了,那你呢?

5 福利赠书活动

为了感谢广大粉丝朋友的支持,特举行一次福利赠书活动,这次我们赠送的2本与C++相关的顶尖学习书籍,详细的活动介绍,请点击 阅读原文 来了解。

活动真实有效,请各位朋友放心参加,你们的成长,也是我最大的荣幸,真心希望你们在C++的学习路上不再踩坑。

image-20230216025523535

6 一个彩蛋

最近在玩ChatGPT,我想问一下它,如果是它做这个课程作业,它会怎么做?我们一起来看看答案:

image-20230216015901198

image-20230216020037730

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/348977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FLUXNET数据下载具体步骤

一、FLUXNET数据介绍 全球长期通量观测网络概念最早起源于1993年,由国际地圈-生物圈计划首次提出,国际科学委员会在1995年的La Thuile研讨会上对此概念进行正式讨论,在这次会议上,通量观测委员会讨论了进行长期通量观测的可能性以…

KubeSphere

文章目录一、概述二、最小化安装 KubeSphere2.1 前提2.2 安装 nfs 服务器一、概述 KubeSphere是在Kubernetes之上构建的以应用为中心的企业级分布式容器平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时&#…

超详细,Java 设计模式汇总(三)

装饰者模式 装饰者模式一般指装饰模式。 装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。 装饰者模式(Decorator Pattern)允许向一个现…

springboot+vue简单对接支付宝完整流程

源码 前端 vue-demo https://www.aliyundrive.com/s/dmnY8G6N6RM 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 后端 aliPay https://www.aliyundrive.com/s/H2JFBjGWuf2 …

JVM04 堆

一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 一个JVM实例(一个Runtime)只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大…

ios上架及证书最新申请流程

ios上架及证书最新申请流程在使用hbuilderx或apicloud等uniapp框架开发app的时候,需要安卓证书或ios证书,假如是开发ios应用,打包成ipa包后,还需要将这个ipa上架到app store。苹果官网推荐的方法中,生成ios证书和上架i…

字节跳动青训营--前端day9

文章目录前言PC web端一、 前端Debug的特点二、 前端Debug的方式1. 浏览器动态修改元素和样式2. Console3. Sorce Tab4. NetWork5. Application6. Performancee7. Lighthouse移动端调试IOSAndroid通过代理工具调试前言 仅以此文章记录学习。 PC web端 一、 前端Debug的特点 …

Redis学习【6】之BitMap、HyperLogLog、Geospatial操作命令 (1)

文章目录前言BitMap 操作命令1.1 BitMap 简介1.2 setbit1.3 getbit1.4 bitcount1.5 bitpos[pos:position]1.6 bitop1.7 应用场景二 HyperLogLog 操作命令2.1 HyperLogLog 简介2.2 pfadd2.3 pfcount2.4 pfmerge2.5 应用场景三 Geospatial【地理空间】操作命令3. 1 Geospatial 简…

Zynq非VDMA方案实现视频3帧缓存输出,无需SDK配置,提供工程源码和技术支持

目录1、前言2、VDMA的不便之处3、FDMA取代VDMA实现视频缓存输出4、Vivado工程详解5、上板调试验证并演示6、福利:工程代码的获取1、前言 对于Zynq和Microblaze的用户而言,要想实现图像缓存输出,多半要使用Xilinx推荐的VDMA方案,该…

【Ubuntu版】VScode配置Python开发环境

一、相关介绍 1. 快捷键 快捷键解释说明ctrlp全文搜索文件 二、VSCode连接远程服务器开发 1. 安装remote插件 2. 安装Python插件 3. config配置 Host myServerHostName 172.x.x.xUser rootPort 6005参数解释 Host,自定义名称;HostName,远…

Kafka使用规范(纯技术和实战建议)

概述: 1、kafka使用规范主要从,生产、可靠性、和消费为轴线定义使用规范,另外Kafka建议核心业务系统不要使用(对数据可靠性要求高),因为Kafka高效性能源于批量设计思想,要充分利于Kafka高效性能…

【Python小游戏】智商爆棚,推荐一款益智类亲子娱乐首选—某程序员老爸:成语编成填空“游戏”,贪玩女儿1天牢记500词(厉害了我的Python)

前言 成语填空想必大家都是十分熟悉的了,特别是有在上小学的家长肯定都有十分深刻的印象。 在我们的认知里看图猜成语不就是一些小儿科的东西吗? 当然了你也别小看了成语调控小游戏,有的时候知识储备不够,你还真的不一定猜得出…

嵌入式STM32F767BGT6规格STM32F767BIT6引脚图 32Bit MCU+FPU

ARM Cortex-M7 STM32 F7 Microcontroller IC 32-Bit 216MHz 1MB (1M x 8) FLASH 208-LQFP (28x28)产品信息型号:STM32F767BGT6 / STM32F767BIT6类型:ARM微控制器 - MCU封装:LQFP-208明佳达电子下面是产品中文规格,仅供参考&#x…

云帆文档易用性功能设计之文档查阅

云帆文档管理系统是一款基于 SpringBootVue 开发的电子文档管理系统。系统集成了用户管理、角色管理、部门管理、文档管理、新闻管理、问答管理、通告管理、文档全文检索。 支持常用的 office 文档,视频文件、PDF 文档在线预览,下载,笔记&…

ChatGPT中文免费小程序(AI GPGT智能助手) - ChatGPT国内小程序版在线使用

ChatGPT中文网是一个面向中国用户的聊天机器人网站,旨在为国内用户提供一个自然的环境、有趣、实用的聊天体验。它使用最新的自然语言处理技术来帮助用户更好地理解他们的聊天对话,还可以帮助用户解决日常生活中的问题,提供有趣的谈话内容以及…

最新版EasyRecovery数据恢复软件使用测评介绍

我们在逐渐适应信息电子化的同时,也有一些潜在的麻烦接踵而来,其中较为常见的就是文件和数据的保存问题。显然,设备的存储空间是有限的,这就不可避免地会出现数据被删除、覆盖或丢失的现象,如果丢失的是重要数据&#…

【MyBatis】源码学习 01 - 泛型解析器 TypeParameterResolver

文章目录前言参考目录问题引入流程分析TypeParameterResolver#resolveReturnTypeTypeParameterResolver#resolveTypeTypeParameterResolver#resolveParameterizedTypeTypeParameterResolver#resolveTypeVar前言 最近结合着源码书学习 MyBatis,毫不夸张的说&#xf…

Kubernetes基本概念与组件

Kubernetes基本概念与组件 基本概念 Kubernetes 中的绝大部分概念都抽象成 Kubernetes 管理的一种资源对象,下面我们一起学习一下常遇到的一些资源对象: Master:Master 节点是 Kubernetes 集群的控制节点,负责整个集群的管理和控…

Camera | 4.瑞芯微平台MIPI摄像头应用程序编写

前面3篇我们讲解了camera的基础概念,MIPI协议,CSI2,常用命令等,本文带领大家入门,如何用c语言编写应用程序来操作摄像头。 Linux下摄像头驱动都是基于v4l2架构,要基于该架构编写摄像头的应用程序&#xff…

Java 反射深入浅出

Java 反射深入浅出📈 反射的概述:📑 Java Reflection(反射) 被视为动态语言的关键,Java并不是动态语言,但因为反射Java可以被称为准动态语言 反射机制允许程序在执行期 借助于Reflection API取得任何类的内部信息&a…