玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > 【Python资讯】Python业界新闻 > 正文内容

选择Python而不选择Go语言的原因

Python入门佳作 经典教程的全新修订 10个项目引人入胜
玩蛇网推荐图文教程:python黑客多线程扫描器

选择Python而不选择Go语言的原因,今天我们就来谈一谈。现在网上关于Go语言和Python语言的话题还真的不少,本月刚好是Go语言诞生3周年。这个语言在谷歌巨人的推动下最终很可能成为今后的主流语言。

由于一篇为什么我不会舍弃Python投奔Go语言(英文) 的博客,我收到了大量的邮件,作者说Go语言除了“用返回值来处理异常错误”这点以外,其它的都非常好。

我想写出一点东西,解释一下Go语言为什么这样做,这会对大家都有用。

Go语言

有些操作基本上不会出错,所处的环境根本不可能给你提示错误信息,不可能控制错误。这才是让人痛苦的地方。典型的例子;一个程序执行x[j],j值超出数组边界,这才痛苦。像这样预料之外的麻烦在程序中是一个严重的bug,一般会弄死程序的运行。不幸的是,由于这种情况的存在。我们很难写出健壮的,具有自我防御的服务器——例如,可以应付偶然出现的有bug的HTTP请求处理器时,不影响其他服务的启动和运行。

为解决这个问题,我们引入了恢复机制。它能让一个go例程从错误中恢复,服务余下设定的调用。然而,代价是,至少会丢失一个调用。这是特意而为之的。引用邮件中的原话:这种设计不同于常见的异常控制结构,这是一个认真思考后的决定。我们不希望像java语言里那样把错误和异常混为一谈。

有一个你需要记在心里的事情是,Go语言是为大型软件设计的。我们都喜欢程序简洁清晰,但对于一个由很多程序员一起开发的大型软件,维护成本的增加很难让程序简洁。异常捕捉模式的错误处理方式的一个很有吸引力的特点是,它非常适合小程序。

Go语言中规定的方式是,函数返回的错误信息。如果一个文件并不存在,op.Open函数会返回一个错误信息。如果你向你一个中断了的网络连接里写数据,net.Conn里的Write方法会返回一个错误。

这种状况在这种程序中是可以预料到的,这种操作就是容易失败,你知道程序会如何运行,API的设计者通过内置了一种错误情况的结果而让这一切显得很清楚。

但对于大型程序库,如果对于一些普通操作,你都需要考虑每行代码是否会抛出异常、是否有必要捕捉处理,这对于开发效率和程序员的时间来说都是非常严重的拖累,我自己做开发大型Python软件时感受到了这个问题。

Go语言的返回错误方式,不可否认,对于调用者不是很方便,但这样做会让程序中可能会出错的地方显的很明显,对于小程序来说,你可能只想打印出错误,退出了程序。对于一些很精密的程序,根据异常不同,来源不同,程序会做出不同的反应,这很常见,这种情况中,try + catch的方式相对于错误返回模式显得冗长。

在我们的Python里面一个10行的代码放到Go语言里很可能会更冗长,Go语言主要不是针对10行规模的程序。

玩蛇网文章,转载请注明出处和来源网址:http://www.iplaypython.com/news/a125.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

在线python培训课程

玩蛇网PythonQQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
出炉日期:2015-12-15 11:34 玩蛇网 www.iplaypython.com

我要分享到:
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules