PHP 程序员是学 Swoole ?还是学 Go ?
大家好,我是码农先森。
面临现状
这次为什么要讨论这个话题,因为 Swoole 和 Go 在 PHP 程序员坊间一直都是茶语饭后的谈资,觉得懂 Swoole 和 Go 的就高人一等。相信有很多的 PHP 程序员,自打 Swoole 发布以来就从来没有使用过。还记得 Swoole 官方有一遍入门文章中曾建议学习 Swoole 之前,先学习 Liunx 操作系统、TCP/UDP 网络协议栈、Socket 通信等基础知识,作为 7 天入门、30 天精通 PHP 的靓仔们,面对这些基础知识不屑一顾,还会不时的反问,这些东西难道影响我 CURD 了?

在我的工作经历中遇到过这样的三类人,首先是:常年在 Window 系统下使用一键安装包 phpStudy 的 PHP 程序员,一辈子都没有翻开过 PHP 相关的源代码。即使在 Linux 服务器上也是使用万能的宝塔面板,一键便启动了 php-fpm、MySQL、Redis 等服务,如果服务出错误久久不能正常运行,便傻眼了不知所措,然后开始在各大技术群中发求助信并艾特各位大佬。每当我看到此种场景,心情都久久不能平静。其次是:时常游迹于 Thinkphp、Laravel、YII 等各大框架社区并对框架 MVC 模式有所贡献的 PHP 程序员,这些人还成为了这些框架的布道师,对框架的优劣势了如执掌,但俗不知自己可能已经陷入了框架的泥潭,在这个泥潭里久久不能自拔。最后是:偶尔会跨过互联网的那堵墙去看看外面世界的 PHP 程序员,有着对技术的好奇心且不甘于现状,开始尝试向下探索向上生长,但在这个追逐技术的路上不免会迷失方向,走到了技术的迷雾中。
虽说这三类人的情况都大不相同,但相信大家对 Swoole 和 Go 都有进阶学习的想法。接下来我会介绍一些学习上的建议,希望对大家能有所启发。
知识储备
Swoole 基于 C 语言开发的 PHP 异步通信扩展,其中涉及了多进程、协程、同步、异步、IO多路复用、Socket 等技术点。因此学习 Swoole 之前需要先把这些概念搞懂,才能进入下一步的学习。如果是科班出身的程序员对这些概念多少有点了解,非科班的就要多学习下基础的知识,把概念牢牢掌握。在这里我也把这些概念在 Swoole 中结合一下,比如学习了多进程就可以理解 Swoole 的多进程运行模式,学习了同步异步就理解了 Swoole 中的阻塞与非阻塞模式、学习了IO多路复用就理解了 Swoole 中的事件循环的机制、学习了协程就理解了 Swoole 中协程及通信通道的用法、学习了 Socket 套接字就理解了 Swoole 中所有的网络通信都基于 Socket 的原理,还有很多这里就不一一举例了。只要把操作系统、网络协议的基础知识学一遍,那么学习 Swoole 便会更加得心应手。反之没有这些基础,那么学起来会非常的吃力,这也是很多的 PHP 程序员学习 Swoole 举步维艰的主要原因。

再来说说学习 Go 语言要具备哪些基础,从理论上来说要和学习 Swoole 要具备同样的基础。但是有很多人会说了,我没有这些基础也能用 Go 开发项目呀,CURD 操作开发、API 接口开发溜得一皮。是的,实际上没有上面说的那些基础也能开发,但那只是 Go 应用场景的冰上一角。Go 语言的真正优势是高并发特性,要想真正用 Go 开发出高性能的项目,那这些基础知识是必不可少的,不然可能连 Go 的协程都玩不明白,搞的内存资源到处泄露,到头来 Bug 层出不穷得不偿失,反而最后还会觉得 Go 还没有 PHP 好用。
学习路径
回到这篇文章的主旨讨论的是学习 Swoole 还是学习 Go ?我认为要先学习 Swoole 再学习 Go,其中的原因文中已经有所阐述了。从近年 Swoole 的发展来看,其中很多的新特性也是从 Go 中所有借鉴。网上还有人调侃说 Swoole 越来越像 Go 语言,确实 Go 语言自诞生以来就出身贵族「谷歌」一直带着耀眼的光环,是很多语言学习的榜样。看 Github 的排行榜 Go 语言的使用热度也是逐年的上升,因此学习 Go 语言也是大的趋势,但在学习的路上也要打好地基脚踏实地,只要把自己这把刀磨好,就不怕耽误砍柴的功夫。
最后我也推荐一个基础知识的学习网站 https://xiaolincoding.com/ 这里的内容大多数都是图解的方式,理解起来会相对容易些,希望对大家能有所帮助。
欢迎关注、分享、点赞、收藏、在看,我是微信公众号「码农先森」作者。

