“慢”下来的 Python 要怎么保持竞争力?

王练
 王练
发布于 2017年06月09日
收藏 8

在 2017 年 Python 语言峰会上,Victor Stinner 提出了一些改进 Python 性能的想法,他认为用户现在正在将 Python 的性能与 Rust 或 Go 进行比较,Python 核心开发人员需要找到一种加速 Python 的方法,以保持其与其他语言的竞争力。

但 Stinner 也表示 Python 并不像其他语言那样容易优化,主要是因为 C API 阻碍了这一块的创新性发展。 PyPy 的 CPyExt API 已经取得了很大的进步,但仍然有一些轻微的兼容性问题。 PyPy 几年前曾试图重新实现 NumPy 扩展,最终也失败了。 NumPy 是 Python 的 C 扩展包之一,从本质上来说必须适用于任何替代实现,但现实却并未做到如此。

Stinner 认为 just-in-time (JIT) 编译可能是一种方向,但可惜的是在各种项目上尝试(如 Unladen Swallow、Pyston 和 Pyjion )后,都未能成功。另外,PyPy 使 Python 的速度提高了五倍,是否应该放弃 CPython 而推广 PyPy ?在他看来,许多核心开发人员更喜欢 CPython 和 C API,但如果 Python 想在当今的语言组合中具有竞争力,则需要 JIT 或转到 PyPy 。

Stinner 还提出了一些其它的想法,比如说也许可以创建一个类似于 Python 的新语言,但更为严格,就像 Hack for PHP 那样,或许能实现 2x 目标。提前编译(AoT),也可能是一种实现 JIT 而无需长时间预热的可能性。另外像是多级 JIT ,类似 JavaScript,或许也能带来性能提升。

观点提出后,现场得到了许多赞同、反对和质疑的声音。Python 后续该如何发展,还需要这群核心开发者继续探讨和摸索。对此,你怎么看?欢迎留言评论。

>>>【评论有礼】6月6日-30日评论每日更新的“新闻资讯和软件更新资讯”,评论点赞数超过 20 的可登上每周更新的“源资讯”和“软件周刊”两大栏目,点赞数超过 50 的还将获得 5 活跃积分奖励和开源中国定制好礼。详情

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:“慢”下来的 Python 要怎么保持竞争力?
加载中

精彩评论

Raymin
Raymin

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“wei2011”的评论

看得出来你很少写python,写python的都没觉得你说的是问题,因为ide、编辑器可以很好的解决这样的问题
解决个毛:
if x > 0:
x += 1
y += 1
你告诉我原来的缩进是啥?
wei2011
wei2011

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。
看得出来你很少写python,写python的都没觉得你说的是问题,因为ide、编辑器可以很好的解决这样的问题
黄者
黄者
靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。
orpherus
orpherus

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“wei2011”的评论

看得出来你很少写python,写python的都没觉得你说的是问题,因为ide、编辑器可以很好的解决这样的问题

引用来自“Raymin”的评论

解决个毛:
if x > 0:
x += 1
y += 1
你告诉我原来的缩进是啥?

引用来自“wei2011”的评论

你这样的代码叫格式错误,就像写js结果括号对不上。不管写什么代码,缩进是基本要求吧?你要是copy别人的代码自己copy乱了,我还能说啥
很多网站贴代码交流,缩进不支持,用括号的可以在IDE里格式化一下。py只能贴gist里
haitaosoft
haitaosoft

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“张豪飞”的评论

无论是花括号还是缩进分段都是必须的,各有各的设计哲理,不是必须要跟其他一样,如果什么都跟其他语言一样就不会今天有这么多人使用python,存在就有存在的道理。话说回来,相比于少一个花括号,缩进更容易肉眼看出错误吧

引用来自“mark35”的评论

虽然说存在自有合理性并且py使用者众多。不过我认为一个语言的实际(执行)逻辑不应该与表现形式有关。对于编程语言来说是无论换行、缩进怎么变化都不应该与代码执行结果耦合,比如js如果行尾分号书写正确那么无论排版样式怎么变化——增加减少缩进、增加减少换行、甚至minify成一行,都不会影响js最终执行结果。 对于交流的语言文字来说,表达的含义不应该和形式强耦合: 比如说一句话的速度或者停顿长短不应该导致含义大不同。 本质来说语言是一个序列化的一维的的单向的信息流,我们可以使用空格、标点、花括号等控制字符来实现逻辑约束、命名空间、代码块等功能。 而使用换行、缩进来控制那么这信息流的二维层面扩展与一维的执行就是强耦合,也就是说这信息流的传输、保存状态会导致执行结果不可预期,这种设计是不大合理的。

