当前位置: 首页 > 科技观察

谷歌的语言何以战胜Python?50%的人都应该立即学习Golang

时间:2023-03-21 19:05:38 科技观察

Google的语言是如何打败Python的?50%的人应该马上一起学习Golang。但谷歌、优步、Dropbox、Soundcloud、Slack和Medium的软件工程师并非如此。长期以来,好公司的程序员都对另一种语言念念不忘。尽管大多数开发人员仍在使用Python,但高级人员已经增加了对Golang(Go)的使用,无论是API、Web服务还是数据处理,它都做得很好!Go由先驱构建,由Google的全明星三人组发明:RobPike共同开发了Unix环境并共同创建了Limbo编程语言。有了KenThompson,团队就有了Unix和B语言(C的前身)的发明者。RobertGriesemer是谷歌V8JavaScript机器的负责人之一,也是谷歌创建的另一种语言Sawzall的首席开发人员。Google最初是用Python编写的,但在2007年左右,工程师们正在寻找一种更好的语言来执行Google的主要任务。RobPike在2012年的一次演讲中提到了他们遇到的问题:Slowbuilds:Ittakeslongtimetogeneratenewcode。不可控的依赖路径:你有没有试过安装一个包,却发现你必须安装至少5个其他依赖路径和无数子依赖路径才能让它工作?是的,即使是谷歌人也有这个问题。版本漂移:到处都是重复代码,工程师可能只更新原始代码片段的一个版本而忘记其他版本。因此,生成的版本包含新旧代码。编写自动工具更加困难:编写自动编写代码的程序是可能的——事实上,大多数程序在某个阶段都会这样做。但是在现代编程语言中,这仍然很难实现。每个程序员使用不同的语言子集:对于Python,一个开发人员可能使用numpy包,另一个更喜欢scipy包。当程序员想要将他们的代码混合到一个包中时,这样的事情会变得混乱。程序理解能力差:那些说一读代码就懂的人是在撒谎,这不是一个简单的“HelloWorld”程序。而且代码的文档通常不是很有帮助——在大多数情况下它甚至不存在,或者文档很少。重复操作:你是否曾经从程序的某个部分复制过一段代码?这是不好的做法。但是大多数编程语言让它很容易实现。更新成本高:在上述混乱的情况下,更新软件需要花费大量的时间和脑力。跨语言构建:Python适合中小型脚本,C++适合复杂程序,Java适合web开发,Haskell适合懒惰但健壮的代码。因此,程序通常包含许多不同语言的代码片段。但是为了编译、调试和简单,用一种语言编写程序要好得多。因此,三人开始着手设计一种干净、简单且易于阅读的语言。一种消除或至少减轻软件工程中这些常见问题的语言。精简语言这些常见问题的根源在于现代语言的复杂性。想想Python或C——您是否尝试阅读整个文档?祝你好运。相比之下,Go最大的特点就是简单。这并不意味着您不能使用它来构建复杂的代码。但是Go考虑到了,不要有引入复杂度却不能解决问题的特性。例如,Go没有像其他面向对象语言那样的类。其他语言中的一个共同特征是,类使一个对象能够从另一个对象继承属性。问题是如果你试图改变一个对象的结构而不改变其他对象的结构,你就会破坏代码。Go有一个名为struct的替代方案,它更倾向于组合而不是继承。Go的其他主要特性是:类型安全:在C中,使用游标可以做任何事情——包括使程序崩溃。Go不会让你把事情搞砸的。正交性:这意味着如果您更改代码中的一个对象,其他对象将不会因此而更改。例如,与C不同,如果您更改一个变量,其他变量也会随之更改。Go是正交的,因为它使事情变得更简单。最小化:在Go中,只有一种编写代码的方法。Python有无数种方法来编写一个东西!高可读性:与Python一样,Go将可读性放在首位。因此,它比大多数语言对初学者更友好,并且更容易维护代码。Documentation:特别是对于初级开发者来说,写一些关于代码的简要介绍以供其他人使用是一件很乏味的事情。使用Godoc,这个过程比大多数语言更加自动化,开发人员不需要浪费宝贵的时间来记录他们所做的事情。实用性:重要的事情应该易于编码,即使这意味着其他事情在Go中是不可能做的。其逻辑是您希望通过快速轻松地执行重复性任务来提高开发人员的工作效率。如果有更复杂的问题,他们可以用另一种语言写。也许这听起来平淡无奇,从某种意义上说,确实如此,这不是一门具有时尚特征的语言,Go不是一门探索和研究的语言。但这就是奇迹发生的地方,当你试图创造一些有用的东西时,当你在一个团队中有很多来自不同背景的人使用相同的代码时,当你厌倦了其他语言时当谈到混乱时,Go可以救你于水火。蓬勃发展的社区由于其简单性,Go是当今存在的最具协作性的语言之一。程序员坐在他们的隔间里,从不见面的日子已经一去不复返了。现在,我们有StackExchange可以解决您所有的编码问题。我们有Slack、Zoom、GoogleMeet等来与我们的团队保持联系。但现代语言仍然是为小隔间里的小书呆子量身定做的。去改变它。尽管比Python年轻20岁,但它拥有一个充满活力的社区。他们将尊重、开放和友好置于行为准则之上,而其他语言(如Python或C)也有类似的社区声明,但对这些基本价值观的重视程度较低。因此,社区在Go的年度调查中扮演明确的角色也就不足为奇了。资料来源:2019年数据不言而喻根据2019年Go调查,谷歌的语言主要用于网络开发、网络和系统编程。Python的前景看起来非常相似:Python使用数据|资料来源:2019Python唯一显着的区别是Python用于数据分析和机器学习的程度。在这些领域,其他热门的新语言正在涌现。可以看到,Python的很多用途很可能会被Go取代,其中46%用于Web开发,37%用于系统管理和DevOps,19%用于Web编程。即使您考虑到许多开发人员同时做这三件事,至少有一半的Python支持者正在做他们在Go中可以做的事情。事实上,开发人员已经意识到Go提供的巨大潜力。据Hackerrank称,2019年,大约三分之一的程序员想学习Go。下一个热门语言|资料来源:Hackerrank。由于Go非常容易学习,我们应该会在未来几年内看到从Python到Go的转变。尽管对于大多数公司来说,尤其是不像Dropbox或Medium这样大而富有的公司,重写所有用Go编写的代码会非常昂贵。但对于新项目,你至少应该试一试。给彼此一个机会,给未来一个可能,何不试试围棋?