中国开源软件网

当前位置: 首页 > 互联网 >

作为多年,PHP,的开发者,在使用了,Go,并比较一下这两种语言

时间:2020-01-29 07:37来源:互联网 作者:小狐

Go 是一种功能强大的编程语言,具有独特的功能组合。而 PHP 是在端执行的脚本语言,与 C 语言类似,是常用的网站编程语言,同时 适用于所有微服务、小型、中型乃至大型应用程序。对于者而言,两者在使用过程中,有哪些不同的体验?本文即将为大家揭晓。

作为多年,PHP,的开发者,在使用了,Go,并比较一下这两种语言(图1)

16岁的时候,我发现了PHP。这是我学习的第一门编程语言。当时,我利用PHP来检查用户提交的表单并发送电子,大多数表单都是“我们”多年以来,我始终将PHP作为我的强项,且坚持不懈地发展壮大自己的PHP知识和技能。虽然我觉得自己算不上PHP高手,但这是我最了解的编程语言。以前,我曾有机会在小型项目中使用Ruby、Java、Python和NodeJS。我通过这些经验比较PHP和其他编程语言,了解如何更好地利用PHP的优点并克服它的缺点。

6个月前,我成为了 MessageBird 的一名工程师。申请工作的时候,我填写了PHP,但是我没想到入职后我就开始使用 GoLang,而且与PHP渐行渐远。这种一次很好的经历,在这段时间里,我学习了一种新的编程语言,而如今我又回到了PHP,同时我还拥有6个月的Go编程经验。

Go是一种功能强大的编程语言,具有独特的功能组合。我很遗憾没能更深入地学习Go。我返回PHP的原因与编程语言本身无关,但是,我想总结一下这6个月的经验,并比较一下这两种语言。

静态与动态

GoLang是一种静态编程语言,不像PHP那样是动态的。因此,你需要在初始化变量和对象时提前想清楚。在PHP中,你永远不会初始化变量,需要时当场使用就可以了。因此,在一个新变量之前,对于GoLang而言你需要三思而后行,我发现这比在PHP中检查变量的做法更有效率。PHP 7添加了类型,这是一个更好的实践,但是在编写代码之前三思而后行是一种更健康的做法。

子程序与并行处理

GoLang 非常神奇的功能之一就是goroutine。这个功能支持异步运行功能。PHP中没有任何功能与Goroutines的简单性和易用性相提并论。每当需要在PHP中进行并行处理时,你都需要添加外部的排队机制(Beanstalk、RabbitMQ等)这会加剧基础架构的复杂性,并增加项目的复杂性。

GoLang的并行处理远远超越了PHP。

面向对象功能

自从编程问世以来,面向对象的概念一直拥有一席之地。90年代,面向对象在C++中得到了广泛应用,也因此成为了主流范式。面向对象最吸引我的地方在于,它允许工程师使用代码创建业务逻辑图,事实证明,当不断发展的发生变化时,这种做法的价值无可限量。PHP和GoLang都面向对象的功能,但是,这两种语言之间存在很大差异。

我花了很长时间才习惯了隐式接口。在GoLang中,在实现所有方法后,类型就会满足接口要求。但在PHP中,你需要显式地定义类型所需的接口,开始实现。有了Go的这一功能,你不需要提前思考应用程序的接口,这一点与我对静态类型语言的认知正好相反。

不断发展的模型具有复杂的需求,而领域驱动的设计可以满足这种需求。为此,你需要许多面向对象的功能,PHP也的确了许多这样的功能:trait、抽象方法和类,final方法和类,魔术方法等等。GoLang缺少这些功能,这是一个难以克服的限制条件。因此,我认为GoLang仅适用于微服务或小型应用程序,而PHP适用于所有微服务、小型、中型乃至大型应用程序。

首先,对于性能,Go的包中拥有很多性能的功能。pprof 等许多库都可以使用这些功能来创建华丽的数据报告。虽然PHP也有一套可用于性能的库和技术,但Go的更加易于使用。我相信这是静态类型语言的优势之一。

其他差异

两种语言之间还有许多其他差异,重点包括:

GoLang 的性能比PHP更好。我们有数百种基准,可以在各种情况下 PHP 和 GoLang,但大多数时候明显都是 GoLang 胜出。最重要的是,Go的速度很快:运行速度更快、内存使用效率更高、CPU使用率更低。

PHP社区的人数远远超过了 GoLang,而且支持非常出色。我发现 GoLang 使用了许多糟糕的东西,例如代码生成器,这都是PHP社区几年前抛弃的东西。

打包维护也很不相同。在GoLang中,打包维护是内部的;而PHP有两层不同的实现方式:第一,PHP扩展级别;第二,每个人都使用的库级别。PHP的情况更为复杂,而go则将两层放到了一起。

最后一点想法

这两种语言有明显的区别,在两者之间做选择非常容易。GoLang 的性能更好,拥有原生异步功能以及其他基本功能,非常适合需要频繁使用的小型应用程序和微服务。

然而,随着应用程序的不断增长,业务逻辑复杂度加剧的情况下,PHP是很自然的选择,因为你可以充分利用PHP的面向对象功能和社区支持。

本文相关词条概念解析:

编程语言

编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。目前通用的编程语言有两种形式:汇编语言和高级语言。编程语言学习群四一八,三五五,五三一。

网友评论

相关文章