卡夫卡相关专利
这次先不说什么复杂的应用场景或者语言底层的优化特性。下面就说说大学学完C能做什么吧。当然,由于C语言和C的密切关系,我们会混淆在一起讲,道理也差不多。
1实验室的发展
我不敢说C是世界上最好的语言,但C基本上是工科学生中的大语言。计算机专业就更不用说了,很多工科专业,比如电信、电气、通信等专业,正常学习基本都用C。
据说C既面向过程又面向对象,运行速度优秀,大型项目开发能力好,简直可以称霸大学实验室。当然,我们知道大学实验室里另一种可以和C媲美的语言是Matlab。
比如我读研究生的时候,左手试Matlab,右手优化C。论文专利等等都要靠这两种语言。我还记得在实验室里,几乎所有的算法都是用C/C写的。
开始学C的大多是老理工男。指针再难懂,虚函数表再无情,也浇不熄我们工科生对编程的热情。
2后端开发
但是说到找工作,就不是这样的了。据说现在是黄昏因为算法帖,导致大量的人涌向后端开发。
主流后端开发语言只有几个,以Java和C为首,其次是Python和Go。作为一个写了这么多年的老程序员,怎么能不去凑热闹呢?
所以学完C,首选当然是面试后台开发的岗位。只是我们总说语言不是最重要的。学过C,想找后端开发的同学,最重要的是什么?
其实软件开发工程需要掌握的技能就那么几个,各种经验分享和面授都已经烂了。但那些只是大方向,涉及到很多概念和技术点,这里没办法一一列举。总的来说,如果你想通过C找到一份合适的后端开发工作,我建议你可以从以下几个方面提升自己:
第一,扎实的编程基础。
这个扎实的基础首先意味着你熟悉C语言,知道不同版本的语言特性(比如C11和新C20的区别),对常见的语言机制(比如多态、虚函数表、模板等)有自己的理解。).
虽然用什么语言并不重要,但至少要熟练使用一门语言。如何做到精通?你需要对C底层机制,多线程编程,跨平台编程有所了解。
此外,编程能力的素养还体现在对算法思想和数据结构的理解上。毕竟程序的基础是算法和数据结构。所以最好掌握一些基本的数据结构,比如链表、数组、二叉树、队列等等,以及一些基本的算法思想,比如贪婪、分而治之、动态规划等等。第二,系统的理论知识。
这就是普通班和非普通班的明显差距。很多非专业的学生,其实编程能力很强,但是因为没有接受过系统的理论学习,所以在理论学习上会比较吃亏。后端开发涉及很多东西,从网络到性能到架构,都需要系统的计算机理论的支持。
所以,连计算机网络、操作系统、计算机组成原理、编译原理这些书都没看过的同学,需要赶紧买几本书来压压惊。
第三是后端基础。
想做后端开发,至少要知道后端是什么。这意味着你要了解一些软件工程、软件架构、设计模式等基础知识。同时,有了后端怎么可能不懂数据库?那你不是要学一些MySQL,Redis等数据库的基本操作吗?
当然,在这里,可能是入门级。当你真正开始后端开发的时候,微服务、中间件(Kafka/Zookeeper/Hadoop等相关概念和技术的学习。)都得提上日程。
当然,对于学校招生来说,由于缺乏大型线上项目的经验,对后端基础的要求不会太高,更多的还是看编程能力和计算机理论基础。但如果你是已经工作的学生,想转行,后端基础还是会看重的。
在我看来,这三点是目前互联网公司比较重视的地方,大家可以反思一下自己是否有这样的能力。如果没有,可以抓紧时间好好准备。
3客户端开发
毕竟C是一门非常成熟的语言,所以除了后端开发,它还有很多其他的开发岗位可以选择。自然是客户端开发。
相信大部分学C的同学都用过C写桌面软件。当时估计还在用MFC,在代码本上敲敲就能写出比较简单的界面。所以如果不想做后端,可以找c的客户端开发工作。
然而,客户并不容易。做客户端也需要扎实的编程基础和计算机理论基础,可能还需要熟悉Windows/C编译链接机制、QT客户端开发技术体系、Windows消息机制等技术。
所以,如果你是学C的,不在乎行业内莫名其妙的工作歧视链,找个客户端开发的工作也是很不错的。只是和后端开发相比,你可能需要重新审视客户端的角色。