為什麼程式設計師要會 Linux
(給 伯樂線上 加星標,看經典文章 )
作者:貓嗅花
三大作業系統概述
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: