本科的时候总是觉得代码量很大就是很牛逼的标志,每次都在计算自己的代码量。开始写个程序就瞎激动,今天看了自己的空间日志,都是自己当年瞎写的东西。我当年就是213中毒青年,不知道为什么总是喜欢瞎激动。今天想找找本科时候写的代码,已经发现都找到不到了,当年还不知道备份是什么,github男性交友社区这些东西的存在。
昨天和小伙伴谈起本科上过的课,突然想现在整理一下当年自己写的东西。我本科的时候没有开窍,学东西很笨,但是我真的是很刻苦,我是没有学计算机天赋的那种人。感觉有的人总是能写出吊炸天的代码,但是我就不能。我总是话很多时间去学习,但是还是只能写出很丑的代码。但是我一直笨笨的在做这些事情,也让我不至于太差。
最近遇到了些事情,我想起自己当年那些刻苦的劲,或许如果不知道自己该做什么的时候,努力把目前能做好的事情都好好做好,路也就自然而然就出来了。那么多远的路都走过来了,时时刻刻都要把握好自己,遇到问题就死磕,磕到头破血流还是会有条路的。不忘初心,方得始终。
这是我大一的时候写的代码,界面真的很丑,但是那个时候我能做到真的就只有这种程度了。那个时候我觉得扫雷是我绝对不会去玩的游戏,界面很丑,感觉逼格也很低。根本也不需要什么智商,等要我自己还原和window版本中的扫雷一样的游戏时候我发现我根本做不到。
大一的暑假,我在家呆了几天,然后就回学校了。那个时候报名参加了学校的一些社团组织的编程活动,每天都很珍惜时间,总是觉得今天比别人多写了几百行代码简直就是多赚了几个亿的感觉。我就恨不得别人少学点,自己多学点,那个时候简直是心机婊。
因为这个活动,我认识我的老乡,认识了很多喜欢编程的朋友。因为是暑假,学校只有一个很贵的食堂开门,那个时候自己还没有什么经济基础,在学校又不想花家里太多的钱,我一个月都是吃馒头过来的。一餐三顿,每顿一个馒头,有个时候饿的不行,就喝水。一个月下来,瘦了整整16斤。但是我还是很开心的,毕竟我主要为了减肥。跑偏了。
这个项目是我用MFC写的。现在要我写MFC我估计会炸的,因为那个时候为什么会选MFC完全是因为学长说这个最难,我总是想挑战最难的。学长建议大一的小朋友没有基础学个什么PHP比较好,做个简单的网站。当时我们组有三个人,一个组负责实现扫雷,另一个组负责实现俄罗斯方块。最后小明实现了,我感觉小明写的比我的好看多了。
我们和大二的一个学长分在一组,大部分都是大二的学长指导我们。
第一天我们先学着MFC的一些基本操作,然后开始写一些简单的程序,之后我们开始看代码,学习别人是怎么完成的。开始花了下面这个界面。
//时钟
int nOldDC=pDC->SaveDC();
pDC->SetTextColor(RGB(255,0,0));
pDC->SetBkColor(RGB(0,0,0));
CFont font;
if(0==font.CreatePointFont(160,"Comic Sans MS"))
{
AfxMessageBox("Can't Create Font");
}
pDC->SelectObject(&font);
CString str;
//利用判断显示位数,不够三位前面加0
/* if(leftnum<10)
str.Format("00%d",leftnum);
else
str.Format("0%d",leftnum);
pDC->TextOut(25,10,str);
*/
if(m_second<10)
str.Format("00%d",m_second);
else if(m_second<100)
str.Format("0%d" ,m_second);
else
str.Format("%d" ,m_second);
pDC->TextOut(330,10,str);
pDC->RestoreDC(nOldDC);
开始的是偶觉得还不错,慢慢深入下去发现每一样事情都不简单。我们要开始画计时器,还有计数器。计数器很好完成,时钟就有一点难度了。然后还要设计中间的小人的脸,开始的时候是微笑的,点击的时候必须换成另一个表情。当游戏结束并且输掉的时候显示一个表情,赢的话显示另一个表情。
才发现做一个程序每一处小的细节都不简单,就像高中做数学一样,要时时刻刻提防各种陷阱。
之后就是算法,先是学长看懂了和我们讲解,第一次团队合作,学长帮了我们很多忙。本来我们是有一个大牛学长指导的,但是学长去腾讯实习了,所以我们就只能自己靠自己了。我们学校的各种俱乐部的大牛都是写我们学校ACM竞赛的网页的人,感觉都是吊炸天的感觉。
做完了大部分代码,学长说其实我们的代码还是很不完善的,鼠标移动的时候,我们需要捕获鼠标的位置,在界面上移动的时候显示出鼠标移动的痕迹。这个效果是我自己想了几个小时做出来,虽然还是很丑,但是那会能写一点点东西完全靠自己的脑力是很值得高兴的事情。
虽然我的第一个超过两千行的代码真的很丑,但是我还是很喜欢他的,但是我的U盘丢了,这个程序就再也找不到了。
之后我又开始学习了Java,然后写了一个简单的QQ通信设备。大二一年我感觉自己都在写各种界面,学得东西都是很杂。我学了Java,学了C#,学了WPF,写了一堆堆的界面和自定义控件。没事的时候我就在用WPF实现office2010的那些PPT切换效果用到我自己的程序中。
自从我开始一发不可收拾的学了很多WPF之后,我之后的所有作业都开始写各种界面,大二的时候老师说要是能写出界面的人,所有作业都能得高分。我那时候乐坏了,我们班只有我一个人会写代码。之后我靠着写界面的本事,参加了一些比赛,专职负责帮别人写界面。我帮学长做了花旗杯的界面代码。虽然我们参加比赛的界面我也写了,但是杯嫌弃,但是那会我不会写比较费脑子的代码。整个暑假,大二,我回家五天,那会我开始自己挣钱了,所以那个假期,我胖了很多。。。。
这是一件悲伤的事情,我是那种喝水都会胖的人。
暑假参加完比赛,我没有回家,我进入到了0817项目组,我们学校计算机学院和很吊炸天的一个项目组,虽然老师没有管我,但是我还是开始写各种代码,我开始模仿迅雷写视频播放器,开始模仿酷狗音乐盒写各种播放器。
值得骄傲的就是我的动画效果达到了和他们当时的动画效果一样的水平。
因为会写视频播放器的原因,暑假的时候一个老师要做一个北京的项目,是多通道视频播放器,下面这个就是我写的。它要达到的效果就是一个主控件同时控制北京地区的不同的大屏幕播放不同的视频。老师们用的是什么V什么东东,我不记得了,老师他们的团队因为不能同时播放多个视频,这个项目的技术难度没有突破,所以导致了整个项目一直迟迟没有交工。
当时老师找CB帮忙,CB暑假要准备夏令营和保研,所以老师又找了我,因为我之前有写迅雷播放器的经验,并且这些代码用MFC实现都是很简单,所以我当时花了一个下午就把整个项目的视频播放器的代码完成了。
刚好老师们的代码使用C#写的,所有也能很好的对接上。老师自己开了一个公司,为了更好的完成整个项目,我去老师的公司免费的打工了几天,结果发现被公司的小工忽悠了,我和一个小工合作的,但是小工把整个项目都丢给我一个人解决。然后加班费自己拿了。囧囧囧,就是那一天,我突然觉得程序员真是不好当。。。
在大二的时候,我认识了大神,大神是全能的,GPA全年级第一名,技术也是一流的,大神就像是漫画里走出来的人物一样。什么都会,我也很庆幸自己的大学能抱着大神的大腿,大神科研素养感觉是与生俱来的。别人觉得很难的事情大神总是能轻易办到。在整个网络上流传的只要是大神研究过的东西,总是最好的,他的代码已经被传疯了。大神是本科生,但是却是我们Android,研究生的老大。
他精通很多Binder IPC 机制,加壳脱壳技术,静态分析,动态分析,root Android 的所有东西大神都融会贯通成为自己的一根神经一样。现在大神已经是世界上崭露头角的super hero,我看到一家顶尖的安全公司用天才来评价他,他去了很多很好的公司实习,现在在世界最好的大学读博,发了无数的顶会,而且玩的很潇洒。
他对我说过的话:你必须非常努力,才可以看起来毫不费力。
现在大神变成了超神,而我依旧是一个弱逼和菜鸟,而且很水,研究生一年级生活刚刚开始。生活各种不顺,波澜起伏,还是不能写出吊炸天,帅出天际的代码。
这个是我大三的做作品,一个恶意软件自动化检测系统,结合了静态分析和动态分析 以及机器学习 blahbla.
现在的我已经不写任何的界面,做的东西都很底层,涉及到更多的数学和分析,设计到编译原理等等一些。
当然我写的代码不限于这些,我本科还写了很多代码,我能记得记不得的,这几个算比较大型的,有界面的。未来还有很长的路要走,我想告诉自己,既然之前都走了这么多,我这么艰辛的走过来的,图形学的作业,我熬了一个有一个的通宵,看不懂的代码反反复复看,Android的源码,启动过程,一遍看不懂看第二遍,电脑蓝屏有黑屏,我所有的困难都是咬着牙走过来的。
不管什么,只要努力,就算方向错了,至少还是会有一些收获,就算笨,只要走还是能达到终点,所以我要加油,未来的分分秒秒,应该每天变好一点点,能写出更好的代码!加油!狗狗~~
写在后面的话:
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程https://www.cbedai.net/chichoxian