? 首页 ?今日头条?正文

易车网,做十年 Windows 程序员 VS 做10年 Linux 程序员,究竟谁凶猛?,眼袋是怎么形成的

假如一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 相同是作业10年, 大部分状况下与在linux,unix下面开发10年的程序员水平会不同很大。我写这篇文章并不是想降低windows下面开发的人,做windows开发的人看了或许会感觉不舒服,我并不是这个意思,我仅仅说说我自己的感触,我最早开端学易车网,做十年 Windows 程序员 VS 做10年 Linux 程序员,终究谁凶狠?,眼袋是怎样构成的习编程也是在windows下面的, 学的是VB,后来转到VC++,其时用的是VC6.0, 做windows下面的开发5年后转入linux下面做开发的,开端在linux下面做开发的时分, 也做过许多windows下面的项目,在linux下面做开发的确比我在windows下面做开发多学到了许多的东西,从开源代码里边吸取了丰厚的养分,我不是说我是个高手, 仅仅说在linux下面学习,你会前进的更快。

不过我需求着重一下,我这儿说的是 “大部分状况下”,意思便是说“在相同勤勉,相同尽力程度,相同基础常识,相同作业年限,相同是做使用程序的开发” 的状况下,假如说的不对,期望咱们在下面宣布观点。

或许咱们会古怪, 为何会呈现这种状况呢 ?

听我渐渐道来!

榜首:闭源与开源

windows下面的程序根本都是关闭源代码的,特别是10年前,在windows下能够说找不到可用的开源的软件,现在的状况比曾经好多了, 许多linux下面开源的程序被移植到windows下面来,可是linux下面开源的程序添加的更多了。

曾经在w舒庆简历indo脱女ws下面写使用程序, 需求用到MFC,WINSOCK,ODBC,FILE IO等, 能够找材料的当地主要是微软官方的文档MSDN,也只要MSDN才是最全的当地,下来是第三方网站 v黄小胖ckbase, CSDN, cod李金羽和陈蓉结婚照eproject 这几个网站。 可是从这些网站找到的代码,都是针对一个特定的小功用,为了演示怎样完结这个小功用而写的代码,写代码的水平良莠不齐亿年玉虫,风格各异,都是一些demo性质的小东西,简略研讨看看代码就能够集成到自己的使用程序里边。怎样构建一个完好的使用程序, 架构杰出的使用程序, 大学里边不会教你, 悉数都得靠自己探索,在公司里边做项目取得前进,直到项目商用,后期保护修正代码时, 回头看自己写的代码, 才深入体会到,自己其时写的代码架构是多么的不合理,保护修正是如此的困难。假如在互联网上找不到自己需求的材料,就只能靠自己想一些完结的办法,尽管功用完结了, 或许完结的时分还很有成就感,可是等那天你忽然发现有人完结这个功用,而且柳炜玮用了一个奇妙的办法, 这是你才忽然恍悟, 我其时为何就想不到这么完结呢? 在windows下面开发, 不太简略找到能够参阅的相似你要完结功用的开源项目。悉数都得靠自己。可是在linux下面就不相同了, 当你要开发一个新项目时, 能够想想有没有什么开源项目也完结了相似的功用, 能够下载到源代码来做一个参阅, 对其间的算法, 架构规划等做一个详细的了解,然后自己开发的时分就会比较称心如意了,能够防止他人犯过的过错,少走许多弯路。

第二:要学习的常识量不相同

学习window下的开发, 你需求学习许多的Windows API,截止到2009年9月,Windows总API数量为2258个, 而且Windows API 的参数多, 参数类型杂乱,要记住这么多东西不是一件简略的作业,至少也和学习一门外语相同,大学英语四级要求把握的总词汇量到达4500个单词。可想而知, 学会这么多的API用法,有多难了吧。那么学习linux下, 要把握多少API呢 ? linux下的内核API, 悉数算下来也才335,可是这些内核的API只要编写驱动的时分才干用到, 开发使用程序根本用不到内核的API,开发使用程序的API根本都是C的API,而 Li秋霞在nux一切的C的API个数是279个, 也便是说你只需求把握不到300个的API, 就能够顺畅的在linux下面开发使用程序了,比较学习windows下面的那一堆API来说, 你是不是能够省下许多时刻来学习其他常识呢?

下面我就举个简略的比如:

CreateFile

ReadFile

OpenFile

WriteFile

DeleteFile

ReadFileEx

WriteFileEx

CloseHandle

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

HANDLE WINAPI CreateFile( __in LPCTSTR lpFileName, 易车网,做十年 Windows 程序员 VS 做10年 Linux 程序员,终究谁凶狠?,眼袋是怎样构成的__in DWORD dwDesiredAccess, __in DWORD dwShareMode, __in LPSECURITY_ATTRIBUTES lpSecurityAttr童模希希ibutes, __易车网,做十年 Windows 程序员 VS 做10年 Linux 程序员,终究谁凶狠?,眼袋是怎样构成的in DWORD dwCreat刘德华回应杜汶泽事情ionDispos易车网,做十年 Windows 程序员 VS 做10年 Linux 程序员,终究谁凶狠?,眼袋是怎样构成的ition, __in DWORD dwFlagsAndAttributes, __in HANDLE hTemplate低声悄语File);

