c 有句俗话说:一年精通 三年熟悉 五年了解 十年用过,如果可以把c 程序员分层的话,看看你在第几层?
第0层
掌握基本的c 语法,会写一些基本的if-else,for循环,switch-case等。可以简单的使用c 的ide,把书上的代码一行一行敲上去,会点击run按钮运行程序,可以输出hello world。
第1层
熟悉c 大多数语法,了解面向过程与面向对象编程思想,了解封装、继承、多态的合法使用,了解指针、函数指针、回调函数、异常处理、文件操作、stl的使用,可以解决简单的编译链接报错问题。但缺乏独立思考的能力,甚至都不知道如何提问,一般面向百度编程,熟练掌握ctrl c和ctrl v操作,只要程序达到过预期的结果就已满足,可以简单的做出个demo。
第2层
熟练掌握c 大多数语法,熟练背诵大多数c 面经。了解c 11、c 14、c 17甚至是c 20的新特性,面试技术单点时没什么问题,说起来头头是道,但做起来一塌糊涂,没有从0到1做公司级项目的能力,着重于完成某项子功能,没有设计图纸的能力,可以在现有框架上增删改,代码可读性、可扩展性、边界条件处理、程序性能、编码规范等问题往往不太考虑。
第3层
读过一些经典c 书籍,对stl、boost等经典库可以熟练使用,看过部分经典库的部分源码,了解基本原理,掌握常见的设计模式,掌握c 的好多奇技淫巧,对代码有洁癖,按照编码规范编程,会对边界条件做详尽处理,代码可读性较高。写代码时经常炫技,代码骚气逼人,自认为可以碾压大多数人。然而炫技通常会导致开发周期长,代码膨胀,后期维护难,其他普罗大众通常看不懂这种炫技的代码。
第4层
重剑无锋,大巧不工,不再炫技开发,简单合理的能够完成需求就好。熟练掌握操作系统,编译原理,掌握编译与链接的大多数知识,了解编译器背后的故事,熟练使用各种调试工具,各种性能分析工具,了解内存对齐,知道如何调试内存泄漏问题,如何调试死锁问题,深入理解cpu cache、文件系统、进程与线程、tcp/ip、内存模型等知识,参与开发过系统级的项目开发。动手能力强,接到需求后有自己的想法,可以快速给到实现方案。了解c 的各种方案优缺点,常见的坑以及各种避坑方法。
第5层
从0到1设计开发过系统级、高性能的项目,并被一定量级的用户使用过。不再着重于技术单点的实现方案,完全领悟并灵活使用各种设计模式,更着重于整体架构的设计,即设计那一张工程图纸,给出整体的ag真人游戏的解决方案,追求设计更合理的架构,着重于模块划分是否清晰,着重于高内聚低耦合,着重于系统的健壮性,灵活可扩展性,可以应对大规模需求的迭代与变更。
第6层
混迹于国内国际各种c 开发者大会,各种演讲,分享自己的开发心得,分享架构设计方案,受众生膜拜。例如侯捷、张银奎、吴咏炜、潘爱民等(排名不分先后)。
[图片上传失败...(image-b477ec-1628426161995)]
第7层
c 标准委员会成员(尽管一堆人在喷他们脑袋有坑,但不可否认,他们确实就是顶尖的c 程序员)
第8层
bjarne stroustrup,凡是我们c门子弟,无需多言吧。yyds! c 之父。
最后说几句,学习c 确实挺苦,精通又有什么用呢,面试造火箭,入职不还是拧螺丝嘛!语言可能没有那么重要,我们多数人可能永远也到不了第6层,但我们可以尝试去精通某个领域,例如精通人脸识别、自动驾驶、游戏开发、音视频开发、网络开发、移动端开发相关的业务等。
我们也要着重于提高自己的这三种能力:
- 分析问题的能力
- 解决问题的能力
- 掌控全局的能力