為什麼 Linux 搭建各種開發環境相較 Windows 如此簡潔容易?

來源:互聯網
上載者:User
如題

回複內容:

我至今覺得Linux/Unix寫python方便,後端開發確實有優勢,shell好用,各種包管理方式(apt,yum)相對來講方便很多。我在win下寫python的時候很多包安裝都自己編譯一遍,否則容易出問題。

但是開發也分很多種啊,做.Net的,做底層(MCU/FPGA/PLC)的,做WP的等等等等。平台還是要需求決定的,需要做什麼就選什麼平台是最務實的,粉這個黑那個最沒意思了。Win作為面向福士同時要相容各家硬體的通用系統絕對算得上工程史上的經典,不管怎麼樣win還是大部分工程師選用的平台啊,visual studio還是很好用的。有時候在ubuntu下面經常能遇到各種無語的bug,系統組件丟這個丟那個自己還要再裝一遍。

這個問題題主有挑起雙方對噴的嫌疑啊,Google就可以解決了。


有些軟飯也有點神經過敏,有人說win不好就忍不住跳出來開啟嘲諷題主模式,就跟知乎上很多女權主義者一樣。Mac黑得,Win就黑不得? 首先, 是的. Linux搭建 *各種* *開發環境* 相較Windows確實簡潔很多.

為毛?
原因很簡單, 就是因為Linux發行版大部分都有自己的包管理系統. 所以其搭建"各種""開發環境"確實就是比Windows簡潔很多.
對於包管理系統, 你可以理解為一個介面或者使用者介面, 這樣你就會更好的明白包管理系統的作用.

注意加黑的兩個詞語:

第一, 各種
意思是你可能需要安裝 各種環境, 比如今天需要Python, 明天需要Ruby, 後天RoR, 後面還有有Java, Scheme, Clojure....等等.
包管理提供了一個囊括了很多軟體的安裝/卸載/配置等管理操作的統一介面. 當你需要安裝軟體的時候, 只需要通過這個統一的介面, 使用統一的調用規範, 這樣就保證了"簡潔". 只要是軟體庫中的軟體, 你都可以以同樣的方式來安裝(我們不討論更具體的是命令列介面還是圖形介面的點滑鼠, 因為大部分包管理都同時提供了兩者供你選擇, 這屬於更上層的介面, 你甚至可以封裝成Siri一樣的語音介面), 比如:
  • 需要Ruby, 可以: "xxx 安裝 Ruby"
  • 需要python的源碼, 可以: "xxx 安裝 python的源碼"
  • 單獨需要某個庫(這個其實不常見), 可以: "xxx 安裝 某某庫"
  • 開發需要用到某個庫, 可以: "xxx 安裝 某某庫的開發版"

這裡的xxx就是包管理系統, 任何額外的工作都不需要. 看到這裡, 你已經很清楚了, 包管理就是你的軟體管家, 你安裝軟體, 要得就只是向管家提要求, 管家負責滿足你需求, 其實, 管家還負責他幫你安裝的軟體的穩定性, 保證他幫你安裝的版本肯定是經過充分測試的.

換作Windows, 你需要做的是, 去每個軟體的官方網站, 下載相應的軟體包, 自己安裝, 然後使用. 當然, 可能還不能滿足你的需求, 需要安裝額外的軟體庫, 由於沒有管家, 你是需要自己去找好了下載安裝的. 我想玩遊戲的同學很多都曾經體驗過"Directx 9.0c"的痛苦. 即使現在, 我在自己機器上安裝Nvidia顯卡驅動的時候, 還可以看到顯卡驅動的安裝程式內顯示正在幫你安裝.Net環境提示. 這或許是Windows系統有機制在幫你安裝(也可能是顯卡驅動自己幫你下載安裝), 但是這個邏輯卻需要在顯卡驅動的安裝程式內考慮, 並且在介面中表示出來, 其實並不是一個很好的設計範例.

卸載軟體, 同理, 不贅述.
第一點, 總結來說就是, 如果你需要裝各種各樣的軟體, 當然有個軟體管家比較方便.

