在本文中,我们探讨了 Python 和 Go 这两种世界上最流行的编程语言的差异、相似之处和用例。 从对两者的快速比较开始,然后看看它们在可读性、速度、易学性等方面如何叠加。
Python 和 Go 不同,通常用于不同的目的。 Python 是数据科学家的主要语言,其中 Go 是服务器端命令的语言。 Go 是用于运行软件的语言。 它是更快的语言,以 Java 和 C++ 速度执行。
Python 是用于编写可读、可共享代码的语言——因此围绕它的大型社区。
从技术上讲,Go 是一种为速度而构建的过程式函数式语言,而 Python 是一种面向对象、命令式、函数式和过程式语言。 Go 支持并发,即算法能够无序运行其步骤,而 Python 不支持。
简而言之,如果你正在处理数据并且受众是人,请使用 Python。 如果你正在使用服务器,请使用 Go。
Python 于 1991 年首次发布。 由 Guido van Rossum 设计,Python 的设计理念以代码可读性为中心。
Python 是一种解释性的、高级的、通用的编程语言。 它是面向对象的。由于其设计侧重于可读性,Python 社区将根据代码的 Pythonic 程度对彼此的代码进行评分。 由于其可读性,Python 非常适合:
学习编程
快速收集想法
与他人共享代码
Go 是 Golang 的缩写,Go 最初由 Robert Griesemer、Rob Pike 和 Ken Thompson 于 2007 年在 Google 设计。
Go 是一种静态类型的编译型编程语言,由 Google 开源并维护。 Go 是 C 系列编程语言的一部分,它使用垃圾收集器来处理内存泄漏。 在设计 Golang 时,它的创建者想要改进已经存在的东西,其中之一就是可读性。
1、可读性
不可读代码的基本标准是 Java 和 C++。 Python 和 Go 都希望改进它们。 Go 做了一些改变。 与 Python 类似,Go 取消了:
行尾的冒号
括号和圆括号的使用。
如果熟悉 C 级语言,那么这应该看起来很熟悉:
Go 代码示例:
package main import "fmt" func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x return } func main() { fmt.Println(split(17)) }
返回: 7 10
Python 代码示例 (非-Pythonic):
even_numbers = [] for number in range(10): if number % 2 == 0: even_numbers.append(number) print(even_numbers)
Python 代码示例 (Pythonic):
even_numbers = [ x for x in range(10) if x % 2 == 0] print(even_numbers)
返回:
[0, 2, 4, 6, 8]
2、错误处理
大多数 IDE 将帮助在编写 Python 代码时发现错误。与 Python 不同,Go 没有错误处理。它是为已经知道如何编码的人而构建的。虽然更易于阅读和键入,但其简单性的代价是为代码中的错误留下了更大的空间,这意味着将花费更多时间调试代码。
3、速度
说到速度,Go 很快。Go 的本意是速度快,但这并不是 Python 的唯一目标。在大多数基准测试中,Go 远远超过 Python。Go 甚至超过了 Java 的速度,人们普遍认为 Java 比 Python 快得多。如果归结为需要一个程序来快速加载软件,那么 Go 就是 Go 的选择。
4、库
Python 比 Go 早 16 年,因此围绕它建立了一个更大的社区。在该社区中,它对面向所有类型的 Stack Overflow 提供了大量支持:初学者、课程、教程和操作指南,以及最终的 Python 库。 很可能,永远不必在 Python 中从头开始。
Python 库尤其庞大。 他们可以让任何编写代码的人在第一天做他们想做的事。 使用 Pandas 可以轻松探索数据表,使用 TensorFlow 和 PyTorch 可以轻松进行机器学习。
Go 不提供这种支持。你必须编写自己的所有脚本来搜索数据表。在 Go 中开发机器学习将是一项巨大的努力。(顶级 Go 库都与服务器维护有关)
5、共享
与 Jupyter notebook 共享可执行的 Python 代码是数据科学世界中常见的工作流工具之一。 Jupyter Notebooks 和 Google Colab Notebooks 允许 Python 用户在非常交互式的阅读和编写体验中阅读和执行代码。
在 Go 中共享和显示这些类型的图表将很难启动和运行。
6、简单易学
编程语言被设计得更好、更智能。任何代码的可读性使其易于学习。在编程世界中,公认的事实是**,如果你学习一种语言,你就可以学习任何其他语言——你只需要深入研究。**
讨论差异只对挑剔的人和已经可以用一种语言读写的人有意义。从某种意义上说,这些差异并不重要,应该涉及一个人开始编程的选择。相反,这些差异仅在选择最适合执行功能的语言时才重要。
Go 和 Python 都易于使用和学习。Go 真的很快。 Python 有大量的社区支持。
目前,在 Go 的开发中,Go 主要用于服务器端应用程序。Python 是数据科学家的首选语言,而且很可能会持续很长时间。所有 ML 库开发人员都在投入时间为 Python 开发库。Go 可能会及时到达那里,但就目前而言,程序员的工具包中有两种语言的空间。
TSINGSEE 青犀视频研发人员在做平台开发时,在智能分析方面用 Python 编译会比较多,在部分基层调用能力上则采用 Golang 比较多。大家可以根据自身的需求来选择初始学习的语言,也可以通过我们的开源项目 EasyDarwin 来进行测试。
我们在人工智能技术+视频领域,将AI检测、智能识别技术融合到各个视频应用场景中,如:安防监控、视频中的人脸检测、人流量统计、危险行为(攀高、摔倒、推搡等)检测识别等。典型的示例如EasyCVR视频融合云服务,具有AI人脸识别、车牌识别、语音对讲、云台控制、声光告警、监控视频分析与数据汇总的能力。
当然,也有网友认为:作为一种编程语言,Golang 胜过 Python。 Go 在大多数情况下绝对占上风,它可能没有 Python 多年来获得的名气和互联网的扩张,但 Go 肯定也在这方面迎头赶上。欢迎在评论区和我们讨论。
作者:TSINGSEE