软件工程(C语言实践篇)学习心得

赵越 + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006


对软件工程的理解

    一门学科,比如土木工程,机械工程等,一旦被提高到工程的高度,就意味这不仅仅只是一门科目的学习,需要多学科交错,软件工程是以有关的自然科学和技术科学为理论基础,结合生产实践中的技术经验,研究和解决在设计,开发,测试,维护软件中的全部理论和实际问题。软件工程不仅仅是简单的写代码,写代码仅仅是一个中间过程,前期和后期都要大量的工作,这些工作都是为了使写代码更加方便和有效。

实验报告

实验一: 写一个hello world小程序

实验二:命令行菜单小程序V1.0

实验三:内部模块化的命令行菜单小程序V2.0

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8

实验七:将menu设计为可重用的子系统

1. 线上学习 

     通过对线上课程的学习,我首先大致了解了什么是软件工程,以及程序编程的一些思想和套路。像孟老师说的一样,程序由数据结构和算法组成,软件工程也应该有他的组成方式。实践出真知,孟老师利用C语言和Linux环境循序渐进地讲述了一个简单的Linux命令小程序的设计过程,使我们同学对软件工程产生了更直观的认识。

1.1课程一

      通过第一节课程的学习,我了解了Linux的一些接触命令,学会了使用gcc编译程序,因为大多数服务器操作系统都是Unix类操作系统,所以如果想成为一个专业的程序员,就必须掌握Unix类的操作系统。配套的实验一比较简单,写一个hello world。除了线上使用C语言提交实验外,线下老师又要求我们用Go语言重新写一遍实验,Go语言在语法和性能上与C语言有很大不同。

1.2课程二

    第二节开始编写一个开源的内置命令行小程序,这次实验逻辑比较简单,但是我更加熟悉了一些代码规范,比如代码的缩进以及括号的对齐。

1.3课程三

    第三节开始了模块化的编程,印象最深的两个原则是KISS原则和不要和陌生人说话原则,即一个函数只能实现一个功能,一个对象对其他对象应该有尽可能少的了解。另外还有一个二八原则,这一点在工程化编程中是个很普遍的现象,参与工程实践后的我很有感触。实验三将小程序的业务处理和数据处理分开,从而体会到了函数封装模块化对于可重用的重要性,以及代码设计规范的一些方法,初步了解了业务逻辑和数据存储分离的思想方法。

1.4课程四

    模块的好处就是包容变化。第四次实验将一个程序模块化,分别为接口、功能函数以及主函数,这将有利于以后代码的维护。我学习到了接口的五个要素和接口的分类、接口设计与模块之间的耦合程度的关系,更加深入的理解了接口的概念,理解程序模块化的思想。复习了链表的使用,以及深入的认识到了数据结构在编程中的重要作用。另外,Go语言和C语言在指针上有很大差别,比如Go中变量名不等于数组开始指针,而且Go语言没有头文件的格式,所以结构体也必须写到同文件夹下面的子文件里。

1.5课程五

     第五节课利用callback函数在菜单中查询列表,是的接口更加通用。一个代码模块的用户是开发者,而不是最终的使用者。本次试验通过使用回调函数将程序中的链表实现兼容性更好,而且做到了信息隐藏,将接口放在用户不易接触到的地方,是程序功能性更强。另外,在Go语言中不存在无类型指针,需要用interface来代替。

1.6课程六

    第六节课主要讲述了函数的可重用性及线程安全,可重入的函数不一定是线程安全的;但是不可重入的函数一定不是线程安全的。每个线程都有独立的调用堆栈,除此之外进程的所有资源都是线程所共享的。如果线程同时访问一个函数并改变了全局变量,则会发生错误,这样的函数就是不可重入函数。不可重入函数可以通过加入互斥锁的方式变为可重入函数。

1.7课程七

    通过本次实验学会了使用make命令编译程序,通过为menu子系统设计接口,支持带参数的命令,使得程序更具有可重用性。

2.线下学习

    线下老师结合一篇关于Google软件工程实践的文章向同学们布置了详细地任务,让我们自愿认领与研究。谷歌作为全球最成功的网络公司之一,对软件代码的开发、存储与维护都有着成熟的流程与体系。这篇文章大概讲述了谷歌软件开发、项目管理、人员管理等方式。谷歌采用了Blaze的分布式构建系统。而在代码审查方面,对主源代码存储库的所有更改必须至少由另一位工程师审查。听了各位同学的ppt讲解之后,我逐渐明白了作为一个大公司对代码管理与审查的复杂性,认识到自己的学习还停留在最基本的知识体系当中,如果想要得到真正的实践还是需要在工作中逐渐积累。

3.收获与遗憾 

    作为一名转专业的同学,学习过这门课程之后,我终于明白了软件工程具体是做什么的,都有哪些流程,也懂得了作为专业的软件开发人员所应该具备的基本素质和技能。学会了Go语言的语法和使用,对比了Go语言和C语言开发的各自特点。遗憾是没有机会参与具体的工程实践中,没有得到与他人合作的机会,在做课上作业后没有认真批改并与他人的成果作比较。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,408评论 4 371
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,690评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,036评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,726评论 0 221
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,123评论 3 296
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,037评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,178评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,964评论 0 213
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,703评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,863评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,333评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,658评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,374评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,195评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,988评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,167评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,970评论 2 279

推荐阅读更多精彩内容