linux程序设计第四版pdf_windows和Linux程序员到底有没有区别?同样工作10年

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

49641d334f7d2f94016129e83a78fabd.png

Linux开源系统对比Windows闭源系统的优势解析

Linux 的魅力一: 让古老的机器重获新生

它仅仅也就几百兆不需要多好的硬件支持就可以实现,在一些古老的硬件都可以运行,这就使的一些电脑在linux系统下重新焕发出活力,继续延续他们的生命,为人们工作。

Linux 的魅力二: 开源共享

你是否为自己的软件收费而苦恼过,当自己急需转一份大的PDF时,却显示着会员权限,那时你自己的心情是什么样的呢?心里肯定在想,为啥不能免费提供给大家使用呢?不过为了公司的生计问题,那也是不可能的,而linux系统却大无畏的开源共享,将权利全部给你,任你支配,是不是能满足的强大内心呢,自己可以做主来操作了,正是由于开源带来了很多的特性:http://www.linuxprobe.com/chapter-00.html

低风险:较比于商业软件公司,开源社区很少存在倒闭的问题,并且使用闭源软件后无疑将命运交付给他人,一旦封闭的源代码没有人来维护,将把你逼迫到进退两难的地步。

品质好:较比于闭源软件产品,开源项目通常是由社区来维护的,参与编写、维护、测试的用户众多,一般的Bug还没有等爆发就已经被修补。

低成本:开源社区推动的项目将会节省你大量的人力、物力和财力,开源工作者都是默默的付出劳动成果,为美好的世界做贡献。

更透明:没有笨蛋会把木马后门放到开放的源代码中,这样无疑把自己的罪行暴露到了上百万人眼中。

2edaef820eb1b6f60fd24148d2eafaf1.png

下面我就举个简单的例子

CreateFile ReadFile OpenFile WriteFile DeleteFile ReadFileEx WriteFileEx CloseHandle
上面这些API是Windows下面对文件操作的API,总共是8个,看看CreateFile的参数吧,
HANDLE WINAPI CreateFile( __in LPCTSTR lpFileName, __in DWORD dwDesiredAccess, __in DWORD dwShareMode, __in LPSECURITY_ATTRIBUTES lpSecurityAttributes, __in DWORD dwCreationDisposition, __in DWORD dwFlagsAndAttributes, __in HANDLE hTemplateFile );
这些参数的意义和类型,请问你需要花多少时间来掌握呢?
我们再看看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吗?你不需要学习Windows下面的API吗?你的同事使用了CreateFile这个函数,你不需要搞懂它吗?你不需要看同事的代码吗?你不需要去维护别人写过的代码吗?
如果你还是这么想,那我还可以再举其他例子!就拿创建线程的例子吧,下面是2个在Windows下面创建线程的例子,第一个是创建安全工作线程,第二个是创建界面线程,还有一个函数我没有放下面,是创建不安全的工作线程的,具体的原理大家可以参考《win32多线程程序设计》,作者:(美)Jim Beveridge & Robert Wiener 著,侯捷 译 这本书。
//线程安全的工作线程函数 uintptr_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 DWORD dwCreationFlags, __out LPDWORD lpThreadId );
做Windows下面的开发,上面两个创建线程的函数我们都必须掌握。当然了, 你也可以只需要知道 _beginthreadex 来在Windows下面通吃,但是当看到别人的代码使用CreateThread的时候,你可不要不习惯,MFC里面很多人都用CreateThread。掌握这么多的API累吧?就和你上学的时候背单词一样累。

533ca30f3c0b135e2e871efe880669e9.png

下面我再列一下Linux下面创建线程的函数,
int pthread_create( pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(start_routine)(void), void *restrict arg);

C的API绝大部分都可以在Windows下面运行,在Windows下面学习开发, 你不但要懂得C的API,你还需要多花时间来学习Windows系统本身的API, 这么说应该是Windows下面学得多啊,我要说的是你掌握的API是很多,但是对于一个软件来说,最最重要的是系统架构、数据结构,架构设计得好,对后期的代码维护、功能修改都很关键,这也就是新手写的代码到最后连他自己本人都很难维护的原因,更别说让别人来维护了。

API相当于基本功,系统架构、数据结构是内功,基本功练得越快,我们就越有更多的时间来练习内功。练习内功,我们要多向高手学习。
在学习Windows下面开发应用的道路上,我们需要掌握更多的API,学习后, 让我们的路越走越窄,没有特别丰富的开源代码可以参考,水平提高的速度很慢。

可喜的是,现在很多开源的项目被很多人移植到了Windows下面,也有很多的开源项目是跨平台的,常用的是wxWidget界面库,用法类似MFC,还有qt这个界面库,也很强大,还有开源的3D引擎OGRE,架构非常好,很值得学习其架构模式。但是Linux下面的开源库要远远比Windows下面的开源库丰富得多,我们可以方便地从高手的代码里面学习数据结构,学习设计模式,学习编程技巧,这也就是Linux下面的程序员,可能会比Windows下面的程序员水平更高的原因,毕竟见多识广嘛,熟读唐诗三百首,不会作诗也会吟啊!有写的不好地方大家可以私信我们一起交流学习,需要相关资料的也可以私信我,MF送大家一起学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值