如何從PHP過渡到golang?

3年php,想熟悉一個編譯型的

選擇golang,怎麼在工作里優雅的過度


學php就用facebook的HHVM強類型php啊,搞什麼go。


Golang 和 PHP 定位幾乎完全不一樣,所以你要做的就是忘掉 PHP.

PHP 是專用於 Web 的編程語言。而 Golang 的定位是用來替代 C 和 C++ 的,用於編寫底層網路應用(而不僅僅是 Web)的編程語言。

我建議如果沒有寫過 C 或 C++ 的話,不要直接學 Golang, 因為沒寫過 C/C++ 的話,很難理解 Golang 的優勢在哪裡。如果希望學習一種類似 PHP 的,新的 Web 後端技術的話,可以考慮 Python, Node.js, Ruby 等等。


首先,golang很容易學習,過渡應該是沒有問題的。

需要注意的是,PHP和Golang是不同類型的語言,PHP是動態語言,弱類型,而golang相反

鑒於你3年的編程經驗,假設編程邏輯已經沒問題了,那麼需要掌握的就是靜態語言與動態語言的不同之處。

另外,用途也不同,據我所知的PHP大部分是做Web的應用,而golang則寬泛一些(包含web),因此從php過渡到golang時需要考慮,它不是只服務於web的。


優雅有兩種

1、幾乎一夜之間用新語言重建了整個系統,實現上可圈可點,然後相關的維護者也有都新語言的經驗,第二天大家正常工作,但已經是在新的平台上了。

2、砸工作量慢慢堆出弄出一個可以在新舊平台之間無級過度的平台,然後隨著新人的加入漸漸地向一方遷移,偶爾來點小躍進,直至跑到另一邊。


我寫了6年的php,現在開始寫golang,無障礙,別聽他們瞎說

謝大的beego群裡面phper也很多


最近接手一個golang寫的push項目,後端的同鞋跑路留下的大坑,剛開始我也只是看過一些golang基礎語法,瞬間接手這樣大的項目時確實有點慌。因為php搞了這麼多年,雖然也用過swoole寫過一些個任務隊列,其它語言也熟悉一些如python等,但真正負責一個這麼大的項目(問題是還沒人交接)確實有點緊張。golang的語法什麼的就不多說,確實挺簡單,只不過數據類型來說可能要比php複雜一點,因為php是一門動態類型語言。其它方面 我覺得估計就是並發這一方面算是最大的差別了,php是並沒有多線程等這麼一說(不說拓展啥的),所以很多的時候比較難把思維轉變過來。而golang則是一門後端服務的語言,並發這一塊算是golang的最大的優勢所在。當你接觸golang項目時,你會發現很多的服務中有這樣的代碼

```

for oo := range list {

go func(oo){...}()

}

for {

select {

case xxx := &<-oo

....

}

}

```

這裡其實涉及到協程與通信,你其實可以理解為多進程與共享內存,這麼看來的話,用swoole就OK了(新版本的swoole也加入了協程)。所以我覺得只要你基礎夠紮實,過渡到一門新的語言,真的不是什麼大的事,新語言裡面的一些新特性,無非是前人積累後人乘涼而已。


搞web的話,其實對於整個web架構和歷史要有所了解才行。因為php那套東西會讓你看不太清http包流,因為web伺服器與php腳本深度整合了。而用go開發web,使用自己的http庫則行,web伺服器僅僅用來做反向代理,起到優化性能等作用。總之對web架構中http包的流動清晰了解後,其實用php或者go都比較容易了。


雖是小白白,同樓上,無障礙

障礙都是腦洞大的人自己想出來的捏。。。哈哈哈,誠惶誠恐


寫了好幾年php了,包括那種後台daemon類的php(有點不可思議)

寫過包括C#在內的編譯型語言

正在學習golang,看中的是並行處理能力,不像php基本上沒怎麼考慮,也不像C#需要手動調度線程,現在不知道C#是否很好支持非同步

不喜歡nodejs,因為js的語法本來就讓我很不爽

就看golang了,個人覺得用golang設計後端系統,php抗前端業務和流量,還是不錯的

必要的時候可以golang直接非同步介面出服務供前端調用,對於業務簡單的,沒有頁面的部分直接由go提供前端服務


首先我們說如何過渡,那當然是使用Go重寫項目,或者用Go寫新項目

然後我們說如何"優雅"地過渡,那當然還是使用Go重寫項目,或者用Go寫新項目


我以前寫了兩年多的C/C++,七年的Java,三年左右的PHP,現在寫go,表示也無障礙。只是在最開始的幾天把腦子裡的構造和析構函數都趕出去費了點腦細胞。


接觸過一點 Go,個人感覺還不錯,兼顧了編譯型語言的速度和一些動態語言的特性

但是 (注意了),雖然 Go目前在國內被宣傳得很火,畢竟是 Google 剛搞出的東西,連Google自己內部也沒有大範圍使用,前景如何呢?會不會被拋棄呢?都還不是很清晰

所以,你這是一項投資,成功了前途無量,失敗了。。從頭再來吧,只是但願不要太晚


無意看到此問題,回答一下,本人工作前只會C/C++,現在基本都在寫Go。

工作剛開始就寫的PHP,有大半年時間,PHP弱類型語言(沒有指針可用真的好難受),PHP給我的感覺就是可以隨便亂搞,(用了PHP基本就等於放棄性能了)。

Golang對於有C++經驗的人來說,轉過來十分容易,非常適合服務端編程,PHP真的要轉Golang如果沒有指針類語言的基礎,建議還是先理解一下指針的用法(好東西),然後了解Go的map, slice, channel內建類型就可以了。

Go的核心還是goroutine+channel,對於了解多線程的人來說,理解goroutine的原理就好了。

語言就是工具,還是如何使用。

PHP是世界上最好的語言,沒有之一。


just do it。。。就像當初什麼都不懂學PHP那樣,找點項目做,從實踐中學習,很快就可以上手的了


推薦閱讀:

有哪些 PHP 調試技巧?
這些問題答不出,是否代表不能成為能獨當一面的PHP工程師?
php學到什麼程度就可以就業了?

TAG:編程語言 | PHP開發 | Go語言 |