博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何成为一名合格的 C/C++ 开发者?
阅读量:4120 次
发布时间:2019-05-25

本文共 1923 字,大约阅读时间需要 6 分钟。

640?wx_fmt=jpeg

本文选自 | Chat-《如何成为一名合格的 C/C++开发者》

作者 | 范蠡

责编 | Linse

首图 | 《龙珠》

在大多数开发人员的认知中,C/C++ 是一门非常难学的编程语言,很多人知道它的强大,但因为“难”造成的恐惧让很多人放弃。在我看来,C/C++ 一旦学成,其妙无穷,就像武侠小说中的“九阳神功”一样,有了这个基础,学习任何语言和编程技术都非常快速!

本文就为大家分享我学习 C/C++ 的经验,不少人都说看完这篇文章感觉醍醐灌顶想一看再看,希望你也能有所收获!

01

C/C++ 当前的应用领域

通常情况下,C++ 可以看成是 C 的一个超集

C 语言目前主要用于像操作系统一类偏底层的应用开发,包括像 Windows/Linux 这样的大型商业操作系统,以及嵌入式操作系统、嵌入式设备上的应用,还有一些开源的软件,也会选择 C 开发。

我们再来说说 C++,C++ 的应用领域目前有三大类:

第一类就是我们目前见到的各种桌面应用软件,尤其 Windows 桌面软件,如 QQ、安全类杀毒类软件、各种浏览器等;

另外就是一些基础软件和高级语言的运行时环境,如大型数据库软件、Java 虚拟机、C# 的 CLR、Python 编译器和运行时环境等;

第三类就是一些业务型应用软件的后台,像游戏的服务器后台,如魔兽世界的服务和一些企业内部的应用系统。

02

C++ 语言基础与进阶

2.1 基础:

这里说的基础不是狭义上的 C++ 语言基础,而是包括 C++ 开发这一生态体系的基础,笔者认为的基础包括:

  1. C++ 语言本身熟练使用程度。

  2. 必须结合一个具体的操作系统平台,所以得熟悉某个操作系统平台的 API 函数,比如 Linux,以及该操作系统的原理。

  3. 网络通信,网络通信在这里具体一点就是 Socket 编程。

说了这么多,你可能会觉得很抽象。举个具体例子,假设我们现在要开发一个类似电驴这样的软件,软件界面如下图:

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

如上图所示,假设操作系统选择 Windows,使用语言使用 C++,这款产品的实现技术分为 UI 和网络通信部分,下面将详细介绍这两部分。

UI 部分

无论你是在阅读别人的项目还是需要自己开发这样的项目,在确定了这款软件使用的 UI 库,您就需要对 Windows 的窗口、对话框、消息产生、派发与处理机制进行了解。

接着,根据上图中的软件功能,大致分为三大模块,即资源、下载和分享。这三大块是可以使用一个 Windows Tab 控件去组织,这个时候您需要了解 Windows Tab 控件的特性。

网络通信部分

网络通信部分,主要有两大块,第一个是程序启动时,与服务端的交互;第二个就是文件下载与分享的 P2P 网络。

2.2 进阶:

如果您达到了我上面说的三点后,可以再找一些高质量的开源项目去实战一下。需要注意的是,最好找一些没有复杂业务或者您熟悉其业务的开源项目(如开源的 IM 系统)。

我个人学习一套陌生的开源项目时,总是喜欢将程序用调试器正常跑起来,然后再中断下来,统计当前的线程数目,然后通过程序入口 main 函数从主线程追踪其他工作线程是如何创建的;接着,分析和研究每个线程的用途以及线程之间交互的,这就是先整体把握,然后找感兴趣的细节去学习

03

关于 C++ 的面试

关于 C++ 面试,面试的要求到底是侧重代码量、项目经验,还是侧重操作系统、数据结构这种基础知识?

如果你是想进入大型互联网公司的应届生:

应该优先好好准备算法和数据结构知识以应对面试,这是大型互联网公司面试频率最高的考察范围

如果是社会人士参加的 C++ 职位的面试:

如果是大型互联网公司,虽然社招问的更多的是项目经验,但适当准备一些基础的算法和数据结构知识也是非常有用的。

另外,C++ 是一门讲究深度的编程技能,对于有一定工作年限的面试者,面试官往往会问很多原理性的细节,这就要求广大 C++ 开发者在平常多留心、多积累、多思考技术背后的原理

以上文章摘自我在 GitChat 上发表的一场线上交流的分享,原文提供了我十几年来工作经验的分享和更详细的学习建议,相信不论是学生党还是工作党都能让你收获颇丰!!

扫码就能订阅这场 Chat 的完整原文

还可以到我的读者圈来提问,一起交流~

640640640

640?wx_fmt=jpeg

一旦进入社会开始工作以后,所有的路和目标都要靠我们自己走出来。有时候我们会迷茫,并不是我们没有激情再去奋斗,而是我们需要一座座灯塔来指明方向,虽然路都是自己摸索出来的,但正因为有这些前辈们的经验参考,才能使我们站在巨人的肩膀上,看得更远,走得更远!

点击阅读原文,订阅这场 Chat ,获得我十几年的编程经验!

转载地址:http://rzspi.baihongyu.com/

你可能感兴趣的文章
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第四章 - 程序计数器
查看>>
第七章 - 本地方法栈
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
JDBC核心技术 - 下篇
查看>>
一篇搞懂Java反射机制
查看>>
【2021-MOOC-浙江大学-陈越、何钦铭-数据结构】树
查看>>
MySQL主从复制不一致的原因以及解决方法
查看>>
RedisTemplate的key默认序列化器问题
查看>>
序列化与自定义序列化
查看>>
ThreadLocal
查看>>
从Executor接口设计看设计模式之最少知识法则
查看>>
OKhttp之Call接口
查看>>
application/x-www-form-urlencoded、multipart/form-data、text/plain
查看>>
关于Content-Length
查看>>