Chinaunix首页 | 论坛 | 博客
  • 博客访问: 195190
  • 博文数量: 30
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 363
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-28 11:42
文章分类

全部博文(30)

文章存档

2012年(6)

2011年(11)

2010年(13)

我的朋友

分类:

2010-11-18 09:54:29

   因为工作的关系,转到Windows编程了。其实毕业设计和第一家公司都主要是是windows编程,MFC和C#都弄过。第一次跳槽的时候就想找图像处理或者linux的工作。
   linux从学校就开始折腾了,redhat/Fedora、mandriva、ubuntu。但都是装上、进过两次就没下文了,想想就把基本分区啥的弄明白了,会安装了。
   第一次好好折腾是第一家公司的时候他们拷给我的LFS的LiveCD,当时上网不方便,慢慢用业余时间一点一点照着手册编译的,第一次用了1个多星期终于成功启动系统进入shell了,那次的心情啊,爽。第一次编译的有很多问题,然后又编译了一编,这次偷偷的上网,按照BLFS的手册,花了一个月的时间把图形化界面搞出来了。这个系统后来一直用到离职。弄LFS这次,虽然是最辛苦的,但是终于把linux系统基本的编译、基本工具和组成弄明白点了,这对后来的工作有很大的帮助。
   第一次跳槽的时候就想找图像处理或者linux的工作。但是都没经验,最后去了一个不太想从事的行业。第二份工作不能上网,没那么浮躁了,然后静下心来看了遍 The c programming language、学了学vim。半年后一个有点意外的机会,终于弄上了linux。
   从2440+501开始,到6410,前后正好一年的时间,从u-boot到内核2.4、2.6、系统和软件,从PLL、ram、nand、DM9000到显示、2D加速。开始啥也没弄过,跟着开发板的手册一点点学的。还好老板不催我们,给我们半年时间慢慢弄。最后既然能用了,现在在我们的平台上既然做出了几个产品了。过程虽然比较漫长,好几次差点走不下去了,但我一直认为我开始做出的决定是对的:只使用官方版本的u-boot、kernel,工具链、文件系统全部自己弄,不使用开发板自带的。当时编译LFS的过程给了我很大的帮助,一直把LFS和CLFS作为首选的参考。使用的Debian + gvim + jlink + 串口,好像除了使用jlink的时候,其他时候我都是在Debian下。不敢说用的很熟,至少基本的使用没问题了,出了问题我知道怎么找了。
   这次,又开始了新的工作,变成在windows下编程了。不过实现了我的另外一个理想:图像处理。还好处理的东西比较简单,要不数学基础还真不够了,再加上OpenCV,至少图像处理部分不用太多的操心了。结果弄的最多成了windows编程,CLR,弄的我那个纠结啊。
   弄了几个月了,那天看了一篇文章《别碰我,vim》。感觉想说点我自己对windows、linux、vs、vim的看法吧。
   先说说vim和vs吧。vim学习和配置的过程确实是痛苦和枯燥无味的。我感觉特别是插入模式和普通模式我经常晕晕呼呼的。但当你跨过这道坎以后,你会发现,vim如此贴心。至少你不用不停地拿鼠标,又过来按键盘,又过去拿鼠标。最简单的就是,但你想剪切一行或者单词的时候,vs里面你要拿鼠标选择或者双击,然后再ctrl+x,移动鼠标,ctrl+c。在vim里面就可以dd,yy,完事。vim的命令很多,常用的就那么几个,时间长了都成习惯了,多好。只是vim里面的自动完成不太好,特别是对结构体里面的成员,没有vs那么智能。或者有什么插件,我也不知道。还有就是vim对c++的支持确实不咋地。至于我为啥选择vim而不是emacs,很简单的理由:我不想不停地按ctrl、alt,小指头痛。而且emacs太慢了。
   再说说windows下的编程和linux下的编程。以前弄过MFC和win32,几年不用现在又出来个CLR,那破玩意,C++不叫C++,C#不叫C#,一直习惯的指针好像他也支持,但是都是奇奇怪怪的,^、pin_ptr、IntPtr、还有那恶心的String,整天为了这几个东西在那折腾,查MSDN,上网,都不是完完全全的编程了。也许这个过几天就会适应了。但是对于windows的这种编程习惯我实在不爽,windows下你能做的是什么?找msdn,看看实例,照着描一个。至于为啥或者那些东西是啥,你真的不一定要很明白。知道改哪就行了。windows下的文档是全,是不错。但是你就是不知道他是咋弄的,至少对于我来说没有安全感,总感觉像雾里看花。linux下你能看到所有的代码,只要你想看,你就能看到,虽然我不是每个使用的部分都看。但有的真的需要的知道他咋处理的时候,至少我有可能,有路可走。
   windows下的东西都是那么的庞大,似乎都是一个整体,似乎都弄得那么安全。但当你想把通过串口收到的BYTE串转换成CLR能使用的String的时候,你要跨N多东西,你都不知道该看msdn的那部分的时候你真的不爽。看看msdn那庞大的类图,msdn里面你要找一个东西要打开N级目录,面对那么大一堆目录或者类名,你都不知道该到哪个分支去找。而linux下,每一个模块或者软件就是完成一个功能的,很单纯,很纯粹,很简洁。很多时候我知道他是干啥的就行,使用的时候看看函数名、参数的名字也就知道的八九不离十了,何苦那么辛苦的查找或者看那么繁琐或者冗长的帮助。至于各个模块、软件咋把他们揉在一起,咋让他们一起协作帮你办好事,那就是你自己的事了,编程的事了。你自己怎么做,自己考虑。不用再像msdn手把手的告诉你1、2、3了。
   windows下的软件,都是一个个庞大的整体。每一个软件都想把很多功能包括进去,结果越做越大。就像UE,曾经多么的优秀,现在也。还有那些杀毒软件,那么多功能有用吗?搞得我的电脑是为了杀毒软件而安装的了。linux下的那堆shell程序,多么经典,每一个就完成一个单独的功能,把这个功能完成的很出色,至于你要完成什么任务,自己用这个功能去拼去凑。怎么做是你自己的事。shell、输入输出、管道、脚本,顶得多少行程序啊。
   也许我习惯了C,也许我喜欢折腾,也许我喜欢自由,也许我开始崇尚unix的那几个哲学:
     keep it simple, stupid
    
阅读(1292) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~