windows既然不开源,那程序员是怎么为它开发支持软件的?
感谢邀约,你的提问题两者之间没有任何关系,系统是否开源和软件一点关系都没,就好比我们使用的苹果手机一样,苹果系统不开源,但是其使用人数多,其市场价值就越大,自然就有更多人的愿意在这个平台上开发软件,以下是我针对这个问题的思考,仅供参考:
首先弄明白系统和软件的关系
计算机系统软件包含系统软件和应用软件,没有装任何软件的计算机称为裸机,裸机是很难被人们使用的,软件是计算机系统必不可少的部分。系统软件是直接运行在裸机上的系统软件,又是其他软件能够运行的基础,下图表明计算机硬件、软件之间的关系
Windows桌面操作系统从85年发布的Microsoft-DOS到现在的windows 10,有数据显示,Windows仍然雄踞91.59%,其次是Mac占6.27%,最后的Linux占2.14%,在我国的使用率更是高达了95%。
因为windows为程序开发人员开放了很多封装的模块接口,方便程序去调用,这些接口就在msdn都能查到,称之为api函数接口,windows封装了很多库文件(dll库),分别对应实现不同的功能,程序员开发软件的时候去调用这些dll库文件里对应的api函数就可以了。
Windows是微内核架构,各模块之间由消息机制通讯,模块之间藕合度相对较低,可以封装成独立的API接口给应用程序调用,而不必开源核心代码。因为API返回错误,问题就在这个模块上,不会牵扯到其它模块,即使不开源也容易找到问题。
宏内核的Linux就不一样了,模块之间本身就是靠API调用,外层调用的API返回了错误,往往可能是上一层API返回的,那就要去分析它的源码才能找得到问题。
题主可能不太懂软件开发,是这样的,能否开发软件和开不开源是没有直接关系的。微软提供了很好的文档库MSDN,里面有详细的接口功能、入参和返回值的介绍,程序员只需要根据这些文档就可以编写相应的软件了。
举个生活中的例子,我们去办身份证,只需要提供一些必要的材料,例如户口簿就可以了,然后等待领证就好。这里还可以多说一句,办***一般不是立即就可以拿到手的,往往会给一个回执单,后续再通知我们去拿证件。
这里必要的材料就是入参;公安局户口办理就是功能;公安内部具体的办理流程就是功能(叫接口更合适)的内部实现;回执就是受理结果;最后的***是最终结果。
这还相当于软件中的异步调用过程——先受理后回调。
最后,这只是给小白的一个简单的例子,软件开发者无需纠结其中不准确的地方。
基于windows开发并不需要开源。API函数和应用框架就是开发人员与操作系统的协调,绝大部分底层工作是由编程软件来做的,软件开发人只是需要关注应用建模和人机界面等。
开源对软件开发人员来说并没有直接意义。操作系统得出现就是为了减少开发人员直接与硬件打交道,共享系统调用和服务,比如消息机制,从这个角度看,开源并没有给开发人员带来好处。
一个好的编译系统才是开发人员最需要的,连大部分A P I都包装起来,可以认为开发人员面对的是一个虚拟机。一个虚拟机由硬件 操作系统和[_a***_]组成。
比如要在屏幕上显示 哈哈哈,在Delphi中写 showmessage(“”哈哈哈”)。