4008-wewrwerer 在线客服 联系我们 返回顶部
企业动态 技术分享 行业动态

作为多年 PHP 的开发者在使用了 Go 语言之后

2020-02-07

  Go 是一种性能强壮的编程讲话,拥有奇特的性能组合。而 PHP 是正在办事器端推行的剧本讲话,与 C 讲话近似,是常用的网站编程讲话,同时实用于整个微办事、幼型、中型甚至大型运用圭表。对待开荒者而言,两者正在利用流程中,有哪些分别的体验?本文即将为大多揭晓。

  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等)。这会加剧根源架构的繁复性,并填补项方针繁复性。

  自从编程问世此后,面向对象的观念不绝具有一席之地。90年代,面向对象正在C++中获得了平常运用,也因而成为了主流范式。面向对象最吸引我的地朴直在于,它容许工程师利用代码创修营业逻辑图,实情证据,当不息发扬的体系产生改观时,这种做法供应的代价无可限量。PHP和GoLang都供应面向对象的性能,然而,这两种讲话之间存正在很大差别。

  我花了很长年华才习俗了隐式接口。网易彩票官网正在GoLang中,正在达成整个措施后,类型就会满意接口央浼。但正在PHP中,你需求显式地界说类型所需的接口,然后开头达成。有了Go的这一性能,你不需求提前思虑运用圭表的接口,这一点与我对静态类型讲话的认知正好相反。

  不息发扬的模子拥有繁复的需求,而范围驱动的安排能够满意这种需求。为此,你需求很多面向对象的性能,PHP也简直供应了很多云云的性能:trait、笼统措施和类,final措施和类,魔术措施等等。GoLang短少这些性能,这是一个难以取胜的限度条目。因而,我以为GoLang仅实用于微办事或幼型运用圭表,而PHP实用于整个微办事、幼型、中型甚至大型运用圭表。

  我以为,正在断定项目质地方面,测试是最厉重的使命:单位测试、集成测试、性能测试、UI测试、功能测试等等,项目具有的测试越多,交付的质地就越好。GO和PHP的单位测试框架都很精巧,Go具有嵌入式测试包,而PHP有 PHPUnit,它们都供应了一组厚实的性能,可用于测试你的代码。PHPUnit的性能比GoLang测试包更多,由于PHP的性能更多。这两种用具都能够结束编程讲话的使命。然而, 正在举行高级测试时,PHP和Go就会显示出很大的分别。

  起初,对待功能测试,Go的测试包中具有许多功能测试的性能。pprof 等很多库都能够利用这些性能来创修富丽的数据陈诉。固然PHP也有一套可用于功能测试的库和身手,但Go的加倍易于利用。我笃信这是静态类型讲话的上风之一。

  其次,对待高级测试身手(比如BDD、TDD和A/B测试),PHP具有更多支撑、更多库,另有一个更大的社区。比如,两种讲话都达成了Cucumber(或Gherkin),然而PHP 的 BEHAT 达成支撑40多种讲话,是全部基于独立组件构修的,况且正在GitHub上的支撑比Cucumber更多(更多分支、更多给星等等)。

  终末,对待性能测试或UI测试,PHP的库更多,且对现有效具的支撑更好。Selenium 具有额表强壮的PHP支撑(3000多个跨浏览器测试、视频记载、文本和可视日记等),而对待Go来说,只要一个没有优异保卫的驱动圭表 tebeka / selenium(终末一次提交产生正在5个月前)。

  GoLang 的功能比PHP更好。咱们罕见百种基准,能够正在各式景况下测试 PHP 和 GoLang,但多人半期间光鲜都是 GoLang 胜出。最厉重的是,Go的开荒速率很疾:测试运转速率更疾、内存利用结果更高、CPU利用率更低。

  PHP社区的人数远远进步了 GoLang,况且支撑额表精巧。我挖掘 GoLang 利用了很多倒霉的东西,比如代码天生器,这都是PHP社区几年前吐弃的东西。

  打包保卫也很不无别。正在GoLang中,打包保卫是内部办理的;而PHP有两层分别的达成办法:第一,PHP扩展级别;第二,每部分都利用的库级别。PHP的景况更为繁复,而go则将两层办理放到了沿道。

  这两种讲话有光鲜的区别,正在两者之间做挑选额表容易。GoLang 的功能更好,具有原生异步性能以及其他根基性能,额表适合需求一再利用的幼型运用圭表和微办事。

  然而,跟着运用圭表的不息增加,营业逻辑繁复度加剧的景况下,PHP是很天然的挑选,由于你能够充沛欺骗PHP的面向对象性能和社区支撑。

在线咨询