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

php,go · 浏览次数 : 14

小编点评

大家好,我是码农先森。今天我想和大家分享一下我在学习 Go 语言过程中的经历和心得。我认为,学习任何新技能的过程都可以分为三个阶段:模仿、进阶和应用。 模仿是学习的起点,我们可以借鉴别人的经验和知识,以便更好地理解新的领域。在学习 Go 语言的过程中,我尝试将 Go 语言的结构和功能与 PHP 语言进行对比,找出它们的相似之处。例如,我将 Go 的结构体 Struct 对应到 PHP 的类,接口 Interface{} 对应到 PHP 的抽象类,结构体指针 Pointer 对应到 PHP 的类对象 This,Gin 框架对应到 ThinkPHP 框架等。通过这种方式,我能够更快地掌握 Go 语言的基本概念。 进阶是在模仿的基础上,深入理解语言的本质和特性。在学习 Go 语言的过程中,我发现它的设计哲学与 PHP 有很大不同。Go 语言强调简洁、高效和可维护性,这使得它在高并发、云计算等领域具有很大的优势。此外,Go 语言的运行速度非常快,这对于需要处理大量数据的物联网项目来说非常重要。 应用是将所学知识应用于实际项目中,从而不断提升自己的技能。在我的一个物联网项目中,我使用了 Go 语言实现了实时通信、视频推流、设备通信和用户分发等功能。这些功能的实现都依赖于 Go 语言的特性,如 goroutine、websocket、mqtt、channel 和 select 等。通过这个项目,我深刻体会到了 Go 语言在实际应用中的价值。 总之,学习 Go 语言的过程可以分为模仿、进阶和应用三个阶段。通过模仿,我们可以快速掌握基本概念;通过进阶,我们可以深入理解语言的本质和特性;通过应用,我们可以将所学知识应用于实际项目中,不断提升自己的技能。希望我的经验对大家有所帮助。

正文

大家好,我是码农先森。

之前有朋友让我分享从 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 语言的正确道路。

推荐


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

与PHP 程序员转 Go 语言的经历分享相似的内容:

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

大家好,我是码农先森。 之前有朋友让我分享从 PHP 转 Go 的经历,这次它来了。我主要从模仿、进阶、应用这三个方面来描述转 Go 的经历及心得。模仿是良好的开端,进阶是艰难的成长,应用是认知的提升。希望我的经历对大家能有所启发。 模仿 著名艺术家毕加索说过「模仿是人类一切学习的开端,然后才是创新

PHP转Go系列 | GET 和 POST 请求的使用姿势

大家好,我是码农先森。 说到 HTTP 请求工具想必对我们做 Web 开发的程序员都不陌生,只要涉及到网络请求都必须使用。对于我们 PHP 程序员来说,最熟悉不过的就是 CURL 扩展,只要安装的这个扩展便可随意发起 HTTP 请求。 但在 PHP 语言中还有一个很好用的 Composer 包「gu

PHP 程序员是学 Swoole ?还是学 Go ?

这次为什么要讨论这个话题,因为 Swoole 和 Go 在 PHP 程序员坊间一直都是茶语饭后的谈资,觉得懂 Swoole 和 Go 的就高人一等。

PHP转Go系列 | ThinkPHP与Gin框架之API接口签名设计实践

大家好,我是码农先森。 回想起以前用模版渲染数据的岁月,那时都没有 API 接口开发的概念。PHP 服务端和前端 HTML、CSS、JS 代码混合式开发,也不分前端、后端程序员,大家都是全干工程师。随着前后端分离、移动端开发的兴起,用后端渲染数据的开发方式效率低下,已经不能满足业务对需求快速上线的要

PHP 程序员为什么依然是外包公司的香饽饽?

PHP 唯一的爽点就是开发起来「哇真快」这刚好和外包公司的需求相契合,在 Web 领域的芒荒年代 PHP 以王者姿态傲视群雄。

七年之痒!一个 PHP 程序员职业生涯的自述

作为一名程序员常常都是与代码为伴,平常写个技术文档或PPT都费劲的人,竟然不知不觉地写了这么多文字,我也是感到十分的惊讶。17年毕业到今年刚好七年了,俗话说七年之痒,这一次的自述也算是对自己一个职业生涯的复盘了。

shell编程基础

shell脚本编程基础 【1】、shell概述 shell是一门编程语言,如:C、C++、java、PHP、python Go等 语言分类 编程型语言:C、C++、Go等为编译型语言。程序运行需要提前编译,编译语言都有编译器 解释型语言:shell、PHP、python等为解释型语言,程序在运行时不

Hello Laravel! Laravel 入门教程

Hello Laravel! 准备 目录Hello Laravel! 准备什么是 Laravel?为什么选择 Laravel?优雅的语法丰富的功能强大的社区支持安全性易于扩展Laravel 的流行程度其他流行的 Web 框架对比环境准备下载 Laragon设置工作目录添加 PHP 版本设置环境变量C

硬核案例分享,一文带你拆解PHP语言体系下的容器化改造

本文介绍了PHP语言体系应用现代化案例,实现了许多与业务无关的通用性应用改造方案,如PHP应用容器化架构方案、基于Prometheus的弹性伸缩方案等等,为此类型客户提供了一个可参考的案例。

PHP 真的不行了?透过 PHP 的前世今生看真相

大家好,我是码农先森。 1994年我出生在湖南的农村,就在同年加拿大的拉斯姆斯·勒多夫创造了 PHP,这时的 PHP 还只是用 Perl 编写的 CGI 脚本。或许是时间的巧合 PHP 变成了我后半生谋生的手段,当时拉斯姆斯·勒多夫写这些脚本的目的,只是为了统计自己网站的访问者。就是这样一个简单的目