分享

C++开发需要掌握哪些技能?

 码农9527 2021-04-21

 对于一个C编程人员来说,精通C语言是一项基本技能。网上有许多经典文章讨论如何学好C语言,以及C语言的主题。许多人在工作了一段时间后,自认为自己已经掌握了C语言。可以实际工作了,接触的东西也多了,开源项目多了之后,才发现自己的C语言能力太一般了。宏函式不断变化的写法,指针繁复繁复的用法,等等。在编写代码时,应该经常问自己:这种行为是否由C规范定义?假如有,是89还是99?目前我使用的编译支持吗?在这个由C规范定义的程序运行的平台上,行为是否被确定?因此建议大家平时可以多想想这些问题,查一下资料,相信一定会对C语言有更深的了解。

c

    编写UNIX/Linux系统。

    掌握系统编程API是在UNIX/Linux系统上开发程序的一项基本技能。而且这方面的经典书籍都是一些大篇幅的英文书,令人望而生畏。先找一本口碑不错的中文书先看看,了解一下里面都有哪些类型的API。因此,在以后使用时,要仔细阅读经典英文著作中的相关章节,或查阅man手册。另外,如果有时间,你可以学习一些经典的开源项目,看看它们是如何使用这些API的。例如,Redis就是许多人推荐的一个非常好的学习C语言的开源项目。读代码时,您会发现,当将数据保存到文件中时,fsync函数将被使用,然后再深入分析这个函数的功能。这远比单纯看书的效果要好得多。

    网路程式设计及知识。

    在网络方面,需要具备以下三项技能:

    (a)网络协定。每天的工作中,大家接触使用最多的无疑就是TCP/IP协议族了。另外,由于工作领域不同,也可以使用其他协议。比如说,做电信相关的程序开发,平时可能接触的SCTP协议会多些。对这些协议来说,掌握最基本的知识是必须的,其他的边角角知识可以等到使用后再查。例如,TCP协议的“三握手”、“四摇手”、“TIME-WAIT状态”等基本知识点都要搞清楚,其他边角知识学完老不忘也快了,用时google一下更有效。

    (b)Socket程序。《Socket编程》的经典书籍一点也不比《系统编程》的书少,所以可以选择比较薄一点,口碑很好的精读一下,这样基本就能把握五六十分。还有时间还是去看看经典的开源代码吧。以Redis为例,Redis中只有很少的代码用于处理网络连接和通信,并且基本上覆盖了所有通用的UNIX平台,看完之后一定会受益匪浅。

    (c)协议分析工具。snoop(Solaris平台工具),wireshark等等这些工具不仅可以帮助我们获取数据包,还可以分析数据包,这对于debug网络程序是很有帮助的。因此,我们至少应该掌握这些工具的最常用功能。另外,对于开放源代码的工具,我们可以从代码中学到更多。例如,做与SMS相关的项目,可以从wireshark的代码中学习到很多关于分析SMS协议的知识,这有助于开发人员更清楚地了解SMS协议。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多