Python和Go你会选择那个?如果对Go了解较深的小伙伴肯定会先Go,如果不深肯定会选Python,那么接下来我们来讨论一下,选择Python的小伙伴,5个理由就会让你选择Go,我们一起看文章吧!

“ Python 是非常强大的,特别是 Python3 有了异步功能,但是 GO 将完全取代它在大企业中的存在…”

  如果你真正理解了引号中的话,你可能会去尝试 Go 编程语言。我认为 Go 是很简单的编程语言,并且适应任何的应用环境,甚至比 Javascript 编程还要简单,这可能是 GO 编程语言能在这几年很快流行起来的原因吧。

  我们在使用 Go 语言编程之前有什么呢?

  网站 TreeScale.com 主页和 API 都是基于一些分析工具的网络应用。下面是我们的技术栈:

  React.js 主页前端

  Django Python 主页后端和认证服务

  Node.js API 服务

  PostgreSQL 数据库、Cassandra 日志系统

  自定义容器注册表是使用 Rust 语言

  Python

  Repustate几乎完全就是一个Python商店。我们使用Django来实现API和网站。因此(目前)为了保持代码一致,同时使用Python来实现阿拉伯语情感引擎是合情合理的。只是做原型和实现的话,Python是很好的选择。它的表达能力很强悍,第三方类库等等也很好。如果你就是为了Web服务,Python很完美。但是当你进行低级别的计算,大量依赖于哈希表(Python里的字典类型)做比较的时候,一切都变慢了。我们每秒能处理大约两到三个阿拉伯文档,但是这太慢了。比较下来,我们的英语情感引擎每秒能处理大约五百份文档。

  从上面你可以看到基础的框架是完全的基于微服务和逻辑分离的(前后端分离),甚至说是完全不同的技术来实现的。

  为什么我们开始整合 API 服务和后端到单个项目中,主要的原因是他们有很多地方是相似的而且通过多种语言或者技术编程,代码存在很多重复的。最终我们需要花费很多时间在个性化的 Django's API 服务,特别是在定制 JSON 的响应。

  一个月之后我们用 Django 建立的 API 服务,我感觉当你开发一些普通的应用使用 Django 是非常棒的,但是当你需要更高的性能和一些个性化的模块的东西的使用 Django 是会越来越复杂的。

  为什么选择 Go 语言编程?

  #1 编译成单一的二进制

  Golang 是编译型语言并且 Googe 的开发者花了很大的功夫在上面。它使用静态链接实际上是基于操作系统类型和环境组合所有的依赖库文件和模块到一个单一的二进制文件中,这也意味着如果你想要编译你的后端应用到你的 Linux 操作系统和 X86 架构的 CPU 中,你只要下载编译好的二进制应用到服务器,然后可以后端应用可以工作了,这是不需要任何的依赖文件的。

  #2 静态类型系统

  对于大规模应用来说类型系统是非常重要的。Python 是很棒的并且有趣的语言但是有些时候你会看到一些不寻常的异常因为当你尝试将变量作为一个整型变量的时候结果它是一个字符串类型.

  # Django will crash process because of this def some_view(request): user_id = request.POST.get('id', 0)

  Go 在编译的时候告诉你这是一个编译器错误,这就是在愚蠢的问题上赢得时间的地方。

  #3 优化

  令人惊讶的是,在大多数的应用场景中,Go 语言比 Python(版本2或3)更快。Benchmarking Game 中可以看到对比的结果,当然这是不公平的,这依赖于应用类型和用户用例。

  对于我们的案例,Go 语言由于自己的多线程模块和 CPU 可伸缩性获得了较好的性能。无论什么时候我们需要执行一些内部的请求,我们可以使用 Goroutine 来分别执行,这个比 Python 中的 Threads 在资源开销上要少上十多倍。由于这些内置的语言特性,我们可以节省大量的资源(内存和 CPU )。

  #4 Go 不再需要 Web 框架

  对于编程语言这是一件十分酷的事情。Go 语言的创造者和社区内置了很多原生的被核心语言支持的工具,在大多数情况下你都不再需要任何第三方类库。比如它有内置的 http、json、html 模板,你甚至可以不用费心去 Github 上寻找第三方类库就可以构建十分复杂的 API 服务。

  当然,Go 也有很多类库和框架用来构建 web 项目,但是我会建议你不使用第三方类库来构建你的 web 项目或者 API 服务,因为在大多数情况下使用原生包会使你的生活更加轻松。

  #5 更好的 IDE 支持和调试

  IDE 支持是当你尝试更改编程语言时最重要的考虑因素之一。友好的 IDE 平均可以节省你80%的编程时间。 Go Plugin For JetBrains IDEA ,同样提供了其他支持,比如 (Webstorm、PHPStorm 等等…)。这个插件提供了任何你在项目开发中需要的服务,强大的 JetBrains IDEA ,可以让你的开发如虎添翼。

  选Go语言,还是回家算了?

  Mozilla内部正在将他们大量的基础日志架构切换到Go语言上,部分原因是因为强大的[goroutines]。Go语言是Google的人设计的,并且在设计之初就把支持并发作为第一要务,而不是像Python的各种解决方案那样是事后才加上去的。因此我们开始着手把Python换成Go语言。

  虽然Go代码还不算正式上线的产品,但是结果非常令人鼓舞。我们现在能做到每秒处理一千份文档,使用更少的内存,还不用调试你在Python里遇到:丑陋的多进程/gevent/“为什么Control-C杀不了进程”这些问题。

  为什么我们喜欢Go语言

  任何人,对编程语言是如何工作(解释型vs编译型,动态语言vs静态语言)有一点理解的话,会说,“切,当然Go语言会更快”。是的,我们也可以用java把所有的东西重写一遍,也能看到类似更快的改善,但那不是Go语言胜出的原因。你用Go写的代码好像就是对的。我搞不清楚到底是怎么回事,但是一旦代码被编译了(编译速度很快),你就会觉得这代码能工作(不只是跑起来不会错,而且甚至逻辑上也是对的)。我知道,这听上去不太靠谱,但是确实如此。这和Python在冗余(或非冗余)方面非常类似,它把函数作为第一目标,因此函数编程会很容易想明白。而且当然,go线程和通道让你的生活更容易,你可以得到静态类型带来的性能大提升,还能更精细的控制内存分配,而你却不必为此在语言表达力上付出太多的代价。

  基于我们的代码统计,在用 Go 语言重写项目后我们少写了64%的代码。

  你不需要调试不存在的代码。代码越少,错误越少!

  结论

  Go 为我们提供了超强的灵活性,一种语言可以适用于所有的用户场景,而且在所有的用户场景都可以工作的很好。在我们的 Backend 和 API 服务中,我们得到了30%的性能优化。而且现在我可以实时处理日志,转换到数据库中,并且通过 Websocket 处理一个或多个服务!这就是 Go 语言特性所提供的的非常强大的功能。

