首页 > 评论 > 关键词 > PHP最新资讯 > 正文

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

2020-01-10 09:40 · 稿源:CSDN公众号

声明:本文来自于微信公众号CSDN(ID:CSDNnews)),作者:Dan Gurgui,授权站长之家转载发布。

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中检查变量的做法更有效率。PHP7 添加了类型声明,这是一个更好的实践,但是在编写代码之前三思而后行是一种更健康的做法。

子程序与并行处理

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

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

面向对象功能

自从编程问世以来,面向对象的概念一直拥有一席之地。 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的面向对象功能和社区支持。

原文:https://medium.com/swlh/6-months-with-golang-after-many-years-with-php-c52124fb7da?

本文为 CSDN 翻译,转载请注明来源出处。

网友热搜:

  • 相关推荐
  • 大家在看
  • 用php源码搭建二维码加密支付平台

    今天给大家介绍的项目-"用php源码搭建二维码加密支付平台",可以说,有一定的技术门槛,有一定的壁垒,因为需要搭建网站并且运营。正是因为有一定的门槛,需要学习和准备一些东西,才能挡住大多数用户的进入,才能长久的赚取利润。这些技术门槛,和需要准备的一些东西,我今天会详细的,手把手的教大家,如果你肯学习,并且有一定的网络基础,我相信可以很快突破难点,搭建成功。一旦搭建成功,运用一些推广的手段,后期

  • 西瓜视频分镜头脚本怎么写?分镜头脚本概念介绍

    西瓜视频怎么拍好看的视频?想要在西瓜视频发布好看、优质的视频,在拍摄前做好准备工作,写好分镜头脚本能够有效地提高拍摄效率和拍摄质量 。在写脚本的时候,其实我们就把视频的框架和拍摄的流程都梳理了一遍,熟练以后甚至可以把剧本以影像的形式在脑海里放映一遍,这样在拍摄的时候往往能事半功倍,避免漏拍、错拍的情况。以下是关于西瓜视频分镜头脚本的概念的详细介绍。

  • 读懂生命的“语言” 有孚专有云为基因行业提速

    基因图谱被称为"上帝用以创造生命的语言"。世界各国的科学家们都在倾尽全力读懂“生命的语言”,破解每一个未知基因的奥秘。读懂“生命的语言”,对于提高公众健康水平,降低沉重的医疗费用具有非常重要的意义。读懂生命的"语言",实现科学的价值基因技术听起来很神秘,但其实早已经在多个领域中得到应用。例如基因测序技术能够用于疾病的预防、疾病的诊断、指导个体化用药,还能够帮助病毒基因研究所研发病毒诊断试剂,监控病毒疫

  • 编程语言最新排名:Java最受欢迎、JS用户最多

    IDE工具开发商JetBrains基于2万名开发者,对编程语言的最新情况进行了统计描摹。就受欢迎程度而言,Java高居第一位,但在使用人数上,JavaScript则名列榜首。欢迎程度的统计方法是,让参与的

  • 报告:JavaScript为最常用整体编程语言 Python超过Java

    在过去的 12 个月中,Python在使用的编程语言列表中已经超过了Java,它也是被研究最多的语言。报告称,在过去的 12 个月里,30%的受访者开始或继续学习Python,甚至比去年还要多。

  • Python 和 Go 成为年度最受欢迎的黑客工具榜首

    网络安全公司 Imperva Cloud WAF 近期分享了其在 2019 年一年内针对网络安全事件的观察。对数据进行聚类分析后,他们得到了如下结论:

  • 华为全球最大旗舰店上海开业 可提供近10门语言服务

    今日上午10点8分,上海南京东路华为全球最大旗舰店开业,有粉丝表示自己8点多就已过来排队。据悉,该旗舰店坐落于 “中华商业第一街”南京东路的南京大楼,具体位置为上海市南京东路 233 号,占地面积超过了 5000 平方米。

  • HBO Go7月停用 为新平台HBO Max让路

    DoNews6月15日消息(记者 翟继茹)据外媒报道,HBO Go将在7月31日停止其服务。HBO Go是面向已订阅了有线电视媒体服务的用户提供的流媒体应用服务。上个月,HBO刚刚正式发布了其在线视频流媒体服务迪士尼、Netflix和苹果争夺线上市场。而这一服务与HBO Go服务内容重合,所以HBO果断停止了后者。据报道,HBO Go用户可以免费使用HBO Max,只需要创建一个新的账号并将信息切换到新的平台。同时,其独立的会员计划HBO Now也将更名为“HB

  • Chromium与Go开发者提议替换“blacklist”与“slave”等词

    ​最近美国引发的“Black Lives Matter”运动使得各种抗议声音不断,技术圈也有支持这一运动的行动。从源码中的一个新 commit 来看,Chromium 有开发者提议移除“blacklist(黑名单)”这样的字眼。

  • HBO将在7月31日关闭流媒体服务和应用HBO Go

    据外媒Techspot报道,华纳媒体终于通过急需的整合努力,解决其各种HBO产品的混乱性质。到目前为止,HBO已经运营了其高端电视服务,HBO Go--为那些同时订阅有线电视产品的人提供的流媒体应用程序;HBO Now是一个独立的会员计划,为那些没有通过有线电视提供商获得HBO的人提供,HBO Max则以现有的节目和华纳媒体库的其他内容为特色。后两种产品的价格均为每月14. 99 美元。

  • 2个月构建一个Go服务器,他通过众筹获得14万元

    Kaya.gs是使用Go语言构建的一个服务器,它的创始人Gabriel Benmergui仅用 2 个月的时间就完成该产品的构建及启动,并在随后几个月的时间内容通过众筹活动筹集了 2 万美元。然而,投入运行 1 年后,Kaya.gs就被迫关闭了。

  • Facebook宣布将停售入门级VR头盔Oculus Go 专注高端产品

    【TechWeb】6月24日消息,据国外媒体报道,在推出仅仅两年后,Facebook于当地时间周二宣布,它将停售入门级VR(虚拟现实)头盔Oculus Go。Facebook是从2018年5月份开始出售Oculus Go的,这款头盔是该公司出售的功能最弱、价格最便宜的虚拟现实头盔,起价为199美元。后来,该公司将这款头盔的价格降至149美元。现在,该公司决定停售这款头盔。该公司在一份声明中表示:“我们今年将停售Oculus Go,从而对改进Quest和Rift加倍下注。

  • Facebook宣布停售低端款Oculus Go VR头盔 年底不再提供应用更新

    2014 年,Facebook以约 20 亿美元的价格收购了Oculus,并在 2018 年推出了Oculus Go,目的是将虚拟现实带给大众。不过,后来VR技术并没有像Facebook预期的那样大受欢迎。

  • 携手体育赛事,英孚教育成为成都2021年大运会语言服务类供应商

    近日,成都 2021 年第 31 届世界大学生夏季运动会品牌发布推介会(上海站)举行。在会上,英孚教育正式签约成为 2021 年第 31 届世界大学生夏季运动会语言服务类供应商。据介绍,在 2021 年成都大运会筹备和比赛期间,英孚教育企业与政府解决方案将为大运会筹委会的工作人员、志愿者以及相关政府机构工作人员提供一系列语言培训服务,包括定制化在线课程、志愿者培训、在线测评等。在签约活动现场,英孚教育企业与政府解决方案中国

  • 堪称最强手游玩家:老爷爷同时用64部手机玩《精灵宝可梦Go》

    那个痴迷《精灵宝可梦Go》的最牛玩家,现在的装备又升级了。作为一名资深的《精灵宝可梦 Go》游戏玩家,陈三元先生已经将自行车再次升级,现已能够同时用 64 部手机来捕捉宝可梦。在2018年的那

  • 智能变革:英特尔HPC高性能计算与AI人工智能解决方案和实例

    在竞争日益激烈的环境中,数据中心作为传统信息化的基础,伴随着全面AI时代与5G、物联网的不断临近,企业希望获得出色的模拟和建模、人工智能(AI)和大数据分析功能,以便取得突破性的发现与创新,而高性能计算(HPC)基础设施能够为这些工作负载带来优势。 企业如果想在相同的 HPC 基础设施中运行 HPC、大数据分析和 AI 工作负载,优化的资源调度降低计算成本需要一个全面的融合HPC和AI集群的解决方案。 英特尔? 精选解决方案基于英

  • 现在买iPhone 11还是等iPhone 12?李楠:等iP12

    一年一度的618将于今晚0点正式开启。6月17日消息,一位知友在知乎提问:现在买iPhone 11还是等iPhone 12?目前iPhone 11在各大平台有大幅降价,京东平台iPhone 11 64GB版到手价4599元,拼多

  • 苹果将追踪定位iPhone抢夺者:定位iPhone技术介绍

    据 TMZ 报道称,5 月 25 日 George Floyd 遭遇明尼阿波利斯暴力执法而死亡。一周之后,美国多地发生了激烈的抗议示威活动,苹果 CEO 蒂姆·库克也曾在第一时间表达了对受害者的同情,以及对暴力伤害行为的反对。

  • iPhone SE 2 Plus、iPhone SE 3接踵而至?这可能吗?

    时隔两年,苹果今年终于发布了新款iPhone SE,连名字都懒得变,但是配备最新A13处理器、3299元的价格仍然让很多人大呼真香。那么接下来,iPhone SE又会怎么走?最新曝料称,苹果计划下一步推出

  • 京东iPhone疯狂降价:iPhone 11加899元全额换购iPhone 12

    6月1日开始,各大电商正式进入618大促。近日,京东官方宣布,自6月1日起,iPhone 11直降900元,到手价仅为4599元,同时还有iPhone 8 Plus领券立减600元、XS Max抢券立减500元等特别优惠,价格史

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议