第二, 開發環境.
Linux本身的目標人群就大部分是程式員/系統管理員, 其特點就是預設開放了系統的各個部分. 你可以理解為, Linux預設是提供給開發人員或者系統管理員使用的. 你會更多的與系統互動, 時刻知道系統的存在. 作為Windows, 其實預設是給普通使用者使用的, 努力的是隱藏系統的存在, 讓使用者使用系統上的各個軟體. 一般的發行版, 其實預設就會提供一個shell環境, 以及python或者其他類似的指令碼語言環境, 當然, 再進一步的其他開發環境, 可能需要你使用你的軟體管家來安裝了.
再說一下開發環境選擇的靈活性, 開發環境是一個多個部分組成的系統, 每個開發人員對系統的組成都有自己偏好的組合. 比如使用不同的IDE. 這裡的意思就是, 開發環境是沒有生產環境那樣的嚴格要求的. 必須安裝什麼軟體或者必須安裝某個版本, 在開發環境中大部分情況下是不存在的. 那麼, 作為開發人員, 如果追求簡潔的安裝開發環境, 就可以完全使用包管理給你提供的軟體和版本.
第二點, 總結來說, Linux預設提供給開發人員使用, 不需要重新設定, 同時, 開發環境都可以直接使用軟體包裡的東西, 只要你追求簡潔安裝.



無關的廢話:
在我看來, 每個人造的系統都有其背後的一套邏輯. 當你使用這個系統的時候, 需要看到這套背後的邏輯. 這個邏輯, 如果你可以接受, 便可以正常使用這套系統了, 如果你喜歡, 那麼就可以歡快的使用了. 如果不喜歡, 那麼可能這套系統真的並不適合你, 換個就是了. 怕的是: 你不喜歡這套系統的邏輯, 卻失去了選擇的自由, 我想, 這就是保持多樣性的意義.

如果題主的問題, 確實是想知道問題中的為什麼. 那麼, 我對這個問題為什麼的回答其實就是一句話, "Linux大部分發行版內建包管理系統". 如果是想要引戰, 確實意義不大. 因為, 光Linux使用者裡面, 各種各樣的內戰就此起彼伏(其實大部分的信仰之戰都來自於這群使用者, 因為確實選擇太多), 真的沒有太多的使用者(本來人數就不多)去考慮Linux與Windows這塊戰場.Windows 也有裝起來非常簡單的開發環境啊。
但是賣錢。
主要是包管理器比較方便,ubuntu為例,需要libevent直接apt-get install libevent-dev就好,win大概就需要從編譯源碼走起了。

為了避免引起不適,我還是匿了吧。yum,apt-get之類絕對是個好東西。事實上,需要不同軟體組合起來用的情境,Linux是要比Windows來的更簡單。

上面好多吐槽的,解釋一下Windows8開始的軟體商店,是微軟閑著無聊推出的嗎?360軟體管家那麼多人用,也是因為360是個流氓嗎?包管理器大法好,另外效率也是一個加分項。哪個簡單哪個複雜我不知道。

只記得當年,會裝MS SQL Server的就是全班女生的男神。
像我這種只會apt-get mysql的,活該孤獨一生。

所以,
微軟大法就是好!
就是好!
就是好!
就!是!好!前人種樹,後人乘涼。

只要有人把包給你做好,裝個開發環境,分分鐘搞定,沒有你只能一個個包自己下載編譯,以it業的人工那麼貴,要是每個員工每個包都要自己編譯一次,老闆肯定要在廁所哭死。

這幾年freebsd幹得最正確的事情就是加入了pkg。不然編譯小工具還好,大組件那是死的心都有了 !想到第一個是Yum源

第二個是不需要經常重啟小白聽說boost挺好用的,裝一下唄

VS下面 (http://stackoverflow.com/a/2655683 ):
下載, 解壓, b2 --參數一大坨(什麼鬼), 用zlib還要裝個啥...

Ubuntu下面 (How to Install boost on Ubuntu? ):
sudo apt-get install libboost-all-dev

您說呢
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.