為什麼Windows不內建Perl,Python等程式設計語言環境?
最後更新:2016-06-06
來源:互聯網
上載者:User
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 做不到家,於是想方設法要和「命令列」劃清界線。