转眼大学生活就要结束了,想想还真有点舍不得。简单叙述一下我大学的编程生涯。
大学一年级,对我来说,可以说基本上没有接触到什么编程的技能,买了个笔记本也就是用来聊聊天看看电影什么的。至于C语言是什么,我去!还是睡觉打球吧。从大一就养成了翘课的习惯,导致整个大学基本上都没有上过几节课。罪过…幸运的是靠着考前的几天的抱佛脚居然没有挂科,还拿了几次奖学金,和学霸们埋头苦读比起来也算是值了。
记得大一下学期开设了C语言的课,也是大学期间唯一的一门专门教授编程语言的课,尼玛由于缺课太多,中途去听一堂完全是天书,老师讲的也很死板,毫无激情。后来索性和同学打好招呼点名告诉我一声,然后就不去了。记得考前一天的晚上,正值夏天,那个热呀~~~捧着C语言的书,心里还不停的骂:尼玛这个‘*’(指针)简直就是坑爹呀!由于缺少练习,加上平时成绩不高,期末考试成绩自然不会高了。
转变是在大一暑假,那时候有个C语言的课程设计,是我们学校一个出了名严苛的女老师带的,年纪有点大了,几乎每一个在她实验室里的人都被他狠狠的批斗过。进实验室那是很严肃的,必须衣着整洁,必须携带课本(没有会被骂或赶出去),上机前必须要预习和规划本次实验要做的内容(没错这个要写在纸上,还要拿给她看然后评分),不许大声说话,不能把水和食物带进去,甚至连每个仪器应该放在什么位置都规定好了,她的记忆力很好,如果上次犯了错,就别想下次了。总之想糊弄她老人家,门都没有。习惯懒散的我还真的是很不适应,还好我为人比较低调,估计是少数的几个没有被骂的人了。
课设的题目是要做一个学籍成绩管理系统,开发的模式大约是上世纪90年代的模式。所用的开发工具当然也是老到那种你根本不可能轻易在Window 7之类的系统下安装成功的玩意儿,有兴趣的朋友可以百度一下“UCDOS”和“Turbo C2.0”这两个老古董!没错,尼玛就是这样的鼠标完全不能发挥作用的开发环境。现在VS都2015了,但是在我们实验室里,VC6.0 那都是高大上的万一,记得当时有个同学用的VC6写的,瞬间就想膜拜。但是这东西在实验室老师眼里却是不行的,没错,老师绝不允许使用VC6.0这样的偷懒的方式做课程设计,唯一有一个国防生估计是以前就接触过编程使用VC6也是哀求了老师好多次才让通过。你能想象那个Turbo C有多么操蛋吗?下载一个试一下就知道了!
这个就是传说中的UCDOS
这个就是传说中的Turo C(TC2.0),你能想象在上面调试上千行的程序时的感受吗?
显然,仅仅靠在实验室里面的几个小时是不可能完成这个艰巨的任务的,不得不安装环境在课后完成。但是老师会这么轻易让你得逞的吗?我们那时候已经普遍使用Windows7的操作系统了,我用的是x64的,别说UCDOS了,就连Turbo C你都不可能装的上去(我那时候也真的很老实,在课后看到别人用VC6.0完全被那花哨的界面和强大的功能惊吓到了,基本上是望而生畏不敢用),以我们当时的水平,自己搭建环境还是很困难的。后来,我了解到还有虚拟机这个东西存在,下载了一个VMWare破解了,照着网上的教程一步一步安装,经过无数次的失败,也是花了整整两天才搞好。
当时下载一个东西还是蛮困难的,你知道失败一个镜像损失是很惨重的,学校的网速是1M的带宽,也就是下载速度封顶了也就128K每秒,现在的手机都比他快!并且上网收费还贵。不过一切的一切都是值得的!我是第一个在自己的电脑上成功配置好自己的环境的,没错Windows 98(这也算得上古董级的东西了)可以完美运行UCDOS和TC2.0!当那个丑陋的屎绿色(不知道用什么来形容)界面出来的时候,我的那个兴奋呀。然后我也被很多同学叫过去帮他们配置环境,我的那个优越感瞬间爆棚呀!
经过多方借鉴,最终我还是完成了,下面是两张简略的截图:支持增删查改的基本操作,另外可以存盘,从文件中读取数据,可以统计各科的数据。
当年费好大力气完成的学籍管理系统
这还没完,课程设计做完了当然要写实验报告,为了防止Ctr+C,V的现象发生,实验报告一律手写,至少20页。卧槽,为了这个实验报告,我居然写了整整一个白天加晚上。
手写的近30页的实验报告
从连C语言的基本语法都不会,到一个软件的成型,过程虽然相当的艰苦,但是最后回头看也是收获颇丰的,最重要的是打开了我的变成世界大门,建立了信心。
大二就分专业了,我选择了物联网工程专业,选择的原因很简单,听学长说这个专业课很多,我想多磨练一下自己。后来证明,课程的确很多,就是那种周一到周五全是课,偶尔有空隙就安排实验,周某也是。至于磨练自己,呵呵,还是高估了自己的积极性,满课对于我来说也基本上是没有课。
有了大一某课程设计的经历,我决定好好补一补C语言基础,买了本《C和指针》,这是我所遇见的最经典的C语言入门著作了,没有之一!开始只是看电子版,后来买了纸质书越看越入迷,每天8点起床开始看,边看边在电脑上实验,晚上10点就困得不行了。坚持了十天左右吧,顿时觉得豁然开朗,可以大喊一句C语言so easy(当然现在不这么认为,现在基本上每年我都会重新学习一遍C语言,每次都会有不同的感受)。
然后对我影响最大的就是“面向对象”这个术语了,最初接触是在大二一个同学跟我讲:大学一定要学一门面向对象的语言。比如C++、Java。后来我才知道C语言是面向过程的,用来做大型工程是很困难的。我周围的大神是在是太多了,我荒废了大一,看这他们用上了高大上的Java,C++。我嘞个去!好高端,Java的代码好长,他们是怎么记住的?C++ 和C语言长得还比较像,但是一看书就懵了,什么命名空间,构造函数,析构函数,复制构造,STL。Fuck 完全搞不懂!
经常听院里的某某某大神用xxx语言写了个xxx东西,好牛逼!顿时心就凉了一大截,不得不问一句上天:难道人与人之间的差距就这么大吗?
当然人最不能丧失的就是憧憬,没错对未来的憧憬。我下定决心奋起猛追,中途累了或是遇到了挫折就停下来抽支烟,在椅子上仰面一躺,看着烟圈在台灯周围萦绕,享受着这份特有的孤独,5分钟后便又有了动力。
那段时间,我不知道熬过了多少个这样的夜晚,所学的技术莫非是C/C++/Java/Linux/Android之类的,不知道从什么时候开始,我也成为他们眼中厉害的角色了。我开始接触项目,适应团队的协作工作。
这里提一下中途的一个插曲,有一次准备报一个培训班,那个时候在我们学校周围有个比较出名的IT培训机构,里面有很多来自不同高校传奇的人物(我认识的很多都去过)。我当时正准备学习Android,一个学长(传奇人物,也是做展示的人之一)带着我去他们的项目报告(宣传),很多邻校的高手轮番展示他们的项目,个个都高大上!最后有个大神和我同一个年级,然而他却独自开发了好几款Android游戏,那时候Android开发并没有现在普及,我还用的2.3的系统,会Android开发的人比较少。完了之后,学长对我说:你看人家同样都是大二,人家就这么NB了。我那个自卑呀!
机缘巧合,大三暑假一个国内还算可以的软件公司来招暑假实习生,我和他在都进了,我相当兴奋,叙述了仰慕他的经过,实习期间我们住在一起,成了无话不谈的朋友。后来共事,才发现我已经追上他的脚步了。
大三可以说是我的爆发期。有了大二的基础,一般的项目基本上都能搞定,上了很多项目,拿了很多奖。后来还和几个死党创业,也是一场腥风血雨,从每个人100元启动资金开始,到月入上万的规模,我们也付出了很多。虽然最后还是失败了,但至少也是一次人生的冒险!
从程序小白,到职业码农,这个过程很苦,但是我一直在坚持。相信很多人都有类似的经历,对和错其实不重要。引用最近热播电视剧中的一句话:莫问前路凶吉,但求落幕无悔!