PHP 程序员是学 Swoole ?还是学 Go ?的更多相关文章
- 学Java的前景与就业,资深程序员教你怎么开始学Java!
IT行业一直是就业的热门岗位,程序员这个职业稳定性和收入比都有着不错的前景,那么学Java的前景和就业是什么样的呢?随着入行Java的准程序员越来越多,各种学习Java的流派也层出不穷!其实在编程的世 ...
- 有终将被编程潮流淹没的程序员,那是因为没学python人工智能吧?
2017年被称为中国人工智能元年--在两会时期,人工智能曾经成为国度计策,同时被写进当局报告.在从前的一年里,人工智能获得注重,已逐步浸透到别的行业,无人超市.主动驾驶.人脸识别.智能家居等" ...
- Java程序员学习之路
1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...
- [置顶]
AI大行其道,你准备好了吗?—谨送给徘徊于转行AI的程序员
前言 近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个IT界.所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无不在布 ...
- Java程序员到架构师的推荐阅读书籍
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
- 2020年我国到底有多少程序员?现在学习java还来得及吗?
中国有多少程序员?现在还值得学java吗? 跪求关注,祝关注我的人都:身体健康,财源广进,福如东海,寿比南山,早上贵子,从不掉发! JAVA起于1995年,经过20多年的发展,JAVA如今已经发展成为 ...
- 2020 年 Java 程序员应该学习什么?
大家好,我相信大家在新的一年都有一个良好的开端,并准备好制定一个提升自我技术的目标.作为 Java 开发人员,我还制定了一些目标,希望在今年成为一名更好的 Java 开发人员. 如果你尚未制定目标,这 ...
- 程序员下一门要学的编程语言Swift
基于PHP是世界上最好的编程语言这个真理,我一直认为Hack才是程序员要学的下一门编程语言. 但今天看到InfoQ放出的新闻:"Google或许会将Swift编程语言纳入Android平台并 ...
- .Net程序员学用Oracle系列(1):导航目录
本人从事基于 Oracle 的 .Net 企业级开发近三年,在此之前学习和使用的都是 (MS)SQL Server.未曾系统的了解过 Oracle,所以长时间感到各种不习惯.不方便.怪异和不解,常会遇 ...
- .Net程序员学用Oracle系列(2):准备测试环境
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.创建说明 1.1.为什么要创建的测试环境? 1.2.了解 Oracle 实例的默认用户 2.创建环境 2.1.创建基本环境 ...
随机推荐
- 关于UE4对象静态/动态的销毁问题整理(AddToRoot、TWeakObjectPtr)
1.非UObject对象 即非UObject常规C++对象,创建销毁不赘述.但可以用智能指针:从而不用关心销毁逻辑: TSharedPtr<ClassA> MyObj = MakeShar ...
- visualstudio着色器设计器shadergraph使用
第一次使用着色器设计器. vs的着色器设计器是hlsl的着色器设计器.不得不说里面节点得翻译是一坨屎. 附一个光线于法向量夹角渲染的设计图
- Oracle批量插入和更新
一.驱动.使用Oracle.ManagedDataAccess.Client 二.原理.利用OracleCommand的ArrayBindCount属性设置批量大小. 三.实现 函数使用的实体是efc ...
- SSL/TSL 总结
参考:https://blog.csdn.net/qq153471503/article/details/109524764 (一)生成CA证书 1.创建CA证书私钥openssl genrsa -a ...
- Vue——Ajax请求的基本使用
1.get方法发送Ajax请求 // 直接在 URL 上添加参数 ID=12345 axios.get('/user?ID=12345') .then(function (response) { co ...
- 机器学习策略篇:详解如何改善你的模型的表现(Improving your model performance)
如何改善模型的表现 学过正交化,如何设立开发集和测试集,用人类水平错误率来估计贝叶斯错误率以及如何估计可避免偏差和方差.现在把它们全部组合起来写成一套指导方针,如何提高学习算法性能的指导方针. 所以想 ...
- centos 7 mysql8 安装和卸载
cent os 7 安装 mysql 8--install-start官网下载MySQL的RPM源,地址:https://dev.mysql.com/downloads/repo/yum/ 下载这个项 ...
- 短链服务接口慢优化 redis应用
短链服务接口慢优化 redis应用 短链接服务:1.长链接 查询 短链接(长链接如果存在,直接返回短链接,如果长链接不存在,则需要生成短链接),比如:在获取短信之前,或者管理后台编辑短信内容之前,需要 ...
- Java中的ThreadLocal和 InheritableThreadLocal
Java中的ThreadLocal和 InheritableThreadLocal package com.example.core.mydemo.java; /** * output * Threa ...
- http请求方式-HttpClient 微信退款的接口,需要证书请求 https请求
http请求方式-HttpClient import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import ...