PHP 程序员转 Go 语言的经历分享

打印 上一主题 下一主题

主题 903|帖子 903|积分 2709

大家好,我是码农先森。
之前有朋友让我分享从 PHP 转 Go 的经历,这次它来了。我主要从模仿、进阶、应用这三个方面来形貌转 Go 的经历及心得。模仿是良好的开端,进阶是艰难的成长,应用是认知的提升。盼望我的经历对大家能有所启发。
模仿

著名艺术家毕加索说过「模仿是人类一切学习的开端,然后才是创新,末了是你的自主」。在我国军事的发展上有一个典范的例子,第一艘新航母模仿的就是辽宁号航母,这促使我们更加容易理解:先模仿,再创新,后超越的路子。大到国家尚且云云,那么小到个人更应该充分认识到「模仿」的价值。模仿是人类固有的天性和本能,大家小时候经常会模仿大人容貌,好比学大人的说话口吻、做各种动作等等。

在我学习 Go 语言的过程中,也正是利用了「模仿」这种技巧,好比把 Go 中的结构体 Struct 对标成 PHP 中的 Class、把 Go 中的接口 Interface{} 对标成 PHP 中的抽象类 Abstract Class、把 Go 中的结构体指针 Pointer 对标成 PHP 中的类对象 This、把 Go 中的 Gin 框架对标成 PHP 中的 ThinkPHP 框架等等。我刚开始在熟悉了 Go 的语法后,力争都要能在 PHP 中找到相应的影子。然后使用 PHP 的框架 ThinkPHP 实现一个 CURD 的案例,再把这些功能利用 Go 的框架 Gin 实现一遍。语言绝大多数的区别都只是语法糖的不同,编程头脑都类似,万变不离其宗。都说万事开头难,利用这个模仿的技巧实现这个案例之后,算是开了个好头,让自己有了简单的成就感,看到了相应的学习成果。最重要的收获是迈出了学习 Go 语言的第一步,降服了畏难头脑。
进阶

模仿式学习只是掌握了表面知识,就恰似练习咏春拳只学到招式,没有学到内功。要想修炼好内功,还得理解语言的本质区别。PHP 是解释型、动态范例语言,代码的运行是基于 Zend VM 虚拟机引擎,在 Web 领域应用广泛。Go 是编译型、静态范例语言,直接编译成二进制可实行文件便可运行,在高并发、云盘算等领域应用广泛。PHP 在 Web 领域有着天然的优势生态完善,Go 的高并发性能突出,两者刚好互补,这也是我学习 Go 语言的主要原因。

让我真正感受到 Go 语言的与众不同,是在到场了一个物联网项目「基于IOT物联网在线直播抓娃娃」(文末附上了项目代码地点)的开发之后,这个项目开发了实时通讯、视频推流、设备通讯、用户分发等技术,这些技术都是基于 Go 语言的 goroutine、websocket、mqtt、channel、select 等特性实现的。实践出真知,真正的进阶是要在到场实战项目之后才能得到提升。固然我是有幸到场了这类项目,但大部分人却可能连到场实战项目的机会都没有,那应该怎么进阶呢?我的回答是「互换」,多与高手互换、向高手学习、听高手讲解。俗话说的好「听君一席话,胜读十年书」便是云云。和高手互换对我们的学习和成长很有益处,不仅有助于了解技术方向、关键的技术点,也可以通过观察和学习高手的技术思维、办理问题的方式。末了在进阶的路上还是得多探求一些实践的机会,毕竟实践是检验学习效果的唯一尺度。
应用

好钢要用在刀刃上,要充分了解 PHP 语言与 Go 语言的差异,才能在各自的场景中利用好 PHP 和 Go 的优势,避免出现杀鸡滥用宰牛刀、胡子眉毛一把抓的现象。在我之前的公司就有过这样的情况「立项前:高并发,日活千万,用xxx语言;上线后:停掉吧,一个用户都没有」,信赖大家也碰到过类似的情况,终极项目的结果都是不了了之。

因此在现实的项目开发中,选择合适的技术是一项很重要的原则。好比在项目的初期利用 PHP 语言短平快的特性,快速的把项目推向市场进行试错,及时收集用户的反馈,推进项目的持续优化,当用户量达到预期的规划时,适时对部分访问频繁的接口,接纳 Go 语言进行重构,以承载后期的访问量。技术选项和架构设计是随着业务的发展而进行演进的,不可能一蹴而就,有了这个认识后,才能发挥出 PHP 和 Go 各自的价值。
结语

其实想要更深入的学习好 Go 语言,还得花时间去巩固操作体系、网络通讯等底子知识。有些普通 PHPer 可能连 多进程、协程、socket、epoll、tcp/ip 等概念都搞不清晰,只会用简单的框架套用模版,那何谈能把 Go 语言学好?这也就是有些人转 Go 语言失败的原因。真正学好 Go 语言并不容易,我从刚开始模仿式的学习,期间也踩过很多坑,限于篇幅原因没有展开,再到厥后的进阶实践也是碰到各种编译错误,末了从应用层面来认知到学习 Go 语言的价值。我的学习经历并不适用于每个人,仅供大家参考,盼望大家都能找到自己学习 Go 语言的正确道路。
推荐

接待关注、分享、点赞、收藏、在看,我是码农先森。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大号在练葵花宝典

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表