應(yīng)該怎么做才能實(shí)現(xiàn)Python快速入門?
現(xiàn)階段,掌握一門開(kāi)發(fā)語(yǔ)言已經(jīng)成為高級(jí)運(yùn)維工程師的必備計(jì)能,不會(huì)開(kāi)發(fā),你就不能充分理解你們系統(tǒng)的業(yè)務(wù)流程,你就不能幫助調(diào)試、優(yōu)化開(kāi)發(fā)人開(kāi)發(fā)的程序,開(kāi)發(fā)人員有的時(shí)候很少關(guān)注性能的問(wèn)題,這些問(wèn)題就得運(yùn)維人員來(lái)做,一個(gè)業(yè)務(wù)上線了,導(dǎo)致CPU使用過(guò)高,內(nèi)存占用過(guò)大,如果你不會(huì)開(kāi)發(fā),你可能只能查到進(jìn)程級(jí)別,也就是哪個(gè)進(jìn)程占用這么多,然后呢?然后就交給開(kāi)發(fā)人員處理了,這樣怎么體現(xiàn)你的價(jià)值?
另外,大一點(diǎn)的公司,服務(wù)器都上幾百,上千,甚至數(shù)萬(wàn)臺(tái),這種情況下怎樣做自動(dòng)化運(yùn)維?用Shell寫腳本for循環(huán)?呵呵,歇了吧!Shell也就適合簡(jiǎn)單的系統(tǒng)管理工作。
到復(fù)雜的自動(dòng)化任務(wù)還得要用專門的開(kāi)發(fā)語(yǔ)言。你可能說(shuō)了,自動(dòng)化管理有專門的開(kāi)源軟件監(jiān)控也有,直接拿來(lái)用下就好了,但是現(xiàn)有的開(kāi)源軟件如 Puppet、Saltstack、OpenStack、Zabbix、Nagios等多為通用的軟件,不可能完全適用你公司的所有需求,當(dāng)你需要做定制、做二次開(kāi)發(fā)的時(shí)候,你怎么辦?找開(kāi)發(fā)部門?
開(kāi)發(fā)部門不懂運(yùn)維的實(shí)際業(yè)務(wù)邏輯,寫出來(lái)的東西太爛不能用,我自己也做運(yùn)維系統(tǒng),6年運(yùn)維工作經(jīng)驗(yàn),開(kāi)發(fā)出來(lái)的第一版照樣爛的不行,這還是懂的運(yùn)維業(yè)務(wù)邏輯的,讓開(kāi)發(fā)人員來(lái)做,跑偏可能更多了,這就是為什么我見(jiàn)過(guò)很多公司自行開(kāi)發(fā)運(yùn)維平臺(tái),最后都扔那了。
其次,不會(huì)運(yùn)維開(kāi)發(fā),你就不能自己寫運(yùn)維平臺(tái)復(fù)雜的運(yùn)維工具,一切要借助于找一些開(kāi)源軟件拼拼湊湊,如果是這樣,那就請(qǐng)不要抱怨你的工資低,你的工作不受重視了,話說(shuō)人家FaceBook一個(gè)運(yùn)維工程師管2萬(wàn)臺(tái)機(jī)器,運(yùn)維工程師年薪十幾萬(wàn)USD,你以為人家是蓋的呢?哪個(gè)不是身懷絕技,開(kāi)發(fā)運(yùn)維兼?zhèn)?
為什么要學(xué)Python?
Python第一是個(gè)非常牛B的腳本語(yǔ)言,能滿足絕大部分自動(dòng)化運(yùn)維的需求,又能做后端C/S架構(gòu),又能用WEB框架快速開(kāi)發(fā)出高大上的Web界面,只有當(dāng)你自已有能力做出一套運(yùn)維自動(dòng)化系統(tǒng)的時(shí)候,你的價(jià)值才體現(xiàn)出來(lái),你才有資格跟老板談重視,否則,還是老老實(shí)實(shí)回去裝機(jī)器吧!
運(yùn)維開(kāi)發(fā)為什么要用Python?
Good question,為什么不用PHP,JAVA, C++,Ruby,這里我只能說(shuō),見(jiàn)人見(jiàn)智, 如果你碰巧已經(jīng)掌握了除Python之外的其它語(yǔ)言,那你愛(ài)用啥用啥,如果你是一個(gè)連Shell都還沒(méi)寫明白的新手,想學(xué)個(gè)語(yǔ)言的話,請(qǐng)用Python,為什么呢?
首先,PHP是跟Python比的最多的,其實(shí)他倆根本就不用比,為什么呢?兩個(gè)語(yǔ)言適用性不同,PHP主要適用于Web開(kāi)發(fā),可以迅速的做出中小型,輕量級(jí)的WEB網(wǎng)站,但后端嘛,基本還是要借助其它語(yǔ)言,借助什么語(yǔ)言呢?Shell?Python?呵呵。而Python呢,是個(gè)綜合語(yǔ)言,前后端都可以,單拿出來(lái)比Web,也一點(diǎn)不比PHP差,但為什么Web方向上PHP比Python要火?
先入為主嘛,PHP 90年代誕生就是做Web的,Python2000年后才出現(xiàn)Web框架,但論優(yōu)秀程度上,Python的Web框架基本上出其無(wú)左,至少是跟PHP比。
那JAVA呢?好吧,一個(gè)臃腫、中庸、豪無(wú)新意的語(yǔ)言,還是老老實(shí)實(shí)用它來(lái)做ERP吧!搞個(gè)運(yùn)維小平臺(tái),用JAVA真心沒(méi)啥必要,在我看來(lái),JAVA就是穩(wěn)定的中年男人,穩(wěn)定、成熟、禿頂,而Python代表的就是青春,簡(jiǎn)潔、快、干凈、帥!
C++/C,這個(gè)嘛,我只能說(shuō),如果你會(huì)了Python,又會(huì)C的話,那你會(huì)更吃香,但是不會(huì)C的話,其實(shí)也無(wú)大礙,基本上做運(yùn)維的人,搞搞C就是為了來(lái)裝B的,因?yàn)槎鄶?shù)情況下你都到不了看系統(tǒng)底層源碼的程度, 不過(guò)如果你學(xué)好了Python之后,還是建議你學(xué)習(xí)下C++,畢竟相比Python這個(gè)動(dòng)態(tài)語(yǔ)言來(lái)講,C++的效率還是高很多的,但對(duì)新手來(lái)講,不建議做為第一門語(yǔ)言開(kāi)始學(xué)習(xí),為什么呢?打擊自信心…呵呵,你懂的
Ruby,小日本開(kāi)發(fā)的,還不錯(cuò),風(fēng)格跟Python有點(diǎn)像,因?yàn)镽uby onrails出了名,國(guó)外用的比較多,國(guó)內(nèi),放心吧!沒(méi)戲,Python已經(jīng)把它的想象空間都占死了。
當(dāng)然還有新的語(yǔ)言GO,有些搞運(yùn)維的看見(jiàn)做開(kāi)發(fā)的人員搞GO,也想湊熱鬧,覺(jué)得是未來(lái),我想說(shuō),別瞎沒(méi)事跟風(fēng),GO再成功,也不會(huì)變成運(yùn)維開(kāi)發(fā)語(yǔ)言。
有些人覺(jué)得Python效率底,說(shuō)他不能支持多線程,OH,好吧!這個(gè)還有點(diǎn)說(shuō)對(duì)了,但是我想問(wèn),看我這篇文章的有幾個(gè)做過(guò)搜索引擎開(kāi)發(fā)?有幾個(gè)做個(gè)上億PV的并發(fā)網(wǎng)站開(kāi)發(fā)?
有幾個(gè)看過(guò)Linux內(nèi)核源碼?如果沒(méi)有,請(qǐng)別瞎跟著傳了,知道Python為什么不支持多線程嗎?這句話問(wèn)錯(cuò)了,其實(shí)Python支持多線程,只是不支持多CPU多線程,也就是一個(gè)程序spawn出來(lái)的多線程只能占用一個(gè)CPU,但是為什么呢?噢,因?yàn)镚IL,GIL是什么東東,請(qǐng)自行腦補(bǔ)。。。但是你非得用多線程嗎?你可以用多進(jìn)程呀!再牛B你還可以用協(xié)程呀,這些Python支持的都很好呀,如果你的程序邏輯不好,搞個(gè)多線程也快不起來(lái)。
我認(rèn)識(shí)一個(gè)博士講過(guò)一句話,我覺(jué)得不錯(cuò),他說(shuō),程序效率高低,80%都是寫程序的人決定了,語(yǔ)言本身就占20%,所以下次有人再說(shuō)Python效率低的時(shí)候,請(qǐng)讓他先回去自己檢查下自己的程序多了多少無(wú)用的邏輯、循環(huán)等等。這個(gè)博士自己用Python寫的WEB程序,一臺(tái)服務(wù)器每天能處理上億請(qǐng)求,一秒并發(fā)近兩萬(wàn),什么WEB框架這么牛B? 別問(wèn)它是誰(shuí),它叫tornado。
Python能否自學(xué)?
當(dāng)然可以,什么都可以自學(xué),前提是你得能學(xué)得會(huì),見(jiàn)過(guò)N多菜鳥(niǎo)踏上自學(xué)的不歸路,他媽的什么都能自學(xué)的話,還用大學(xué)干什么?自己在家鱉不就行了?
動(dòng)不動(dòng)就說(shuō)Python是個(gè)腳本語(yǔ)言,自己看看就不會(huì)了,說(shuō)這話的只可能有兩種人,一種是高手,一種是菜鳥(niǎo),對(duì)于高手來(lái)講,他肯定已經(jīng)會(huì)其它語(yǔ)言,Python在這種情況下,自學(xué)當(dāng)然就很容易學(xué)會(huì),幾年前我剛接觸Python時(shí),代碼遇到問(wèn)題,找了個(gè)開(kāi)發(fā)的哥們幫調(diào)試,哥們幫調(diào)了十幾分鐘就搞定了,結(jié)果人家以前一句Python代碼也沒(méi)寫過(guò),為什么,因?yàn)檎Z(yǔ)言都有相通之處,一門掌握好了,其它門自己學(xué)學(xué)就會(huì)了。
但對(duì)于新手來(lái)講,沒(méi)任何語(yǔ)言基礎(chǔ)就開(kāi)始自學(xué),那么恭喜你,菜鳥(niǎo)們見(jiàn)此文章為證,從今天開(kāi)始自學(xué),一年后,你要是能自己做出個(gè)軟件來(lái),來(lái)找我要一千塊錢。哈哈,真的。
基本上自學(xué)是屬于專業(yè)人員干的事情,就像會(huì)一門樂(lè)器了,自己學(xué)下就可能學(xué)會(huì)另一門,但我之前沒(méi)音樂(lè)基礎(chǔ),跟著老師都沒(méi)把吉它學(xué)會(huì)。
所以奉勸沒(méi)基礎(chǔ)又想學(xué)Python的同學(xué),花點(diǎn)錢去報(bào)個(gè)班學(xué)吧!拿錢換時(shí)間,時(shí)間是生命,錢沒(méi)了可再掙錢,時(shí)間過(guò)去了就再也不會(huì)回來(lái),如果你不信邪,非要自己學(xué),那我佩服你的勇氣,不過(guò)自己試試就知道了。
當(dāng)然天下沒(méi)有絕對(duì)的事情,我大天朝牛X的人多了去了,很多人也能通過(guò)自學(xué)編程,最后變成高手了,我的Python也是自學(xué)的,但是我可以說(shuō)自學(xué)過(guò)程中走過(guò)了N多坑好么,好多時(shí)候糾結(jié)在一個(gè)簡(jiǎn)單的小問(wèn)題上好幾天都卡住,當(dāng)時(shí)如果不是因?yàn)楣ぷ餍枨螅烙?jì)早放棄了,這還是Python,就別說(shuō)其它復(fù)雜的語(yǔ)言了,我相信除了少數(shù)的大牛之外,多數(shù)人不比我聰明到哪去,選擇自學(xué)的同鞋們,一路珍重。
說(shuō)了這么多,只想告訴那些迷茫不知所措該學(xué)什么語(yǔ)言的新手們, 在你還沒(méi)學(xué)好走路的時(shí)候,不要老想著,將來(lái)我當(dāng)上老板了,我是開(kāi)寶馬呢?還是開(kāi)奔馳呢?
先學(xué)會(huì)騎自行車吧!