引用来自“CLIFF-flyer”的评论

你换一个角度考虑,如果不缩进也不影响程序编译,又有多少人会遵守???没规矩不成方圆,python本来的特点的就是易读,要抛弃这个优点吗?
那可以增加一个 block end可选关键字,编译解释时自动忽略它,行不行?
只靠缩进的人,从来不用它;担心缩进不靠谱的人,使用它,而它也能帮助格式化工具自动生成缩进

最新评论(57

debuggerx1
debuggerx1

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“张豪飞”的评论

无论是花括号还是缩进分段都是必须的,各有各的设计哲理,不是必须要跟其他一样,如果什么都跟其他语言一样就不会今天有这么多人使用python,存在就有存在的道理。话说回来,相比于少一个花括号,缩进更容易肉眼看出错误吧

引用来自“mark35”的评论

虽然说存在自有合理性并且py使用者众多。不过我认为一个语言的实际(执行)逻辑不应该与表现形式有关。对于编程语言来说是无论换行、缩进怎么变化都不应该与代码执行结果耦合,比如js如果行尾分号书写正确那么无论排版样式怎么变化——增加减少缩进、增加减少换行、甚至minify成一行,都不会影响js最终执行结果。 对于交流的语言文字来说,表达的含义不应该和形式强耦合: 比如说一句话的速度或者停顿长短不应该导致含义大不同。 本质来说语言是一个序列化的一维的的单向的信息流,我们可以使用空格、标点、花括号等控制字符来实现逻辑约束、命名空间、代码块等功能。 而使用换行、缩进来控制那么这信息流的二维层面扩展与一维的执行就是强耦合,也就是说这信息流的传输、保存状态会导致执行结果不可预期,这种设计是不大合理的。

引用来自“debuggerx1”的评论

python强调可读性,一致性,认为解决问题最直接的方法应该有一种并且最好只有一种,确定准确的一段逻辑代码拥有确定的表现形式就非常利于阅读和培养sence,所以python中缩进就是括号的功能,而且还能提供确定的表现,这不是很棒么?习惯了以后只要瞟一眼代码的垂直曲线就能大概掌握层级关系和逻辑脉络,而不像其他语言在没格式化的情况下还要靠数括号个数来找一行代码在哪个逻辑块里。js可以改变排版和minify,但是js能随便减少大小括号么,而且一个缩进就是一个\t,占用上和其他语言的符号都是一样样的(准确来说其他语言为了良好的可读性,一般是括号确定语法后再利用缩进格式化提供表现形式,源码的字符占用反而更多),不能因为缩进看上去没东西就觉得它不算是符号吧。。一句话的速度或者停顿长短不应该导致含义大不同,但是一个优秀的播报员的标准语速和停顿的表达是最便于被理解和接受的,可以避免很多不必要的麻烦。最后一句完全没看懂,信息流和结果不可预期?怎么可能啊……

引用来自“mark35”的评论

不要忘了大括号可是一双的,语义上分别表示开始和结束。 空格或者tab不具有这个语义
1
2
2
3
3
3
3
2
2
上面的数字表示缩进,缩进数由小变大代表{也就是开始,缩进数由大变小代表}也就是结束,,你说的语义到底是什么呢?不都是人为定义出来的么~~
DarkAngel
DarkAngel

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“wei2011”的评论

看得出来你很少写python,写python的都没觉得你说的是问题,因为ide、编辑器可以很好的解决这样的问题

引用来自“Raymin”的评论

解决个毛:
if x > 0:
x += 1
y += 1
你告诉我原来的缩进是啥?
缩进也能成为理由?缩进本来就是Python语法的一部分。那我把C/C++/Java的花括号去掉了,你给我还个原?
mark35
mark35

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“张豪飞”的评论

无论是花括号还是缩进分段都是必须的,各有各的设计哲理,不是必须要跟其他一样,如果什么都跟其他语言一样就不会今天有这么多人使用python,存在就有存在的道理。话说回来,相比于少一个花括号,缩进更容易肉眼看出错误吧

引用来自“mark35”的评论

虽然说存在自有合理性并且py使用者众多。不过我认为一个语言的实际(执行)逻辑不应该与表现形式有关。对于编程语言来说是无论换行、缩进怎么变化都不应该与代码执行结果耦合,比如js如果行尾分号书写正确那么无论排版样式怎么变化——增加减少缩进、增加减少换行、甚至minify成一行,都不会影响js最终执行结果。 对于交流的语言文字来说,表达的含义不应该和形式强耦合: 比如说一句话的速度或者停顿长短不应该导致含义大不同。 本质来说语言是一个序列化的一维的的单向的信息流,我们可以使用空格、标点、花括号等控制字符来实现逻辑约束、命名空间、代码块等功能。 而使用换行、缩进来控制那么这信息流的二维层面扩展与一维的执行就是强耦合,也就是说这信息流的传输、保存状态会导致执行结果不可预期,这种设计是不大合理的。

引用来自“debuggerx1”的评论

python强调可读性,一致性,认为解决问题最直接的方法应该有一种并且最好只有一种,确定准确的一段逻辑代码拥有确定的表现形式就非常利于阅读和培养sence,所以python中缩进就是括号的功能,而且还能提供确定的表现,这不是很棒么?习惯了以后只要瞟一眼代码的垂直曲线就能大概掌握层级关系和逻辑脉络,而不像其他语言在没格式化的情况下还要靠数括号个数来找一行代码在哪个逻辑块里。js可以改变排版和minify,但是js能随便减少大小括号么,而且一个缩进就是一个\t,占用上和其他语言的符号都是一样样的(准确来说其他语言为了良好的可读性,一般是括号确定语法后再利用缩进格式化提供表现形式,源码的字符占用反而更多),不能因为缩进看上去没东西就觉得它不算是符号吧。。一句话的速度或者停顿长短不应该导致含义大不同,但是一个优秀的播报员的标准语速和停顿的表达是最便于被理解和接受的,可以避免很多不必要的麻烦。最后一句完全没看懂,信息流和结果不可预期?怎么可能啊……
不要忘了大括号可是一双的,语义上分别表示开始和结束。 空格或者tab不具有这个语义
鱼米三香
鱼米三香
PyPy不能使用C API?高人解答
葫芦咩
葫芦咩

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“wei2011”的评论

看得出来你很少写python,写python的都没觉得你说的是问题,因为ide、编辑器可以很好的解决这样的问题

引用来自“Raymin”的评论

解决个毛:
if x > 0:
x += 1
y += 1
你告诉我原来的缩进是啥?
按照你的逻辑,你要是{}括错了也是一样的。
葫芦咩
葫芦咩

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“wei2011”的评论

看得出来你很少写python,写python的都没觉得你说的是问题,因为ide、编辑器可以很好的解决这样的问题

引用来自“Raymin”的评论

解决个毛:
if x > 0:
x += 1
y += 1
你告诉我原来的缩进是啥?
写了4年python,从没碰到过这些问题。
霡霂
霡霂
当初靠打纸带编程的那帮人现在都没怨言,你们就别争的面红耳赤的了😏
賈可

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“wei2011”的评论

看得出来你很少写python,写python的都没觉得你说的是问题,因为ide、编辑器可以很好的解决这样的问题

引用来自“Raymin”的评论

解决个毛:
if x > 0:
x += 1
y += 1
你告诉我原来的缩进是啥?

引用来自“wei2011”的评论

你这样的代码叫格式错误,就像写js结果括号对不上。不管写什么代码,缩进是基本要求吧?你要是copy别人的代码自己copy乱了,我还能说啥

引用来自“orpherus”的评论

很多网站贴代码交流,缩进不支持,用括号的可以在IDE里格式化一下。py只能贴gist里
贴吧或者很多网站评论区一粘贴行首的连续空白全部被过滤
开源中国-首席村长
开源中国-首席村长

引用来自“游客”的评论

垃圾语言,给php提鞋都不配
引战失败,哈哈
壮士
壮士

引用来自“黄者”的评论

靠缩进来决定来决定语句的分组,这点应该改改了,太容易出错,还不好找错在哪里。格式还是应该靠自动化format工具来实现。

引用来自“wei2011”的评论

看得出来你很少写python,写python的都没觉得你说的是问题,因为ide、编辑器可以很好的解决这样的问题

引用来自“Raymin”的评论

解决个毛:
if x > 0:
x += 1
y += 1
你告诉我原来的缩进是啥?
老天,你用 textarea 写代码?
返回顶部
顶部