假如 C++ 是一只箭,你会用它来射哪只雕?


假如 C++ 是一只箭,你会用它来射哪只雕?文章插图
作者 | Amazing10
来源 | 业余码农(ID:Amateur_coder)
头图 | CSDN 下载自东方IC看到标题 , 你可能不太明白是什么意思 。 不要着急 , 看到最后你就明白啦 。
我相信很多人接触编程都是源于大学期间的那堂 C++ 语言程序编程 , 但是这门课却只告诉了你编程语言是什么 , 却没告诉你要怎么去熟练掌握编程 。
所以 , 不可避免的是许多人在毕业前夕才发现虽然学会了 C++ , 但是好像却不知道能干什么 , 能找什么样的工作 , 能去什么样的公司 。 所以呢本文就从 C++ 的角度出发 , 谈谈我对 C++ 这门语言的理解 。
咱这回不去谈什么复杂的应用场景 , 也不去聊语言底层的优化特性 , 就说说在大学里学了 C++ 出来到底能干啥 。 当然了 , 由于 C 语言跟 C++ 亲密的关系 , 咱就混淆一并讲了 , 道理是差不多的 。
假如 C++ 是一只箭,你会用它来射哪只雕?文章插图
实验室开发不敢说 C++ 是世界上最好的语言 , 但敢说 C++ 绝对是工科生中的第一大语言 。 暂且不说计算机专业 , 很多工科专业 , 比如电信、电气、通信等专业 , 基本上正常的学习中都会使用到 C++ 。
甚至是我像我这个学生医的 , 本科硕士几年基本都是在写 C++, 最后校招也是靠 C++ 拿到的大厂 offer。 可以说 , 我对 C++ 还是有很深的感情的 。
都说 C++ 兼具面向过程以及面向对象的特性 , 既拥有比较优秀的运行速度 , 又有良好的大型项目开发能力 , 那简直可以制霸高校实验室了 。 当然我们知道 , 另外一门同样在高校实验室里与 C++ 不相上下的语言 , 就是 Matlab 了 。
像我研究生期间就是左手 Matlab试探 , 右手 C++ 优化 。 论文专利什么的就靠这两种语言双管齐下 。 还记得在实验室里 , 基本所有的算法都是用 C/C++ 写的 , 包括各种图像处理、信号处理以及数据分析的算法 。
最开始就学 C++ 的基本都是老理工男了 。 就算指针再怎么难理解 , 虚函数表再怎么无情 , 也磨不灭我们这些工科生对编程的热情 。
假如 C++ 是一只箭,你会用它来射哪只雕?文章插图
后端开发不过等到真正要找工作的时候 , 就不是那么回事了 。 听说现在由于算法岗已经是诸神黄昏了 , 导致一大批人冲向了后端开发 。
而主流的后端开发语言就那么几种 , 以 Java、C++ 领衔 , Python和Go紧跟其后 。 作为写了这么多年的老 C++ coder了 , 哪能不去凑个热闹 。
所以呀 , 学了 C++ 之后 , 第一选择当然就是去面试后台开发的岗位啦 。 只不过我们都常说一句话 , 语言都不是最重要的 。 那对于学了 C++ 想找后端开发的同学而言 , 什么最重要呢?
其实软件开发工程需要掌握的技能不外乎那么几点 , 各种经验分享和面经都已经说烂了 。 但是那些只是大的方向 , 具体涉及到的概念和技术点非常多 , 在这里也没办法全部罗列 。 总的来说 , 想通过 C++ 找一份合适的后端开发工作 , 我建议可以从以下几个方面来提升自己:
一、扎实的编程基础这个基础扎实首先意味着你比较熟悉 C++ 这门语言了 , 知道不同版本的语言特性(比如 C++11以及新出的C++20 的区别) , 对常见的语言机制(比如多态、虚函数表、模板等)的底层有自己理解 。
虽然说不看重你用什么语言 , 但是最起码你得比较熟练的使用一门语言吧 。 怎么才算熟练呢 , 大概 C++底层机制、多线程编程、跨平台编程这些你都需要有所了解吧 。
除此之外 , 编程能力的素养还体现在算法思想和数据结构的理解上 。 毕竟程序的基础就是算法和数据结构嘛 。 所以一些基本的数据结构 , 比如链表、数组、二叉树、队列之类的 , 还有一些基本的算法思想 , 比如贪心、分治、动态规划等都最好需要好好掌握一下 。
二、系统的理论知识这个就是科班与非科班比较明显的差距所在了 。 很多非科班的同学其实编程能力很强 , 但是由于没有接受过系统的理论学习 , 所以在理论学习上会比较吃亏 。 而后端开发涉及的东西比较多 , 从网络到性能再到架构 , 都需要系统的计算机理论来支撑的 。
所以如果连计算机网络、操作系统、计算机组成原理、编译原理这些书都没见过的同学 , 需要赶紧买几本回来压压惊了 。
三、后端基础想去做后端开发 , 起码得知道后端是什么吧 。 这就意味着你得知道一些基本的软件工程、软件架构、设计模式等知识 。 同时 , 搞个后端哪能不懂数据库呢 , 那你不得再学些诸如 MySQL、Redis等数据库的基本操作吗?