隨著《關于促進大數據發展的行動綱要》(簡稱“《綱要》”)日前正式下發,《綱要》提出,大數據成為推動經濟轉型發展的新動力。大數據產業正在成為新的經濟增長點,將對未來信息產業格局產生重要影響。伴著這股潮流,出現了N多新技術如Hadoop、Spark、Hive等等,與這些時髦的技術相比,命令行好像應該被放進博物館被人參觀的古董。命令行的歷史可以追溯到幾十年前,而大數據的崛起才短短幾年,命令行技術在數據科學這樣新的應用領域是否還發揮作用,彰顯其獨有的魅力呢?
前幾日,小編注意到ChinaUnix論壇中有一貼子《大數據崛起時代,命令行技術的價值在哪里?》網友們討論的很是熱鬧,網友fengzhanhai說道“命令行給系統管理員及開發人員帶來的靈活性和快感不是圖形界面所能夠替代的”。于是小編也投身參與,讓我們一起來討論。
命令行技術的優缺點
使用命令行是很有趣的,記住各種命令,學會腳本的編寫,用命令行是非常高效的。即使是使用Windows Server,我們也可以使用PowerShell,繼續享受命令行的樂趣。對于初學者來說,命令行需要學習并記住很多命令及用法,顯得頗有難度。
網友seasea2517說“不用鼠標操作減少鼠標手煩惱,靈活、容易實現自動化批量化、系統要求低、不同平臺的同樣命令行工具下的操作相同。不足就是不夠直觀,上手比GUI慢一些。”
“從最初的dos命令行,truboC的命令行編譯及執行,到unix和linux時代命令行的普遍應用。他是一個系統工程師的普遍技能。但命令行是結構化編程變成的產物,在面向對象編程的今天,追求對象的引用、類的實例化、RPC的時候,命令行就其不能應對復雜的調用關系和形象的編程。尤其對于UE用戶體驗要求較高的場合,命令行基本用不上。”網友hiyachen說道。
網友yinyuemi非常喜歡命令行,他說“我的學習之路,有80%的代碼都是在命令行學習和運行的。很喜歡這種“溝通”方式,用awk/sed/grep等處理文本,命令行里操作無疑是高效的。經常是一段代碼從頭寫到尾,不換行,一氣呵成,感覺只有這種方式不會把在腦子里形成的偽代碼思路隔斷。不足之處,我覺得是命令行畢竟是依賴于終端,history的記錄數有限,對于新手或不熟悉linux環境的童鞋們,一旦終端關閉,再想找回之前的代碼記錄并不是一件容易的事。當然,高手們不會為此感到煩惱。”
那些你接觸過的命令行工具
相信每個Linux愛好者都能說出一大串命令行工具,并且能把它們運用的恰到好處!歡迎你們到論壇中(http://bbs.chinaunix.net/thread-4181945-1-1.html)來補充,這里說兩個印象比較深刻的~
網友xdsnet說道“用的比較多的是bash環境,以及其上的各類命令行工具,主要有直接bash內置命令行結合系統命令進行系統管理。“
另一位網友jieforest談到“Linux Shell,Python的Shell、Ruby的Shell等。Linux Shell用于解決服務器維護、搭建生產環境、部署業務、測試等等。Python Shell、Ruby Shell通常用于開發及調試代碼。“
面對高大上的數據科學,命令行過時了嗎?
打個做菜的比方,來描述數據科學5部分(數據獲取、數據清洗、數據探索、數據建模、數據解釋),要做一道菜的步驟——a先要有原材料,有菜;b 洗菜,過濾無用數據;c 探索菜譜,能做啥菜;d 建模,實際做菜;e 解釋->吃菜,吸收營養。
網友seesea2517說:“和數據打交道多的就是 mysql 了,對于數據庫的數據來說可以用 mysql 或 mysqldump 獲取數據,可以在 mysql 里做數據過濾,也可以用 awk sed grep 等過濾”命令行工具和技術永遠在發揮著它的更接近于底層,一個個對資源(cpu、內存、網絡、存儲)的有效利用。
也有網友說道:“一直用命令行處理文本問題,而對于數據科學在命令行的操作,命令行會不會略顯單薄。”
小編認為:命令行靈活、可增強、可擴展、可擴充無所不在,能使你真正成為更加高效和多產的數據科學家。數據是數據科學工作的主要原料,因此很重要的一點是要能很容易地處理包含數據集的文件。命令行為此提供了許多方便的工具。命令行與其他技術能夠無縫集成。一方面,你可以經常在自己的工作環境中采用命令行。例如,可以在Python 和R 中運行命令行工具并捕獲其結果。另一方面,也可以將自己的代碼(例如以前編寫的Python 或R 函數)轉變為命令行工具。
【結語】
數據科學中,數據解釋最為關鍵,僅根據數據找出相關性,但缺乏相關領域的理解和解釋,是很危險的。就像一個嬰兒和一棵樹苗,在發育期的時間交集區間內都會長高。看數據,相關性非常好,但這兩組數據沒有任何關系。如果不能用合理的行業知識解釋數據的結果,就很容易犯這種錯誤。命令行在實施數據計算分析處理方面,是跨行業、跨學科的人進行有效協作,最簡單直接的方式。數據分析處理光靠學計算機的專業程序員是不夠的,更多的是依靠各個學科領域的專業人士編寫的程序包。把他們的成果匯集,還是一個個命令行程序。所以命令行不會過時,命令行工具和技術也發揮著作用,只是調用/處理流程上會發生變化,很多命令行命令(組/集)因為需要重復使用,而為了減低工作強度,會通過配置、預處理等等手段來減少正式命令行輸入,但本質還是命令行工具。