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