5个理由让你选择Go,抛弃Python相关推荐

  1. arcgis python脚本实现从界面选择输入输出_arcgis python脚本实现从界面选择输入输出_ArcGIS Python编程案例(2)-使用ArcPy编写脚本......

    本章将涉及以下案例: 使用ArcGIS Python窗体 访问ArcPy 从脚本中执行工具 使用ArcGIS桌面软件帮助系统 使用变量存储数据 访问ArcPy中的模块 引言 地理处理任务往往是耗时且重 ...

  2. 1分钟插入10亿行数据!抛弃Python,写脚本请使用Rust

      新智元报道   来源:Avinash 一位程序员急需在一分钟之内生成十亿行的测试数据库,然而在用Python写了脚本之后发现「大失败」.怎么办?当然是用Rust了! 于是,他做了一个所有程序员都会 ...

  3. 12大理由告诉你选择Java不会后悔!

    最近有小伙伴表示Java人太多了,吓得小编赶紧看了一下招聘网站,确实是要的人太多了,单一个招聘网站的Java相关在招职位数量就有7W+,那么全国人才需求量该有多大? 不单单是Java,在任何一个行业都 ...

  4. python替代_【Python】选择ipython替代python的理由

    登陆linux环境,已安装Anaconda,最常用的就是输入"python",进入python环境.偶然看到师弟用ipython进入环境,好奇查询了以下区别. python she ...

  5. 学python还是go会php_现在想再学习一门编程语言,应该选择go还是python?

    再学一门编程语言,选 Go 还是 Python ?这个问题需要从几个角度考虑! 一.现在掌握的语言是哪种类型 首先肯定是服务端开发,要不然应该不会说选 Go 还是 Python. 1.如果现在掌握的语 ...

  6. 选择java还是python-编程语言是选择Java还是Python好呢?

    声明:这是一篇容易引起撕逼的问答,为了祖国和谐,人民安康,请各位看官尽量理性讨论.正巧我前两天写了一篇 Java和Python现在都挺火,我应该怎么选 的文章,正好对题,就此回答一波.同时,这篇文章是 ...

  7. Python 之父抛弃 Python!

    昨天,Python 之父 Guido van Rossum 在 Python 邮件组里发邮称,他将退出 Python 核心决策层,而转居幕后. 海风教育在线辅导0元一对一试听课等你来领取,领取课程方法 ...

  8. 抛弃Python,我们为什么用Go编写机器学习架构?

    所有参与投票的 CSDN 用户都参加抽奖活动 群内公布奖项,还有更多福利赠送 作者 | Caleb Kaiser 译者 | 弯月,编辑 | 郭芮 来源 | CSDN(ID:CSDNnews) 如今,众 ...

  9. python求偶奇数和差编程_选择最大奇数Python

    我试图用Python编写一个简单的程序,计算出x,y,z值中最大的奇数.如何给用户一个选择x,y,z值的选项? 所以程序会问x,y,z是什么,然后说"x,y,z是最大的奇数"或者数 ...

