TMS320C6000 DSP系统的引导设计 zz学会这招,自己在家就能种一盆漂亮的菠萝盆栽!DIY废物改造之淘宝的迷你摄影棚~~

那些年,我开发过的软件

笨办法学 Python 更简单
常被人丢掉的“废物” 原来是珍贵的补肾宝
散 文: 芽

点击上方“程序人生”关注我们

作者

本文作者为CSDN博客专家 林炳文Evankaka,作者授权CSDN社区微信公众号《程序人生》发表,转载请联系原作者。

1

入门历程

话说进入程序界这一行业,也是很偶然的一个因素,三年半之前笔者都还只会写点Matlab程序,当时最大的愿望就是学好Matlab,参加数学建模大赛,冲刺国奖,从此走上人生赢家的道路。无奈,那时算法能力实在一窍不通,更准确说就是完全没有算法的基础,被人虐得死得活来,只能眼巴巴看别人拿大奖,自己黯然神伤。比赛之后自己就在想,如果自己有更好的编程能力肯定能做得更好,毕竟当时确实有些问题已想出来,但是就是无法实现。

在笔者真正开发软件之前,第一个接触的是算法,这是一个关于粒子群算法的研究。这也是第一个深入研究的算法,自己也学了很多的知识。 这也是最基本的粒子群了,只记得写了一个月的程序和文档,效果其实还是可以的。当然,纯理论的研究确实很没意思,下面是一个很有意思的应用:采用遗传-粒子群来解决旅行商的问题。

其实这个效果当时笔者自认还是可以的,可惜老师反应一般,他认为这个应用没什么好处,说得和本专业相关的,然后就没有然后了,只是觉得理论研究得很爽,但是真正要拿来应用,却突然发现,不知道要用在什么地方了。

写Matlab程序的人,注定要被鄙视,除了进高校做研究。当时有个同学用C++来做粒子群的,那也是第一次听说过这个语言,只是没想到,就过了一年之后,自己也开始接触它了。情况是这样的:那时自己用Matlab做了一个无镜头成像软件,老师说太难看了,而且不能单独运行(必须得在Matalb程序下运行),要求改改其它法子。好,你说改,那我就改,然后就开始狂看C++,去图书馆借了很多书,每天都不断的看书,感觉那段时间还是挺充足的,平时上上课,闲时码码代码,听几首小曲。日子一天天就这么过去了,软件也一天天的在成型,其实当时还是很有成就感的,只不过做出来的东西老是被老师说,这才是最大的悲哀吧。感觉老师就和现在的产品经理差不多了,天天都在抓着你干活,不断给你活做。虽说辛苦,但自己确实是学到了东西,所以年轻人还是要多码代码,多学技术才是王道。

这个软件做出来就是这样的。

这是一个摄像头采集的软件,使用VC6.0+MFC+VFW来完成的,代码也就几千行。做出来之后,老师还是不满意,其实我已经很满意了(现在再来看确实太烂了)。可是,菜鸟的水平就是这样,谁不是都从菜鸟走上来的?编程这东西,就是一个不断练习的过程,不是说你写得多就是高手,但是你如果不写,你肯定成不了高手。

这个软件被批评之后,郁闷了有段时间,然后有个计算机的同学就说,这都什么年代了啊!你还在用VC6.0?他给我推荐了VS,然后开始上手VS2008,用了一些时间,又开始上手VS2010,慢慢地,我开始接触一些比较深层次的东西,也是在这个时间段,自学了linux,数据结构。然后又专门研究了图像处理的相关算法,以及OpenCV的使用,我是一个不服输的人,既然你觉得我做得不行,那好,我就搞一个高大上来让你看看。然后就有了下面这个软件的出生了:

集合了图像采集、图像处理、图像测量、全息重建、视频处理。最利害的是融合了电机的控制功能。这个软件也是用MFC做的,图像采集方面使用了DirectShow,图像处理方面使用了OpenCV,图像重建方面使用了。FFTW,图像测量则是GDI。

也就是在这个软件开发完成后,自己开始真正喜爱了编程,以前会写代码,那完全是因为课题上的需要。编程刚开始人都是三分钟的热度,不一会儿又会被其它事物分神。所以坚持是很重要的一件事,对于学习,自己也有一定的心得,下面我来介绍一下我自己的学习方式,希望可以帮助大家。

2

学习方法

光看不练假把戏

好多人刚入门时都比较懒,觉得都很简单,都只是读读背背,如果是这样,应付考试的需求还是可以。但如果想要把基础打好,还是一步一步把书上的代码都自己敲敲吧!多看书,首先要把一些知识点理解透,然后就是多写,多写书中的代码例子,先抄,然后慢慢理解。理解之后自己把他写下来。在往后就是多敲了。敲当然是敲代码了。在熟练掌握了编程的技巧之后,下一步要做的就是多练了。

学会利用网络资源

有事没事就来CSDN或者其它IT技术网站看看,里面都有一些大牛可以去学习。也可以去下载一些网上的教学视频虽说看视频的效果其实比不上看书,但也不是一定的。而且现在网络上的资源很丰富,基本上想做什么项目,网上都可以找到相关的,自己可以研究别人的代码,学习别人的技术。

编程习惯&&学会模仿

模仿牛人的代码风格、编程思路。刚开始大部分人的代码都是写得很烂的,也没有去做什么优化,甚至有可能自己写写着写着都看不懂了,所以要养成编程的好习惯。同时至少要掌握一个版本控制软件,如SVN或GIT,这可以为你节省很多时间专注到代码的编程实现上。

独立思考&&钻研精神

遇到一个问题时,首先应该自己要想想问题的具体来源。不要看都不看,就去问老师、问同学。程序员要有钻研的精神,越是难题,自己解决之后,越是能学到更多的东西。因为在这过程,你经历了分析问题,思考问题,解决问题的一个过程。这中间最好能写写博客,可以记录自己的学习历程,遇到的一些问题,解决方案等等。写博客能让你的逻辑思维更加有条理,语言组织能力也能得到提升。而且找工作时,有技术博客还可以给你加分!

自主学习&&新技术

人闲了之后最怕的敌人就是懒,多观注一些新技术。比如最近大火的云计算,大数据等。以前听一个大牛说,不会三种语言的程序不是一个好程序员,虽说有点言过其实,但是还是有一道的道理。再说了,技不压身。多一道技能,多一个工作的机会。但是这里一定要至少熟悉一门的语言的基础上再过学习其它的,要不换来换去的,最终受伤的肯定是你自己,什么都会,但什么都不精,这样的人竞争力是不会有多大的。

最后,说一句:习惯是条狗,你把它养大了,它就会一直跟着你,甩都甩不掉。所以,少打游戏多学习,少看电视多看书。你付出了时间与汗水,最终肯定会收获知识与金钱!代码是不会辜负你的辛苦的!

责任编辑:TMS320C6000 DSP系统的引导设计 zz