最近有人問我:系統管理員該學什么語言。
如果你是一名Windows系統管理員,那么答案很簡單:該學PowerShell。
如果你是Unix/Linux系統管理員,答案就比較復雜,因為有更多的選擇。我不想引發一場“語言大戰”,而是想說:
我認為,每一個Unix/Linux系統管理員都應該知道外殼程序(sh或bash),另外還要知道Perl、Ruby或Python當中的某一門語言。至于學哪一門語言,并不重要。
圖片來源:O'REILLY編程大師
在我看來,上面這番話比我認為Perl、Python或Ruby哪門語言更優秀或者哪門語言有更多的職位空缺(或者使用其他任何標準)來得重要。容我細細解釋:
學習bash確實蠻重要,因為bash對于你許多方面的工作來說極其重要。無論是調試/etc/init.d腳本,還是編寫一個小型包裝器。每一個Unix/Linux系統管理員都應該知道:如何執行for循環、while循環、if with [[或[、$1、$2、$3... $*和$@以及case語句,還要明白變量代換是怎么一回事,如何處理簡單的命令行標記。只有掌握了那些基本的東西,你才能繼續深入一步。我驚訝地發現,我結識的不少人接觸了好多的Unix/Linux,卻不會用bash來執行循環;他們遲早會為沒有盡早學習bash而自責不迭。
選擇Perl、Python還是Ruby,這通常取決于貴公司已經在使用什么語言。Ruby和Python最近變得比Perl更為流行,所以許多公司重點關注Perl。如果你使用Puppet,那么熟悉Ruby將有助于你熟練運用Puppet。我在谷歌工作,這家公司很看重Python,于是我進入谷歌后學習了這門語言。對于自1991年以來就熟悉Perl的本人來說,這的確是一次不容易的學習過程(最近有人告訴我Perl在1991年還沒有出現……我建議他不妨查查維基百科)。
從職業管理的角度來看,我認為真正擅長其中一門語言,對另外兩門語言有所涉獵,這至關重要;哪怕這意味著僅僅閱讀介紹這些語言的書籍的頭幾個章節。真正擅長其中一門語言意味著,你深入了解如何運用該語言,深入了解該語言在“底層”是怎么一回事,那樣你在設計更大型的程序時,就能作出更合理的決策。我之所以把這個問題上升到職業管理問題的層面來討論,原因在于,如果你想受雇于一家使用不同語言的公司,“成為愿意學習不同語言的專家”遠比“成為只想學習大有潛力的語言”或“對這門或那門語言一知半解,但是從來沒有耐心把某一門語言學好的人”來得重要。
原文鏈接:http://os.51cto.com/art/201206/340820.htm