最新文章

  1. dll文件复制和替换不了_重新编译mono——Android动态更新dll
  2. python numba.jit(该装饰器用于将Python函数编译为本机代码、python运算加速器)
  3. 斥资近1亿港元,小米二次回购
  4. Designing Virtual Connect for vSphere 5.x
  5. mysql面试考点_mysql面试知识点
  6. MyEclipse设置代码自动补全,及取消空格和‘=’补全
  7. Unity3D SceneView Camera
  8. Vue中this.$router.replace和this.$router.push的区别
  9. eclipse没有java web,Java-我的Eclipse IDE中缺少Web服务选项
  10. Atitit file cms api jcr1 jcr2 目录 1.1. 么是JSR-170幸运的是,被称为Java内容仓库(Java Content Repository,JCR)的JSR-
  11. Android设备上px(像素)、dpi(像素密度)、dip(密度无关像素)之间的关系
  12. 省电指南-ESP8266如何降低功耗
  13. html css笔记zht
  14. iOS生产力之小工具合集
  15. 使用华为云云耀服务器安装宝塔面板
  16. ProE5.0塑胶产品结构设计实例知识视频教程
  17. Chrome浏览器显示“Adobe flash player已过期”问题之解决
  18. 中华成语宝典 xp v1.0.2 下载
  19. 不同的语言讲述“元旦快乐“
  20. mmap函数使用与实例详解

热门文章

  1. 通过Lua代码创建一个Cube,并实现控制行走
  2. haxe怎么读_Haxe编译工具
  3. (附源码)计算机毕业设计ssm电影网上购票系统
  4. 嵌入式Linux开发-网络设备驱动
  5. 查看google快照
  6. 小米的红米战略:告别苹果走向三星
  7. 电子信息工程学生的小述
  8. GRNN神经网络及数据预测MATLAB实现
  9. Linux使用cp强制覆盖
  10. split()方法的用法,超详细讲解