为什么windows不内置perl,python等编程语言环境?

os x和绝大部分linux发行版都内置python,perl,ruby等编程语言环境,无论是对开发者还是普通用户都是好事,开发者在写程序的时候会有很多选择,不用担心目标机器上没有这一种语言环境而寻找替代,用户也可以拿过去直接运行;运维人员在大规模部署一些脚本的时候也可以省心很多。
为什么微软却不这样做呢?是怕威胁到自家推的产品吗?ps:微软自家的script center里也有perl和python的分类。powershell, vb script, sql and javascript回复内容:
其中一个原因是需求吧。比如说 freebsd 系统曾经把 perl 默认安装,作为系统级别的组件。后来因为种种原因又把 perl 剔出系统,用 awk 做了个替代。因此,现在默认安装最新版的 freebsd 里面没有 python,也没有 perl 更别提 ruby 了。而 mac os x 和 linux 默认安装这些语言肯定是有原因的。有的可能是其他软件的依赖,比如 gnome 桌面就非常依赖 python。一些服务软件依赖 perl,而 freebsd 一个流行的包管理系统就依赖 ruby 等。反观 windows,这个系统根本没有这些需求。不安装也在情理之中。(freebsd 这一点倒是和 windows 类似)
要是windows内置了python,你现在写程序的时候,照顾vista你只用兼容到python 2.5,还要还考虑xp,你连python 2.1甚至python 1.6都要兼容。
windows 也内置了很多编程环境啊vbscript powershell这些都是啊,只不过都是微软自家出品
ubuntu虽然自带了python,却连c/c++的基本编译环境都没有,码农安装之后第一件事儿就是安装build-essential。这说明了,ubuntu自带python,不是让用户写脚本用的,而是因为系统里很多模块是需要运行在python环境里。(ubuntu软件中心就依赖于python,就因为它依赖2.7,导致我想系统默认使用2.6都难,可我偏偏有一些2.6的pyc程序需要运行,你知道有多别扭么?)显然,windows就不用。=========linux发行版、mac os,讲究的是包管理,模块分离,版本依赖。当你需要安装某个软件,相关依赖的底层模块会被自动安装。windows讲究的是一个完整的安装包,除了微软自己的.net framework、direct x等通用底层平台外,绝大部分软件都是将自己需要的模块打包在一起安装。以上这两种模式,都不需要预先安装一堆各种编程语言底层平台(目标机器上有没有啊,大规模部署怎么办啊)。这可以说是从不同方向探索出来的两套可行方案。=========linux发行版、mac os,其平台上的软件很多来自于社区贡献,所以难免基于多种语言。windows都是微软自己开发的,底层平台统一,这是它的优势。
windows跟linux是两个不同风格的体系。win:简单易用,但是开发上略显粗犷。重视简单操作。linux:开源化、多元化。cgi还是很常用的,不可避免地需要各种功能强大的脚本类或者shell类脚本。相比之下,我觉得windows提供的更多的是“整机”。而linux提供的更多的是“零部件”。而出于这个原因,linux下面也就需要各种“加工厂”(也就是perl啊python啊之类的了)。当然,各有各的好处。整机对使用者的要求更多的是如何去操作,而加工厂则要求使用者学会一定的设计才能够得心应手。后者的起点会高一些,但是达到一定层级之后,linux下一个使用者则会明显感觉到自己的自由度会很高。说道为什么不内置,那其实原因也很简单了。日常中需要完成的大部分操作应该已经有存在的软件了,小部分的循环性操作,批处理也差不多搞定了。偶尔遇到一个开发,一般的ide也可以搞定了,makefile什么的也就不一样了。从微软的利益角度考虑来看的,那就不只是这些了。如果内置了这么多东西,让大家都去使用这些工具,接受unix思想的洗礼,那么微软的生态环境以及产品还如何更好推广呢?差不多了,我觉得我考虑的就是这些。
主要是因为内置了也没人用……而且自己去下载一个安装包安装也不是什么难事……
windows 带了 scripthost 呀,直接上 vbs 或者 js 就是了。呀,您就喜欢 perl/python ?m$ 不喜欢行不行?
其实我也不确定,猜的。1. 系统面向群体,windows本来就是面向普罗大众,perl和python这些语言,除了增加系统体积,完全没用。如果是工程师,安装起来也很简单吧。2. 系统内核,win 系统一向只附带自己的产品,从内核到外部所有的东西都是microsoft自家的,加上这些开源的语言,同时是个闭源的系统,实在别扭。linux等等本身就偏geek,同时这些语言也是优先在这个平台上产生,也是开源软件,基因相同。以上,可能都是错的。
因为windows是gui系统。而gui应用基本都是用c api(windows api)和.net api开发的
@李遥 提到了 gui,挺对。但我以为,问题的实(cao)质(dian)还能进一步——因为 windows 的 gui 做不到家,于是想方设法要和「命令行」划清界线。

Posted in 未分类

发表评论