Go 的包管理绝不是完美的 。默认情况下,它无法指定特定版本的依赖项,也无法创建可重现的构建 。Python、Node 和 Ruby 都有更好的包管理系统 。但是,使用正确的工具,Go 的包管理工作得很好 。您可以使用Dep来管理您的依赖项,以允许指定和固定版本 。除此之外,我们还贡献了一个名为的开源工具VirtualGo , 它可以更轻松地处理用 Go 编写的多个项目 。
我们进行的一个有趣的实验是在 Python 中使用我们的排名提要功能并在 Go 中重写它 。看看这个排名方法的例子:
Python 和 Go 代码都需要执行以下操作来支持这种排名方法:
开发 Python 版本的排名代码大约花了 3 天时间 。这包括编写代码、单元测试和文档 。接下来,我们花了大约 2 周的时间优化代码 。其中一项优化是将分数表达式 (simple_gauss(time)*popularity) 转换为抽象语法树. 我们还实现了缓存逻辑,可以在未来的特定时间预先计算分数 。相比之下,开发此代码的 Go 版本大约需要 4 天时间 。性能不需要任何进一步的优化 。因此,虽然 Python 的最初开发速度更快,但基于 Go 的版本最终需要我们团队的工作量大大减少 。另外一个好处是 , Go 代码的执行速度比我们高度优化的 Python 代码快大约 40 倍 。现在,这只是我们通过切换到 Go 体验到的性能提升的一个示例 。
与 Python 相比 , 我们系统的其他一些组件在 Go 中构建所需的时间要多得多 。作为一个总体趋势 , 我们看到开发Go 代码需要更多的努力 。但是,我们花更少的时间优化代码以提高性能 。
我们评估的另一种语言是Elixir. 。Elixir 建立在 Erlang 虚拟机之上 。这是一种迷人的语言,我们之所以考虑它,是因为我们的一名团队成员在 Erlang 方面拥有丰富的经验 。对于我们的用例 , 我们注意到 Go 的原始性能要好得多 。Go 和 Elixir 都可以很好地服务数千个并发请求 。但是,如果您查看单个请求的性能,Go 对于我们的用例来说要快得多 。我们选择 Go 而不是 Elixir 的另一个原因是生态系统 。对于我们需要的组件,Go 有更成熟的库,而在许多情况下,Elixir 库还没有准备好用于生产环境 。培训/寻找开发人员使用 Elixir 也更加困难 。这些原因使天平向 Go 倾斜 。Elixir 的 Phoenix 框架看起来很棒 , 绝对值得一看 。
Go 是一种非常高性能的语言,对并发有很好的支持 。它几乎与 C++ 和 Java 等语言一样快 。虽然与 Python 或 Ruby 相比,使用 Go 构建东西确实需要更多时间,但您将节省大量用于优化代码的时间 。我们在Stream有一个小型开发团队,为超过 5 亿最终用户提供动力和聊天 。Go 结合了强大的生态系统、新开发人员的轻松入门、快速的性能、对并发的可靠支持和高效的编程环境,使其成为一个不错的选择 。Stream 仍然在我们的仪表板、站点和机器学习中利用 Python 来提供个性化的订阅源. 我们不会很快与 Python 说再见,但今后所有性能密集型代码都将使用 Go 编写 。我们新的聊天 API也完全用 Go 编写 。
学哪几种语言最实用 学哪种语言就业前景好什么是Go?
Go语言是谷歌2009发布的第二款开源编程语言 。
Go语言专门针对多处理器系统应用程序的编程进行了优化 , 使用Go编译的程序可以媲美C或C++代码的速度 , 而且更加安全、支持并行进程 。不仅可以开发web,可以开发底层,目前知乎就是用golang开发 。区块链首选语言就是go,以太坊,超级账本都是基于go语言,还有go语言版本的btcd.
Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用 。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务 。
推荐阅读
- css图片div内居中,css 图片居中
- 安卓相册变苹果系统,安卓相册转iphone
- 直播内录手机什么用,直播内录怎么连接
- 鸿蒙os和ios系统,鸿蒙os跟ios
- java代码钱包怎么写 java怎么使用包
- 深圳学习html5去哪里学,深圳学前端开发哪里好
- python爬虫post传递参数,python爬虫发送post请求
- 鸿蒙是人造什么系统,鸿蒙系统属于谁的
- python循环函数 python循环函数画图