最新消息:

为什么Windows不内置Visual Studio呢?

其他技术 koic_zhzz 71浏览 0评论

这两天笔者闲的蛋疼去浏览知乎,看到这个很无语的问题。

笔者的感觉是,windows的用户大部分都是不需要这个Visual Studio的,干嘛要内置呢?

Visual Studio本质上应该算是一款IDE,带编译器的

为什么Windows不内置Visual Studio呢?


网友看法

作者:pansz
来源:知乎

我告诉题主,为什么早年间会有「操作系统内置编译器」的做法。

因为那个时候,Unix界实现的跨平台,是「源码级跨平台」而不是「二进制跨平台」。

也就是说,每家小型机产商都可以是不同的CPU架构,每家产商都独立开发出属于自己的操作系统。

在不同架构,不同操作系统中,怎样让一个软件运行呢?Unix解决了这个问题,为了解决这个问题也同时发明了C语言。这个语言被设计为能够在多个不同CPU体系架构中编译。不同操作系统只要提供了C语言编译器,就可以让代码在自己的操作系统中运行。

所以,我们可能会购买一台从来没有用过的新CPU架构的机器,搭载一台从来没有用过的产商提供的操作系统(这些系统都是 Unix 体系兼容的),——但只要操作系统产商提供了编译器,软件在真机上编译通过,就能跑。

那个时候,我所在的公司买Oracle,是Oracle的工程师登录到真机,编译,生成了项目,然后删除源代码,交付给我们的。因为公司的几台服务器,每台都是不同的操作系统,都是不同的CPU架构,都是不同产商的产品。

换句话说:在Unix的世界,C语言编译器,确实是操作系统必须提供的东西,因为那个时候,计算机的体系架构非常多,类似Unix的系统也非常多,他们根本就做不到二进制兼容,而是只能做到源码级兼容,所以操作系统必须提供编译器,不然用户买了机器,根本没法安装软件。

Linux必须提供编译器也是类似的原因,因为这个世界上有很多不同的Linux(至少曾经有),他们并不一定能做到二进制兼容,但往往可以做到源码级兼容,只要系统有编译器,那么源代码总是能编过的,能跑(就算真不能运行还可以现场改代码)。而二进制能不能跑就很难说了,或者本来只需要修改一行代码就能解决的问题,因为你是二进制没法兼容,程序就全废了。

苹果提供xcode则是完全不同的原因:那是因为苹果的一大卖点就是为了将机器与iOS开发捆绑,通过强迫iOS开发人员必须购买苹果电脑才能开发的办法,把这些开发人员绑定到MacOS体系。既然绑定开发人员本来就是苹果的一大卖点,那苹果当然需要提供xcode,虽然并不是预装,但确实是免费提供的。

至于微软为什么不内置VS?因为微软的玩法完全不一样。它除了x86以外的平台,生态都不太行。等于说是它几乎只有一个硬件架构。软件方面,Windows在二十多年前已经完成了彻底的NT化,所以现在微软的系统,处理器架构跟操作系统架构都是统一的,程序能够做到二进制兼容(微软这么多年的包袱也是为了这个二进制兼容)。

如果微软平台的程序能够做到二进制兼容,那软件直接提供二进制包就行,微软自然就不想要内置VS了。顺便还可以再赚开发商一次钱(你们得购买VS授权呀)。

所以总结:微软不内置VS,因为微软阵营玩的是二进制兼容的套路,这个套路在更换操作系统版本与系统架构时不需要重新编译程序。自然也就不需要在操作系统中内置程序开发工具。而Unix阵营的古早传统则是源代码走天下,操作系统必须提供开发工具,提供编译器工具链,才能在客户提供的软件只有源代码的时候把客户的程序运行起来。两边的策略不一样,所以对提供编译工具链的意愿自然就不一样。


作者:pansz
来源:知乎

我告诉题主,为什么早年间会有「操作系统内置编译器」的做法。

因为那个时候,Unix界实现的跨平台,是「源码级跨平台」而不是「二进制跨平台」。

也就是说,每家小型机产商都可以是不同的CPU架构,每家产商都独立开发出属于自己的操作系统。

在不同架构,不同操作系统中,怎样让一个软件运行呢?Unix解决了这个问题,为了解决这个问题也同时发明了C语言。这个语言被设计为能够在多个不同CPU体系架构中编译。不同操作系统只要提供了C语言编译器,就可以让代码在自己的操作系统中运行。

所以,我们可能会购买一台从来没有用过的新CPU架构的机器,搭载一台从来没有用过的产商提供的操作系统(这些系统都是 Unix 体系兼容的),——但只要操作系统产商提供了编译器,软件在真机上编译通过,就能跑。

那个时候,我所在的公司买Oracle,是Oracle的工程师登录到真机,编译,生成了项目,然后删除源代码,交付给我们的。因为公司的几台服务器,每台都是不同的操作系统,都是不同的CPU架构,都是不同产商的产品。

换句话说:在Unix的世界,C语言编译器,确实是操作系统必须提供的东西,因为那个时候,计算机的体系架构非常多,类似Unix的系统也非常多,他们根本就做不到二进制兼容,而是只能做到源码级兼容,所以操作系统必须提供编译器,不然用户买了机器,根本没法安装软件。

Linux必须提供编译器也是类似的原因,因为这个世界上有很多不同的Linux(至少曾经有),他们并不一定能做到二进制兼容,但往往可以做到源码级兼容,只要系统有编译器,那么源代码总是能编过的,能跑(就算真不能运行还可以现场改代码)。而二进制能不能跑就很难说了,或者本来只需要修改一行代码就能解决的问题,因为你是二进制没法兼容,程序就全废了。

苹果提供xcode则是完全不同的原因:那是因为苹果的一大卖点就是为了将机器与iOS开发捆绑,通过强迫iOS开发人员必须购买苹果电脑才能开发的办法,把这些开发人员绑定到MacOS体系。既然绑定开发人员本来就是苹果的一大卖点,那苹果当然需要提供xcode,虽然并不是预装,但确实是免费提供的。

至于微软为什么不内置VS?因为微软的玩法完全不一样。它除了x86以外的平台,生态都不太行。等于说是它几乎只有一个硬件架构。软件方面,Windows在二十多年前已经完成了彻底的NT化,所以现在微软的系统,处理器架构跟操作系统架构都是统一的,程序能够做到二进制兼容(微软这么多年的包袱也是为了这个二进制兼容)。

如果微软平台的程序能够做到二进制兼容,那软件直接提供二进制包就行,微软自然就不想要内置VS了。顺便还可以再赚开发商一次钱(你们得购买VS授权呀)。

所以总结:微软不内置VS,因为微软阵营玩的是二进制兼容的套路,这个套路在更换操作系统版本与系统架构时不需要重新编译程序。自然也就不需要在操作系统中内置程序开发工具。而Unix阵营的古早传统则是源代码走天下,操作系统必须提供开发工具,提供编译器工具链,才能在客户提供的软件只有源代码的时候把客户的程序运行起来。两边的策略不一样,所以对提供编译工具链的意愿自然就不一样。

转载请注明:落伍老站长 » 为什么Windows不内置Visual Studio呢?

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址