版权信息
书名:C程序员从校园到职场
ISBN:978-7-115-38849-0
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
内容提要
要成为一名合格的C程序员,仅仅依靠课堂上的所讲所学是远远不够的,实际的软件开发对从业者提出了更高的要求。本书重在讲述从学生成长为一名职业化C程序员的必备技能和关键要素。
本书共11章,从C语言的发展历程讲起,然后分析了学校和职场的不同,并结合丰富的代码实例讲述了程序的样式、变量和函数、内存操作、文件、指针和结构体、算法和协议、程序重构、SQL语句和Shell命令以及程序问题排查等诸多C程序开发中的典型问题。
本书适用于在校计算机相关专业的学生阅读,也适用于刚入职的应届毕业生参考。
前 言
在刚入职的时候,我与一个工作多年的老员工之间有以下一番对话。
老员工:“你的C语言功底如何?”
我:“还可以,考试考了九十多分。”
老员工:“你觉得编码规范重要吗?”
我:“什么编码规范?我之前没听说过呢。”
老员工:“你觉得把代码写完并运行通过,你的工作就算结束了吗?”
我:“差不多吧,在学校里面程序运行没问题就OK了。”
老员工:“对于测试,你是怎么理解的?”
我:“测试就是看程序运行是否正常,看输出结果是否正确。”
也不知道当时那位老员工听了我的回答,是什么感受。如今回忆起来,那时的我对自己将要从事的工作的理解是很不成熟的。
本书写作目的
在工作的过程中,我发现我们在学校里面学到的很多东西比较片面肤浅,根本达不到岗位的要求。像编码规范、研发流程等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要。
在学校里面,我们欠缺的教育主要包括以下几个方面。
第一,对编码规范的要求。在计算机编程课上,老师只要求学生能够编写程序实现既定的功能即可,几乎不会对编码规范提出要求,而编码规范是一般软件项目中最基本的要求。
第二,对动手能力的要求。学校里面学完一门课程之后,只要考试通过就行了,至于这门课程有什么实际的用途,很少有人关心。这就导致很多人考试得了高分,但让他们动手编写一个程序却出现了困难。一般的软件公司对个人的动手能力是十分看中的,这就是为什么他们喜欢招有工作经验的人的原因。
第三,对研发流程的讲授。软件开发并不仅仅是编写代码那么简单。学校里的老师只会教学生怎样写出代码,但很少会教他们一个实际的软件项目是怎么回事。其实,编码只是软件研发中一个很小的部分,而诸如设计、测试等还会占据很大一部分时间。
第四,对团队精神的培养。老师一直教导我们要独立完成作业,考试的时候不要交头接耳。而公司里面,我们是在一个团队里面工作,我们要与各个成员合作来完成任务或解决问题。在很多时候,我们编写的模块要与其他模块配合来实现特定的工作,这也是在考验团队之间的协作是否有默契。
第五,对情商的培养。学校的一个主要任务是让学生学到专业知识,让学生有一技之长,除此之外的其他方面都是次要的。但在工作岗位上,除了工作,我们要与不同的人打交道,还会遇到很多问题,这些都是对个人情商的考验。很多人在学校里面表现得很优异,但在工作中一遇到困难就怨天尤人、哀声叹气的,这就是因为缺少在情商方面的锻炼。
当然,我也是一样,在走出校门的时候踌躇满志,以为世界尽在我手中。但在工作上遇到一系列问题之后,我逐渐改变了自己对软件开发的很多看法。作为过来人,我有义务将所学到的经验分享给大家,让大家在软件开发这一条道路上走得更顺畅一点。
本书组织结构
本书主要包括以下章节的内容。
第1章 概述。本章对C语言的发展历史和主要特点进行了简单的介绍,之后对实际工作中软件开发工程师常用的工具软件进行了详细的说明。
第2章 学校到职场。走出校门,意味着一个漫长的学习过程的开始。本章首先以一个不规范的程序代码为例来让大家意识到自己所学C语言知识的不足;然后讲述了在从事实际的软件开发工作之前,我们需要破除哪些错误观念;最后描述了除专业技能之外的一些影响个人工作和发展的技能。
第3章 程序的样式。程序样式是给代码阅读者的第一印象。本章对头文件(.h文件)和源文件(.c文件)的样式,空格、空行、大括号和注释的使用进行了详细的描述。
第4章 变量和函数。本章首先介绍了基本数据类型的重定义;然后对变量和函数的命名进行了详细的说明;最后用程序示例讲解了一类特殊变量——静态变量的用法。
第5章 内存操作。本章详细描述4组与内存操作相关的函数的用法,它们是:memset和memcpy、strcat和strncat、strcpy和strncpy、strcmp和strncmp。
第6章 文件。文件在实际的软件开发中有着极其广泛的应用,本章首先介绍了常用文件操作函数及其用法,然后描述了与实际工作联系紧密的配置文件和makefile文件的使用方法。
第7章 指针和结构体。指针是学习C语言的难点所在,熟练掌握指针和结构体的用法是对每个软件开发工程师的基本要求。本章基于实际的程序,对指针和结构体进行了详细的描述。
第8章 算法和协议。算法是实现软件需求的方法,协议是多个模块通信的基础。本章分别详细介绍了软件项目实践中的算法和协议。
第9章 程序重构。对程序进行重构,几乎是每个软件开发工程师都会遇到的问题。本章介绍了程序重构的原因、原则和流程,并用实际的程序示例讲解了重构的整个过程。
第10章 SQL语句和Shell命令。对于经常与数据库打交道的软件,需要在程序中嵌套SQL语句。而对于基于Linux的程序开发者来说,几乎不可避免地要与Shell命令打交道。本章介绍了在C语言中执行SQL语句和Shell命令的方法。
第11章 程序问题排查。程序难免会出现问题,而在解决问题的过程中,程序开发者的能力也得到了锻炼和提升。本章首先介绍了日志,然后用4个示例来详细描述了程序问题排查的整个过程。
本书特色
本书组织架构清晰,内容简洁明了,主要有以下特色。
第一,各个章节内容条理清晰,通过丰富的图形和示例来讲述,以更加直观的方式来加强读者对C语言的理解。
第二,书中有诸多的源代码,均是严格按照编码规范进行书写,这有利于读者参照它们来规范自己的相关程序代码。
第三,本书并不局限于对C语言的讲解,同时也对实际的软件开发项目(如测试、问题排查等)进行了描述。读者可以通过本书,对软件开发有一个全面的了解。
本书目标读者
作为一本入门级的软件开发指南,本书的目标读者主要包括以下3类。
第一类 在校计算机专业学生。通过对本书的学习,可以加强对相关课程的理解,并提前对软件开发工作有一定的认识。
第二类 计算机专业应届毕业生。本书可以为你的面试或培训添砖加瓦,让你在就业或求职的道路上快人一步。
第三类 刚步入职场的应届毕业生。通过对本书的阅读,你可以提前了解软件开发项目对编程规范的要求以及项目中存在的一些问题,让你的工作更加得心应手。
作者联系方式
在阅读本书的过程中,读者有任何的疑问或建议,都可以通过以下方式与本人交流:
CSDN博客:http://blog.csdn.net/zhouzhaoxiong1227?viewmode=contents
独立博客:www.zhouzhaoxiong.com
邮箱:zhouzxi@126.com
QQ(微信):245924426
微博:http://weibo.com/zhouzxi?topnav=1&wvr=5
IT行业发展到今天,软件种类繁多,不同种类的软件之间差别相当大,没有一种规范适用于所有的软件开发项目。而本书中的内容提炼于作者本人所从事的软件开发工作,因此必然会存在局限性。加之作者本人的水平有限,本书中的内容难免会有所纰漏,还请各位读者和同行海涵。对于大家针对本书提出的宝贵的意见,作者将洗耳恭听并尽量采纳。大家可以通过上面的任何一种方式表达你们的建议,作者保证会在第一时间给予回复。
“活到老,学到老”,这句话对于软件工程师来说,是再恰当不过的了。那就让我们一起学习,一起经历工作中的酸甜苦辣,一起书写不一样的程序员人生吧!
雄关漫道真如铁,而今迈步从头越!