運維為什麼要學程式設計?程式設計為什麼是Python?
作者介紹:
comyn,李學明。python大神,原大眾點評運維平臺架構師,騰訊廣告部核心運維專家,餓了麼Python運維開發高階總監,現就職於海淘公司。多年一線運維經驗,參與過架構改造、平臺遷移、自動化建設等運維核心專案,對開源系統都有深入理解,如LVS、Haproxy、MogileFS、Varnish、Nginx等,曾修改iptables核心實現實時流量映象複製,奠定了大型公司流量無損壓力測試模型。被廣大網友稱之為“掃地僧”,無所不能,從裝機、到寫程式碼、到千萬PV 架構細節、都有深入研究。
為什麼是要學程式設計
君子求諸己,小人求諸人
不知道大家有沒有感受到雲端計算的威脅?我已經深深的感受到了來自公有云的威脅,雖然國內雲環境還不成氣候,但威脅無時不在。
按照當前的發展趨勢,運維,或者說中級運維的需求會越來越少,為什麼會這樣?因為隨著自動化程度的提高,尤其像docker這樣的容器技術的發展,更多的運維淪為操作工,而這是初級運維的事,我花5k請一個應屆生能操作得很好,而且還聽話,我幹嘛要花15k去僱你。
然而,也並非所有運維都淪為操作工,那些在某一領域有深入研究的專家,在需要他的地方,永遠是塊寶,這樣的人,無須我多說,屬於行業裡拔尖的那一小撮,不經過一番磨練,常人難以抵達那個高度。
說到這裡,大家該開始灰心喪氣了,其實沒必要,我為什麼不能成為拔尖的那一小撮呢?
成功沒有捷徑,但有的路好走一點,有的路難走一點,而通往高階運維的路,學一門程式語言可能是最好走的一條路。
因為它一步一個腳印,你看得到。這句話怎麼理解呢?我說我的一個小故事,在我剛畢業那段時間,我花了兩個月時間去優化一個系統,所有PHP模組靜態編譯,甚至作業系統都換成了getoo,能靜態編譯的都靜態編譯了,最終卓有成效,平均響應時間從3秒提高到了2.8秒。這是何等的沮喪。
後來,當我開始程式設計的時候,我每天,甚至每小時,我都能看到我的效果,雖然也有起伏,但一路上風景都很好。
程式設計是一種創造,在創造的過程中,你能體會到造物主的樂趣。而且能給你啟發。當我在程式的世界裡徜徉一段時間之後,回頭看我當年所作的優化,很多曾經難以理解的原理,瞬間清晰明瞭,因為我真正從怎麼創造它的角度去看,去思考了,當你真正的想過怎麼去創造,那麼你必然明白為什麼會這樣。
因為程式設計是一種創造,所以你總是能看清最本質的東西。
為什麼是Python
Python是目前為止,上手最快的一門語言,而且它剛好夠用
前面我們說了學習程式設計是一條通往成功的相對好走的路,然而,我現在要說的是,到目前為止,Python是這條路中最好走的一條。
Python不是最快的語言,Python不是功能做完備的語言,Python不是應用最廣泛的語言,然而,Python是一門最容易上手的語言,而且它剛好夠用。
我為什麼說Python是一門最容易上手的語言呢?現存的程式語言種類不比自然語言少,然而常用的就那些,大家可以去看程式語言排行榜,雖然那個榜單沒什麼指導意義,但是,前50種語言,已經包括了你所聽說過的大多數語言,而這50種語言裡,有很多你可能是第一次聽說。鄙人不才,我用來實際開發過最終用於生產環境的專案的語言,也就五六種,而以我淺薄的見解,這其中,Python最容易上手。
我初次接觸Python,是我大學二年級的時候,那個時候我剛剛學完譚浩強版的C語言,對程式設計完全沒有一點概念,當時所寫的最複雜的程式就是遍歷單向連結串列,在其中插入和刪除節點了。
那個陽光明媚的下午,其他同學要麼在泡妞,要麼在打魔獸,當時流行的還是冰封王座,我既沒有妹子,又實在不會玩遊戲,百無聊賴,忽然看到一本講蟒蛇的書,花了一個下午,匆匆看完一半,忽然感覺像進了一個新的世界。原來程式設計還能如此簡單,原來列表是內建資料結構,逆天的是,連字典都內建了,而且整形永遠不會溢位。
然後我就對Python著迷了,一個周之後,我已經能用web.py開發簡單的網站了,我資質魯鈍,到這一步,花了一個周,聰明的你,也許三天就能搞定。
所以,在我看來,現存的語言裡,上手最快的就是Python,雖然說是一家之言,但是從Python的使用者分佈,也大致可以看出一些。Python在生物學,數學,經濟學等科學領域使用非常廣泛,而IPython notebook這一工具,逐漸成為資料建模領域的重要工具。
科學家們大多數精力在搞科研,所以當然要選擇容易上手的語言,它們可沒時間像程式設計師那般去調教程式語言。
你也許要說,bash不是更容易上手嗎?對,你說得對,但是bash並不夠用,雖然也有人用bash開發出了貪吃蛇,甚至還有bash的web框架,然而bash並不夠用,這點你也許比我清楚。
然而,Python卻不同,它剛好夠用,這是多麼美妙啊,然而更為美妙的是,它在很長一個階段,都是剛好夠用,無論是你剛剛學習程式設計,用它處理一些簡單的事情,還是你已經很資深,用它開發諸如dropbox這樣的應用,它都剛好夠用。想一想,這是多麼美妙的一件事啊。
一開始,我可以用它來開發一些簡單的腳步,只為一些用bash難以實現的需求,慢慢的,我能把我的指令碼組合起來,逐漸成為一個工程,在後來,我的工程逐漸變大,我開始抽象出標準流程,你在開始打造一個平臺,看一步一個腳印,向著一開始你只能仰望的目標前進,而Python都剛好夠用。
當有一天,你發現它不夠用了,那麼恭喜你,你已經到了一個新的臺階了,那時候,我們該探討一些其他更好玩的東西了。