為什麼程序員要會 Linux

語言: CN / TW / HK

(給 伯樂在線 加星標,看經典文章

作者:貓嗅花

三大操作系統概述

windows, macOS, linux是當今主流三大操作系統,普通用户一般是選擇windows或macOS, linux主要是佔據服務器領域市場。

這三個操作系統給人的感覺是:

  • windows經濟適用,檔次較低; 

  • macOS高端大氣上檔次; 

  • Linux是極客專用,一個黑乎乎的窗口,各種花花綠綠的指令在閃爍,對着鍵盤噼裏啪啦一通亂敲,就能竊取各種機密...

普通用户對於操作系統的選擇很簡單,經濟實用選windows,錢多講究格調選macOS, 畢竟普通用户切換操作系統的成本並不大。

而程序員就不一樣了,換一個操作系統,就意味着所有開發環境都要一併更換。

而且在程序員羣體中,操作系統有以下的鄙視鏈:macOS-->linux-->windows。

其實操作系統的比較並不是簡單粗暴的單一維度比較,用windows並不意味着low,用linux也不等同於你就是一個極客。

關鍵在於你是如何使用。就好比編程語言的選擇,php是最招人黑的語言(沒有之一), 但黑php的人中有不少人寫的代碼同樣不堪入目。

不過作為一個程序員,你很有必要學會linux,如果你的程序最終是跑在線上的Linux服務器上,那麼你就更應該從現在開始投入linux的懷抱中,早日從windows脱坑。

至於macOS,在命令行上與linux絕大部分相同,都是類unix的操作系統。

簡單地説,macOS是一個比windows界面更加美觀,同時又兼備linux強大命令行的操作系統。要説macOS的缺點,那就是貴...

windows_vs_linux_vs_mac

windows與linux的根本區別:自由

windows與linux的設計理念有根本性的區別:

windows:用户不知道自己想要什麼,也不明白自己在做什麼,更不打算為自己的行為負責。

因此windows將所有操作都隱藏起來,只給用户提供封裝好的功能,用户只能在操作系統限制的範圍內操作,如果是普通用户,會覺得很windows很舒服,因為不需要思考,只需要按照指示去操作。

但對於開發人員而言,這種設計理念是無法接受的,一旦要做出一些超越封裝好的功能之外的事情,就會出現各種難以意料的情況,而且很多情況下,這些問題是無解的。

或者只能用極其蹩腳扭曲的方式去勉強處理,然後瑟瑟發抖地期待着程序能正常運行。因為一旦程序崩潰,你也會為之崩潰。

在windows下做開發,那種體驗就好比在陪伴一個任性的女朋友,雖然長得清秀靚麗,但喜怒無常,她開心時,彼此相安無事,她不開心時,就直接哭鬧,你問她:怎麼了?她也不説原因,只是一直哭。

你只能試着用各種方式去哄她開心,即使這次能哄好她,並不意味着下次同樣的方法能奏效。這樣的相處方式,很累。不是她不好,而是彼此不適合。

即使終日相伴,卻依然對其一無所知

無理取鬧

linux:用户知道自己想要什麼,也明白自己在做什麼,並且會為自己的行為負責。

linux將所有操作權都交給了用户,她相信用户是理性的聰明的,忠實地執行用户的指令,向用户暴露所有的細節。

用户在擁有自主權的同時也擁有了破壞力,因此普通用户根本無法駕馭,可能一個指令就把操作系統弄崩潰了。

對於開發者而言,linux的開放與自由給了我們無限的可能性,我們能看到程序是如何運行的,運行報錯也會有友好的提示。

根據報錯指引往往能將問題解決。與之相處,好比與一個成熟的女性相處,歷經風雨,已經不再關注浮誇的外表,而是關注內在的涵養。

剛接觸時,可能會覺得她高冷,慢慢地,會發現她很善解人意,心情不好時她會跟你説是什麼原因造成的,彼此商量如何解決這個問題,而不是無來由地崩潰。

與之相處,會感到很舒服,彼此坦誠,無需套路,你在想什麼,我都知道。我在念什麼,你也明白。

因此,我選擇linux的原因在於自由、舒服,簡言之:爽!

至於win10自帶的WSL(linux子系統), 説起來都是淚,幾個月前,我興沖沖地折騰,以為windows可以完美地支持linux,結果,連個nginx都跑不起來,去wsl的github源碼查看issue,才知道這就是wsl的一個bug!

此外,還有其他各種坑,這感覺就像:分手後的任性前女友畫風突變:善解人意,人情練達。你欣喜萬分地準備複合,她馬上又原形畢露。咱能不能多些真誠,少些套路...

迅哥説過:生命是以時間為單位的,浪費別人的時間等於謀財害命,浪費自己的時間等於慢性自殺。對於程序員而言,開發環境遠離windows,就是珍惜生命的表現(開發windows程序的除外)

選擇哪個發行版的linux

redhat,suse, Debian等各個發行版的linux都有各自的忠實擁護者,無法判斷這些發行版孰優孰劣,畢竟“存在即合理”。我從實用的角度來看,選擇的是redhat(紅帽)系列的centos。

因為線上的服務器大多數是ceotos,我們的程序最終是在線上運行的,如果能將本地環境配置得跟線上一致,就可以減少很多莫名其妙的環境問題。而且熟悉使用centos,基礎的運維能力也都掌握了

至於版本選擇,肯定是要選擇最新的centos7, centos7與centos6存在很多差異,性能有很大的提升

如何學linux

工作中,看到不少工作好幾年的程序員,在操作linux時特別生疏,只會最基本的幾個命令:cd ls mkdir 等。

vim編輯器的操作更是讓人看了很着急,被譽為編輯器之神的vim在他們手中,完全沒有半點靈氣,感覺就像是編輯器之屎。

之所以會出現這種現象,很大原因在於他們的學習方式錯了,不少人都知道linux很重要,不掌握linux,基本上就只能停留在最基本的增刪改查功能上。

他們學linux的方式可能是看書,也可能是看視頻,甚至有些還會去背命令,但由於他們的操作環境是windows,linux的應用場景很少。

根本沒辦法將所學的知識運用,更加感受不到linux的魅力。

學linux最好的方式,就是直接去用!直接將自己的開發環境都改成linux,一開始很蹩腳,很不適應,這很正常。

如果你一直感到很舒服,只能説明你一直沒有進步。想想我們學了那麼多年英語,絕大多數人還是無法掌握英語,看到英語文檔就直接自動屏蔽。

其原因都是:一直在學,但從來沒在用。只學而不用,沒有半點用。

- EOF -

看完本文有收穫?請分享給更多人

推薦關注「伯樂在線」,看 精選 IT 職場文章

點贊和在看就是最大的支持:heart: