Go與Python ?
01-22
之前一直在用python,寫的很順手。最近才了解到go語言。網上各種說go語言如何如何快。也看到很多人說從python逐漸轉向go了。於是去看了go的語法,發現多少還是有些不適應,不過這個可能是go代碼寫的還不多的原因。還有另一個問題,python有那麼多好用的第三方庫,所以想問從python轉向go的各位,轉向go之後,一切都還好么?寫起來還像python一樣順手么?還有就是如果現在把go作為平時的輔助腳本工具,可以完全替代掉python么?
又到了貼鏈接的時候From Python to Go… and Back Again! Mozilla dev explains his return to Python.
做腳本還是麻煩,完成同類工作,go編碼工作量是比較高的。好處是在方方面面幾乎都是最不費腦子的那一種。適合做服務端項目。
Python雖然也是跨平台,它豐富的庫反而成了跨平台部署桎梏,我看過一個做銀行特色業務的實施過程,為了把引用的三方庫的應用程序部署在一台內網Linux伺服器上,花了三個多小時,我在看完部署過程後,想了想如果是操作很熟練至少也得半小時左右,如此複雜的部署,又是並不能隨時停掉的系統,如果有版本bug或漏洞會讓升級維護很麻煩。如果是go語言部署的話完全不會有這種麻煩,生產機直接上傳二進位文件,跨服遷移代碼直接copy過去。而且go語言的庫現在不僅多,而且庫升級兼容性很好。
自帶的net,http,template完全可以做一個Web應用程序,性能還相當不錯。
還有各種資料庫的連接庫,pdf,excel生成庫等,當然像Python那種各式各樣的庫的確不夠,畢竟時間軸在那兒,但缺少的自己可以寫嘛。至於學習曲線,go的確要難一點,但無論是性能還是後期維護,就會覺得多花一些時間學習真的很值。拋開用途選語言,都是耍流氓。
如果是DBA運維那麼果斷選Ruby(Puppet等自動化運維中的神器全是Ruby)或者Python。
如果做Web開發那麼PHP、Java或者Ruby。
如果是系統級編程以及遊戲服務端那麼C++、Erlang、Golang。如果是遊戲以及Windows相關客戶端那麼C#。如果跨平台工具軟體那麼Java或者QT。如果IOS/MAC那麼Swift, 安卓繼續Java,前端繼續JS。如果是黑客腳本小子那麼JS、PHP、Python(SqlMap可謂神器)、國內還流行易語言,哈哈哈哈。
如果像題主這麼玩那隨便。
---------------------update-----------------------------也看到很多人說從python逐漸轉向go了。話說Python轉Go是什麼鬼,腳本小子換崗轉行?
.轉向go之後,一切都還好么?寫起來還像python一樣順手么?還有就是如果現在把go作為平時的輔助腳本工具,可以完全替代掉python么?
- Go的生態鏈現在比Python還是略差的,但也只是略差,事實上Go的標庫和Python的標庫一樣豐富,還沒有Python歷史問題遺留的凌亂。
- 沒Python順手,實際感受代碼量要比Python多40%左右,但可用,花頭不多,出錯機率不大,性能出奇的高。
- 不可以,該Python的時候還用Python,節了婚偶爾擼幾管還是很爽的。
Python是腳本,Go是編程語言,該用哪個用哪個。
python和go不衝突,解決的領悟不一樣。python是應用系統如web,後端服務,數據處理或單純作為腳本,而go定位是系統級編程語言,二者有重疊的地方,但更多的是可以互為補充,我就同時使用這兩個,很爽
以前,我用C++,界面也用Qt,後來,用python,再然後Go,C#。現在,主要Python,Go,C#。用哪個不重要,關鍵是熟悉的,方便的。工具這玩意,當然是多多益善,只不過是某個職業對哪個工具更擅長一些而已。
看你怎麼用了,有些地方,python肯定比go簡潔,要求並發與速度的場合,python難以逾越go。
如果只是自己用用的腳本,還是就小甜餅python吧。速度慢和部署難這兩個python老大難,對你來說都不是問題。go的代碼是很吵的,隔幾行就要判斷一次err != nil,很費鍵盤,不適合居家休閑用。
總不能一門語言獨大吧,語言的應用場景很多的,寫業務用的,連資料庫用的,渲染界面用的,做配置用的,教學用的,研究用的,裝逼用的。。。
性能黨的話肯定要不惜一切代價適應go
更高級一些,去搗鼓C++,從http server開始寫
腳本語言拿Python寫才對。。shell那反人類的語法我都沒眼看了。。嗯,自己造個操作系統吧。go用來做這個真心不合適,寫個伺服器小工具啥的還是給Python吧,動態語言各種風騷
推薦閱讀:
※Golang 在國內是否過譽了?
※如何看待許式偉談Go Erlang並發編程差異?
※Go語言的核心特性有那些?
※Go語言在Linux中後台運行的問題?
※如何看待Phoenix用40核128G內存的機器只能同時保持僅僅200萬WebSocket連接?