从大一接触C语言开始,世界就以一种全新的方式向我展开了。
说起来,大一刚开始接触C语言的时候,完全处于懵逼状态,根本不知道这玩意是啥,毕竟我们河南的孩子在高考之前基本上就只有一个目标:考上大学,整天都是语数外、物化生……根本不知道编程是什么意思,由于从来没有接触过,上课听讲就像听天书一样,直到第一次的C语言上机实践……
“拔剑四顾心茫然”,第一次上机可以用这句诗来表达我当时的内心,简直就是煎熬,完全不知道要干嘛,第一次老师转到我这时,我的电脑一片空白……于是我硬着头皮写了几个语句,老师又走到我这,看了看我的程序,满怀嘲讽地对着全班同学说“哇,咱们班竟然还有同学以为把算式全部敲打上去,计算机就能自动算出来的!”顿时全班哄堂大笑,我当时真的是羞得满脸通红,不过这次经历也激发了我学习编程的动力,还算的是因祸得福吧!
“勇往直前”,从那次经历后,我便开始认真学习编程,刚开始的时候,觉得“哇,好神奇,自己写出来的程序竟然可以实现这么多的功能”,越学越觉得“无所不能”,越学越有兴趣。C语言课程结束后,有个C语言课程设计,需要做一个小型的系统,我做的是“通讯录管理系统”,对于当时的我来说,这种程序可谓是相当的难了,基本上指针都不怎么会用,更不用说对文件的操作了,我就先上网上找了一个类似的程序,先看看人家是怎么实现的,大概心中有了一个方向,就边模仿边编写,先从简单的功能实现,再一步一步地添加功能,那时候还只会使用VC,只会写控制台程序,连界面都是在控制台上一个一个printf()打印出来的,耗时两个星期,终于将这个系统成功实现了,老师也给了我90多的高分,当时特别有成就感!
大一下接触了嵌入式的开发,刚开始用的是最简单的51单片机,记得写的第一个嵌入式程序就是“流水灯”,虽然很简单,但更进一步的让我学会了用编程的思想去解释这个世界,虽是一个简单的流水灯,但在我们的生活中却随处可见,超市门前的电子公告屏,演唱会上粉丝们手持的LED板等等等等,嵌入式的开发给了我一种全新的成就,将我的程序嵌入到一个硬件上,仿佛是赋予了这个硬件一个生命,我仿佛在创造世界,这种成就感和自豪感恐怕每一位程序员初期都会有的。
而后便是C语言的进阶学习,之前的只能算是刚刚入门,当然这也是我后来才知道的,当时的我可不是这样觉得的,当时的我觉得自己无所不能,什么都能用程序实现。根据课程安排,我们开始了“数据结构与算法分析-C语言描述”这门课,然后……我就又开始懵逼了,“这都是些啥啊???”,黑人问号脸……然后就想当然的认为它不重要,结果就是,我到现在还在为当时年轻所挖下的坑做填补,这是我当年做的最蠢的一件事,“数据结构构建了程序的躯干,而算法赋予了程序灵魂”,当年的我如果懂得这句话,那现在的编程水平至少还能再上一个台阶;然后又学习了C++,也算是对面向对象的编程有了一些了解,当然有了C语言的基础,学习这些语言都没有太大的问题。
大二的暑假,我全身心的投入在全国大学生电子设计竞赛上,我们小组是做测量方向的,我主要负责FPGA和单片机的嵌入式编程方面,我还记得我们当时训练的时候,我写了一个程序,当时程序编译没有出错,但功能却不能实现,我怎么都找不到问题(因为当时还不知道Debug,纯靠自己看),找老师来帮忙,老师说“编译没有问题,难道就真的代表你这个程序能用吗?这种情况肯定要使用Debug功能来找算法上的错误啊!”,这一句话真的是醍醐灌顶,一巴掌将我打醒了,原来我之前写的程序只是凑巧编译成功了而且也实现了功能,原来我连最基本的检错方法Debug都不会用,这一下子将我打回原形,我乖乖地收起我的小尾巴,认真系统地开始学习编程,不看不知道,一看吓一跳,原来自己之前写的程序都是最基本的程序,原来自己还差得很远,原来还有这么多东西我都不知道……
很快,国赛正日已经到了,我们的任务是在四天三夜内要做出来一个高精度的”数字频率计“,现在想想当时还真的是挺疯狂的,四天三夜就睡了一个晚上,我清楚地记得,最后一天焊系统板的时候,我的眼睛都已经不能正常对焦了,饭都顾不上吃,临近结束才测试完功能,赶紧包装,交给老师,但这次比赛的结果却差强人意,包装之前,我们的系统已经能够很好的实现要求上的功能和指标,但到比赛测试那天,所有的东西都乱掉了,好像是因为程序被静电擦除了,打那以后的两年,我再也没有碰过嵌入式编程。
大三我接触到了网页编程,首先接触到的是HTML/CSS,但觉得这种文本标记语言完全没有意思,就像写word文档一样,完全没有灵魂,然后就开始学习后端语言PHP,在后面去公司的实习中,我还接触了使用JAVA web作为后端语言的网页开发,本科的毕业设计做的是基于PHP的网页版云盘,也用PHP做过微信公众号开发。
大学毕业后,我没有选择读研,而是选择了工作,我坚定一个方向”只做软件研发“,但真的不得不说,本科生真的很受歧视,也可能是自己的水平还达不到公司研发的要求吧,找了很久很久,offer拿了不少,但真正想去的却没有一个,最后我选择了中船重工第七一六研究所作为我的第一份工作,职位:软件工程师,主要职责:嵌入式编程和PC客户端软件编程。
入职半年来,我基本上就是一个人在学习,因为公司里可以教自己的人太少了,因为公司主要做电子的,软件人员很少,我主导的项目就是针对公司一个产品的自动检测系统,用的是C#语言,还有一个项目是写驱动程序,这些都是我之前从来没有接触过的领域,也算是一种挑战吧,不管怎么说,我有信心能够做出来,这可能就是变编程这么多年带给我的最大的改变。
谈一谈我自己的学编程的方法吧!
第一是模仿,刚开始学编程的时候,凭空创造一个程序是很难的,尤其是自己从未接触过的领域,你需要一个模板或者例程来将你带进去。
第二是思想,从学C语言开始,我希望你能够正确的看待编程语言和编程的关系,编程语言只是外在表示,只要你熟悉了C语言,其他语言的开发你也应该能够很快上手,不要想着自己没学过,不会做,相信我,你能做到的!
第三是多看书,这里的多看书指的是要多看不同国家的不同作者写的著作,接受不同的思想,最后将这些思想融合成你自己的思想,这样你才能对一些关键性概念有比较深厚的了解。
第四是多动手,不能只看书,要多写程序,多写算法和数据结构,对于自己编程能力的提高很有帮助。
第五是了解计算机的相关知识。对于计算机组成原理,计算机操作系统,计算机网络等这些底层知识,要好好了解,这样你才能对编程的过程有更加深入的理解。
哦,忘了说,我不是计算机专业的,我本科学的是通信工程。