為什麼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 的組件基本都是 C++、C# 寫的,不依賴 Python,自然沒必要帶了


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內置了Python,你現在寫程序的時候,照顧Vista你只用兼容到Python 2.5,還要還考慮XP,你連Python 2.1甚至Python 1.6都要兼容。


Windows 帶了 ScriptHost 呀,直接上 VBS 或者 JS 就是了。呀,您就喜歡 perl/python ?M$ 不喜歡行不行?


內置個ie都被你們罵半死…


內置 Python 主要是因為系統依賴 Python(例如Ubuntu


因為Windows是GUI系統。而GUI應用基本都是用C API(Windows API)和.NET API開發的


Windows 也內置了很多編程環境啊

VBScript

PowerShell

這些都是啊,只不過都是微軟自家出品


@李遙 提到了 GUI,挺對。

但我以為,問題的實(cao)質(dian)還能進一步——

因為 Windows 的 GUI 做不到家,於是想方設法要和「命令行」劃清界線。


主要是因為內置了也沒人用……而且自己去下載一個安裝包安裝也不是什麼難事……


Windows跟Linux是兩個不同風格的體系。

Win:簡單易用,但是開發上略顯粗獷。重視簡單操作。

Linux:開源化、多元化。CGI還是很常用的,不可避免地需要各種功能強大的腳本類或者shell類腳本。

相比之下,我覺得Windows提供的更多的是「整機」。而Linux提供的更多的是「零部件」。而出於這個原因,Linux下面也就需要各種「加工廠」(也就是Perl啊Python啊之類的了)。當然,各有各的好處。整機對使用者的要求更多的是如何去操作,而加工廠則要求使用者學會一定的設計才能夠得心應手。後者的起點會高一些,但是達到一定層級之後,Linux下一個使用者則會明顯感覺到自己的自由度會很高。

說道為什麼不內置,那其實原因也很簡單了。日常中需要完成的大部分操作應該已經有存在的軟體了,小部分的循環性操作,批處理也差不多搞定了。偶爾遇到一個開發,一般的IDE也可以搞定了,makefile什麼的也就不一樣了。

從微軟的利益角度考慮來看的,那就不只是這些了。如果內置了這麼多東西,讓大家都去使用這些工具,接受Unix思想的洗禮,那麼微軟的生態環境以及產品還如何更好推廣呢?

差不多了,我覺得我考慮的就是這些。


最根本的原因是windows的生態環境和*nix生態環境完全不同.

整個windows生態環境在我看來就是計算機行業的異端. 其中的方方面面都是以微軟的方式在運轉, 與真正的計算機行業基本上沒有交集. 而perl, python, ruby的大本營在*nix, 就算在windows有port, 也只能是port而已, 永遠做不了大事.


MS內置IE瀏覽器的教訓還不夠明顯嗎?

如果MS內置某個版本的Python,那大家寫腳本的時候就必須要兼容這個版本了。


其實我也不確定,猜的。

1. 系統面向群體,windows本來就是面向普羅大眾,Perl和Python這些語言,除了增加系統體積,完全沒用。如果是工程師,安裝起來也很簡單吧。

2. 系統內核,Win 系統一向只附帶自己的產品,從內核到外部所有的東西都是Microsoft自家的,加上這些開源的語言,同時是個閉源的系統,實在彆扭。Linux等等本身就偏Geek,同時這些語言也是優先在這個平台上產生,也是開源軟體,基因相同。

以上,可能都是錯的。


因為都不是MS自家產品,license就不一能過關。


推薦閱讀:

為什麼 Chrome、Firefox 等最受歡迎的瀏覽器沒有進入 Mac App Store?
為什麼微軟的visual studio code不是來自identified developers?
作為一個 Emacs、終端、瀏覽器的重度用戶,在考慮價格因素的情況下,你是否認為 Mac OS 比 Linux 發行版更值得使用?

TAG:macOS | MicrosoftWindows | Python | Linux | Perl |