编程语言应用

首页 » 常识 » 预防 » Python转型Golang正当时虫虫
TUhjnbcbe - 2023/10/6 19:14:00

你日常用什么语言写代码?什么Python,还在用Python。Python确实啥都干的语言,可以写个API、Web开发、系统脚本,科学计算,数据处理——以至于还有很多的开发人员都离不开Python。但是,现在是时候换Golang了。

Golang源于谷歌的内部项目,由三位名声赫赫的资深开发者创造:其中罗伯特·格瑞史莫(RobertGriesemer)是谷歌V8引擎的负责人。罗勃·派克(RobPike)和肯·汤普逊(KenThompson)共同开发了Unix环境并共同创建了Limbo编程语言,汤普逊还是C语言之父,图灵奖获得者。

谷歌曾经大力推广Python,但是用Python有不可避免的一些问题:

缓慢构建:生成新代码需要很长时间。

混乱的包依赖:用Python开发必须至少安装五个其他依赖项和无数依赖项才能使其工作?鼓吹人士常说Python可以“三行代码实现一个程序”,但是他没有告诉你的是这三行代码得依赖个类库。

版本兼容:由于重复的代码到处都是,工程师可能只更新原始代码片段的一个版本而忘记其他版本。所以最终得到一个包含新旧代码的版本。Python代码基本上不能版本兼容,即便是2.6和2.7之间也都无法兼容,更别说3.x和2.x了。

工具栈:在Python中,一个开发人员可能使用NumPy包,另一个更喜欢SciPy,依此类推。当想要将这些代码混合到一个包中时,事情就会变得一团糟。

重复工作:开发人员都可能会用Dtrl+c,Ctrl+v进行“代码高可用性”编程(复制一段代码),这对大多数编程语言都可以轻松实现,但是Python除外。

更新成本:在上述如此混乱的情况下,更新软件需要花费大量时间和脑力。

编写自动工具的困难:编写自己编写代码的程序是可能的——事实上,大多数程序在某个阶段都会这样做。但是使用现代编程语言,这仍然很难实现。

跨语言构建:Python适用于中小型脚本,C++适用于复杂的程序,Java适用于Web开发,Haskell适用于惰性但健壮的代码。这样单个程序通常包含来自多种不同语言的片段。但是为了编译、调试和整洁,最好用一种语言编写程序。

为了解决Python这些问题,三人着手设计一种干净、简单且可读的语言。一种可以消除或至少缓解软件工程中这些太常见的问题的语言。这些常见问题的根源在于现代语言的复杂性。

相比之下,Golang最大的特点就是简单。这并不意味着你不能用它构建复杂的代码。但是Golang非常慎重,没有在不解决问题的情况下带来更多复杂性的功能。Golang的其他主要特性是:

类型安全:在C中,可以使用指针做任何事情——包括使程序崩溃。Golang不支持像那样乱搞。

可读性:Golang中代码可读是在首位。这使它比大多数语言更适合初学者,并使代码更易于维护。

文档:尤其是初级开发人员发现编写一些关于代码的简介以便其他人可以使用它很乏味。使用Godoc,这个过程比大多数语言更加自动化——开发人员不必浪费宝贵的时间来写下他们一直在做的事情。

正交性:如果更改代码中的一个对象,则其他对象不会因此而更改。从这个意义上说,例如,这与C非常不同——如果你改变了一件事,那么其他人可以依赖它并且也会改变。Golang是正交的,因为它使事情变得更简单。

极简性:在Golang中,只有一种方法可以编写一段代码。将其与Python进行比较,在Python中,可以有无数种方法可以实现。

实用性:重要的东西应该易于编码——即使这意味着其他事情在Golang中是不可能做到的。这样通过快速轻松地执行重复任务来提高开发人员的生产力。如果有更复杂的问题——无论如何这都是罕见——他们总是可以用另一种语言来写。

所有这些听起来可能很无聊且缺乏创意。从某种意义上说,这是真的——这不是一种可以用来给别人留下深刻印象的时髦功能的语言,没有多种解决问题的方法,没有限制的自由。Golang不是一种可以用来探索和研究的语言。

但是,当尝试构建有效的东西时,这真是太棒了。当你在一个团队中有很多来自不同背景的人在处理相同的代码时。当厌倦了使用其他语言遇到的所有混乱时。

由于其简单性,Go是当今存在的协作性最强的语言之一。程序员过去常常坐在自己的小隔间里,从不与其他人见面的时代已经结束。去改变它。尽管比Python年轻20岁,但它拥有一个充满活力的社区。因此,他们将尊重、开放和友好置于行为准则之上也就不足为奇了。虽然其他语言,如Python或C,也有类似的社区声明,但对这些基本价值观的重视程度较低。

因此,与许多其他语言不同,社区在年度Golang调查中其使用场景也很确定。

根据调查统计,Golang语言主要用于Web开发、网络和系统编程。Python的情况看起来非常相似:

唯一的区别是Python用于数据分析和机器学习的程度。在这些领域,其他语言正在涌现。

除此之外,可以看到Python的许多用法都可以被Golang取代。其中包括50%的Web开发、38%的系统管理和DevOps,和19%的网络编程。

即使假设许多开发人员完成所有这三项工作,也可以安全地假设一半Python开发正在做他们可以在Golang中做的事情。

事实上,开发人员已经意识到Golang提供的巨大潜力。根据Hackerrank报告,大约三分之一的程序员希望在未来一年年学习Golang。

这种趋势是真实的——而且由于Golang非常容易学习,应该会在未来几年内看到从Python到Golang的转变。对于大多数公司——尤其是规模和资金不是那么充足的公司——将所有代码重写为Golang的成本有点高。但是对于新项目,至少应该尝试一下。

1
查看完整版本: Python转型Golang正当时虫虫