这些参数的含义和类型, 请问你需求花多少时刻来把握呢 ?

咱们在看看linux下面对文件操作的C的API有几个,

fopen, fwrite, fread, fclose 共四个,咱们在看看参数吧

FILE *fopen( const char *filename, const char *mode ); 两个参数, 请问你需求花多少时刻把握呢。

或许有的人会提出定见,说上面C的API也能在windows下面运转啊? 没错, 是能在windows下面运转,可是你就把握这跨渠道的C的API够吗? 莫非一切在windows下面开发的人都喜爱用C的API, 不会用windows自身的API吗?你不需求学习window许晴女儿s下面的API吗? 你的搭档运用了Crea长春吉康teFile这个函数, 你不需求搞懂他吗? 你不需求看搭档的代码吗? 你不需求去保护他人写过的代码吗?

假如你仍是这么想,那家乱我还能够再举其他比如!就易车网,做十年 Windows 程序员 VS 做10年 Linux 程序员,终究谁凶狠?,眼袋是怎样构成的拿创立线程的比如吧,下面是2个在windows下面创立线程的例沈夏飞子, 榜首个是创立安全作业线程, 第二个是创立界面线程,还有一个函数我没有放下面, 是创立不安全的作业线程的,详细的原理咱们能够参阅《win32多线程程序规划》,

//线程安全的作业线程函数 uin电影国际自在行者tptr_t _beginthreadex( void *security, unsigned stack_size, unsigned ( *start_address )( void * ), void *arglist, unsigned initflag, unsigned *thrdaddr ); //界面线程函数 HANDLE WINAPI CreateThread( __in LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in LPTHREAD_START_ROUTINE lpStartAddress, __in LPVOID lpParameter, __in DW易车网,做十年 Windows 程序员 VS 做10年 Linux 程序员,终究谁凶狠?,眼袋是怎样构成的ORD dwCreationFlags, __out LPDWORD lpThreadId );

做windows下面的开发, 上面两个创立线程的函数咱们都必须把握。当然了, 你也能够只需求知道 _beginthreadex 来在windows下面通吃,可是当看到他人的代码运用CreateThread的时分, 你可不要不习气,MFC里边许多人都用CreateThread。 把握这么多的API累吧 ? 就和你上学的时分背单词相同累。

下面我在列一下linux下面创立线程的函数

int pthread_create( pthread_t *restrict thread, const pthre钟纪轩ad_attr_t *res余杭孔祥华trict attr, void *(*start_routine)(void*), void *restrict arg);

看到了吧, 你只需求知道这个就能够了。

C的API 绝大部分都能够再windows下面运转,在windows下面学习开发, 你不但要懂得C的API, 你还需求多花时刻来学习windows体系自身的API, 你或许要说, 这么说应该是windows下面学得多啊, 我要说的是你把握的API是许多, 可是关于一个软件来说, 最最重要的是体系架构,数据结构,架构规划的好, 对后期的代码保护,功用修正都很要害, 这也便是新手写的代码, 到最后连他自己自己都很难保护养甲虫挣钱中文版的原因, 更甭说让他人来保护了。

API相当于根本功, 体系架构, 数据结构是内功,根本功练的越快,易车网,做十年 Windows 程序员 VS 做10年 Linux 程序员,终究谁凶狠?,眼袋是怎样构成的咱们就越有更多的时刻来操练内功。操练内功,咱们要多向高手学习。

在学习windows 下面开发使用的道路上, 咱们需求把握更多的API, 学习后, 让咱们的路越走越窄, 没有特别丰厚的开源代码能够参阅, 水平前进的速度很慢。

可喜的是, 现在许多开源的项目被许多人移植到了linux下面, 也有许多的开源项目是跨渠道的, 常用的是 wxWidget界面库, 用法相似MFC, 还有qt这个界面库, 也很强壮,还有开源的3D引擎OGRE, 架构非常好,很值得学习其架构形式。可是linux下面的开源库要远远比windows下面的开源库丰厚得多, 咱们能够便利的从高手的代码里边学习数据结构,学习规划形式,学习编程技巧,这也便是linux下面的程序员, 或许会比windows下面的程序员水平更高的原因, 究竟见多识广嘛, 熟读唐诗三百首,不会作诗也会Saivian吟啊!

别的想要成为一个优异的、有才能程序员,做软件开发的话,就来学习C/C++吧!假如感觉自学C/C++比较困难的话,能够重视加私信笔者【编程沟通】能够收取相关材料!不论你是转行仍是找作业,咱们都一同生长前进。别的笔者再共享两张C言语C++的学习道路,期望对你有协助!

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。