3

我为何从php 加入到 go 的潮流!

 3 years ago
source link: https://studygolang.com/articles/33228
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

为何我要说加入go开发是一种潮流,尤其是对于php开发人员,我加入了很多go的开发群或者爱好群,发现大部分人都是从php过来的,原本google开发golang是想让更多的c/c++人员来使用。

PHP 语言作为当今最热门的网站程序开发语言,它也是我多年来一直使用的语言,它具有成本低、速度快、可移植性好、 内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。

首先php是弱类型语言,弱类型的好处就是能提升开发人员的开发效率,加之php有非常强大的array以及对应的数组处理方法,大部分你用得到的数组处理函数php本身已经提供,所以开发人员使用起来非常方便,可以用较少的代码实现我们想要的功能。

php也是面向对象的,基本上所有的设计模式在PHP中也可以被作为规范和使用,但是当我们去看很多项目源码时会发现很少有人会这么做,原因就是用php就是为了快速开发,降低成本,加上php入门要求低,开发人员水平参差不齐很难像java一样用来开发工业及项目。

传统的php开发模式一般都是依托fastcgi(php-fpm)apache 、nginx 的同步编程模式开发,这样降低了实现成本和维护成本,但是在实际项目中异步多线程的场景还是挺多的,比如一些异步通知或日志、定时任务、消息队列、网络通信,有的时候我们不得不加入其他语言或插件(swoole、workerman)或者redis等消息队列的形式来协助来满足这样的需求,当然也可以整个项目都使用swoole来开发解决这样的痛点。

在笔者看来php在开发上还是非常方便与高效的,性能上从php7后已经大幅度提升,尤其是php8的到来,性能已经不是问题。真正的问题还是项目维护问题,正因为弱类型与松散的面向对象,强大的数组能力,很多人都是数组一把梭,导致业务逻辑从代码中无法直接知晓数据结构包含一些什么数据,导致项目维护非常困难,还有一个感觉就是php在后续的升级上似乎偏离了phper们心中希望的样子,比如官方支持类似swoole这样的功能,比如cli功能的增强以及代码调试方面的友好处理。

我第一次接触go是因为好几年前的一个项目要使用身份证读卡器,当时的读卡器产商提供的机器没有对应的API接口,只有驱动程序,需要自己写API发送给后端php接收,当时想用java写,但是要给好多客户机装,客户机又是客户自己的笔记本电脑,系统不同, 用java还得给他们装虚拟机,网上查资料的时候刚好看到了go可以直接编译为可执行文件,而且可以跨平台编译,随即就用go写了个工具调用c的驱动最终将数据发送给php接收,发现go好方便,写一个可执行文件丢给客户就行,省时省力。

后来发现go在网络方面也是如此强大,Go语言内置了丰富的net库,不依赖Nginx、Tomcat等WEB服务器便运行WEB程序,很多代理工具内网穿透工具都是go写的,而且非常高效和稳定。当然优秀的http框架也很多,比如:gin 、Echo、Iris 、Beego、 goframe等等。其中不得不说下goframe这个框架对于phper入坑go非常友好,前面我们说到php有着强大的数组处理函数,goframe提供了类似php这套解决方案(gmap、garray、glist、gset等),还包含其他非常高效的工具库,包括字符串处理、类型转换、缓存处理、队列、任务处理等极大的提升开发效率。

最后也给大家分享一个我们自己开源的项目,系统基于goframe这个框架开发,开源的项目名称:Gfast 管理系统,系统包含了用户管理、部门管理、岗位管理、菜单管理、角色管理、字典管理、参数管理、操作日志、登录日志、在线用户、定时任务、代码生成、服务监控、在线构建器、文件上传、cms管理、模型管理、工作流引擎等模块。目前正在V2.0版本的升级开发中…欢迎各位一同来完善Gfast管理系统。

有疑问加站长微信联系(非本文作者)

eUjI7rn.png!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK