茉莉网

linux和windows的区别 10年Windows与Linux程序员的区别

2018年03月09日 来源:linux和windows的区别 大字体小字体

  以前在Windows下面写应用程序,需要用到MFC,WINSOCK,ODBC,FILE IO等,可以找资料的地方主要是微软官方的文档MSDN,也只有MSDN才是最全的地方,下来是第三方网站vckbase,CSDN,codeproject这几个网站。但是从这些网站找到的代码,都是针对一个特定的小功能,为了演示如何实现这个小功能而写的代码,写代码的水平参差不齐,风格各异,都是一些demo性质的小东西,简单研究看看代码,就可以集成到自己的应用程序里面。如何构建一个完整的应用程序,架构良好的应用程序,大学里面不会教你,一切都得靠自己摸索,在公司里面做项目获得提升,直到项目商用,后期维护修改代码时,回头看自己写的代码,才深刻体会到,自己当时写的代码架构是多么的不合理,维护修改是如此的困难。如果在互联网上找不到自己需要的资料,就只能靠自己想一些实现的方法,虽然功能完成了,可能完成的时候还很有成就感,但是等那天你突然发现有人实现这个功能,并且用了一个巧妙的方法,这是你才突然恍悟,我当时为何就想不到这么实现呢?

  我最早开始学习编程也是在Windows下面的,学的是VB,后来转到VC++,当时用的是VC6.0,做Windows下面的开发5年后转入Linux下面做开发的,开始在Linux下面做开发的时候,也做过很多Windows下面的项目,在Linux下面做开发确实比我在Windows下面做开发多学到了很多的东西,从开源代码里面吸取了丰富的营养,我不是说我是个高手,只是说在Linux下面学习,你会进步的更快。

  上面这些API是Windows下面对文件操作的API,总共是8个,看看CreateFile的参数吧,

  那么学习Linux下,要掌握多少API呢?Linux下的内核API,全部算下来也才335,但是这些内核的API只有编写驱动的时候才能用到,开发应用程序基本用不到内核的API,开发应用程序的API基本都是C的API,而Linux所有的C的API个数是279个,也就是说你只需要掌握不到300个的API,就可以顺利的在Linux下面开发应用程序了,相比学习Windows下面的那一堆API来说,你是不是可以省下很多时间来学习其他知识呢?

  下面我就举个简单的例子:

  如果一个程序员从来没有在Linux,Unix下开发过程序,一直在Windows下面开发程序,同样是工作10年,大部分情况下与在Linux,unix下面开发10年的程序员水平会差别很大。我写这篇文章并不是想贬低Windows下面开发的人,做Windows开发的人看了可能会感觉不舒服,我并不是这个意思,我只是说说我自己的感受。

  13、合法自定义任何我想要的东西,包括我最喜爱的程序。我甚至可以跟踪软件开发者并向他们问问题,提意见,如果我愿意的话,也可以参与到真正的软件设计和开发进程中去。而相比的windows可能告你侵权。这明显已经把开源和Linux搞混了,Windows下有开源软件,Linux也有不开源的软件

  可能大家会奇怪,为何会出现这种情况呢?听我慢慢道来!

  Windows下面的程序基本都是封闭源代码的,特别是10年前,在Windows下可以说找不到可用的开源的软件,现在的情况比以前好多了,很多Linux下面开源的程序被移植到Windows下面来,但是Linux下面开源的程序增加的更多了。

  呵呵,那Linux有什么好处呢?你会问。其实Linux没什么好处,从使用角度,它唯一的好处是它是我们自己的,而windows再好,是Microsoft的。“又能怎么样?”你也许又问。区别是,Linux可以让你来研究它,通过使用Linux你可以获得更深一步对计算机的了解,而不只是一个全自动的盒子。计算机是一个很神奇的东西,你也许对那些写出windows的程序员很崇拜(我是的),或者对那些能发明更好的算法更安全的操作系统的hacker(对不起,远程攻击系统的不是hacker)很崇拜,那么你应当知道,坐在一个windows的机器前面整天就会用鼠标拖拽也许能给你一个很好的打字员的薪水,但是永远无法让你进入真正计算机的世界--成为一个自由思想的Hacker,或者说,你只能永远是个windows的用户--也没什么不好,很多领导还不会计算机呢--而不可能有机会自己写一个windows。一个不太妙的结果是,当世界上充满了windows的奴隶时,我们就得花更大的价钱从Microsoft那里获得这样的技术,某些社会里,我们管这个叫做剥削。

  不过我需要强调一下,我这里说的是“大部分情况下”,意思就是说“在同样勤奋,同样努力程度,同样基础知识,同样工作年限,同样是做应用程序的开发”的情况下,如果说的不对,希望大家在下面发表看法。

  这些参数的意义和类型,请问你需要花多少时间来掌握呢?

  在Windows下面开发,不太容易找到可以参考的类似你要完成功能的开源项目。一切都得靠自己。但是在Linux下面就不一样了,当你要开发一个新项目时,可以想想有没有什么开源项目也完成了类似的功能,可以下载到源代码来做一个参考,对其中的算法,架构设计等做一个详细的了解,然后自己开发的时候就会比较得心应手了,可以避免别人犯过的错误,少走很多弯路。

  学习window下的开发,你需要学习很多的WindowsAPI,截止到2009年9月,Windows总API数量为2258个,并且WindowsAPI的参数多,参数类型复杂,要记住这么多东西不是一件容易的事情,至少也和学习一门外语一样,大学英语四级要求掌握的总词汇量达到4500个单词。可想而知,学会这么多的API用法,有多难了吧。

相关内容

编辑精选

Copyright © 2015 茉莉网 http://www.szmlwh.cn. All rights reserved.