V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ChrisFreeMan
V2EX  ›  Python

Swift 和 LLVM 作者的新项目, 35000 倍快的升级版 Python

  •  1
     
  •   ChrisFreeMan · 2023-05-05 08:12:49 +08:00 · 6635 次点击
    这是一个创建于 600 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2023-05-05 16:34:17 +08:00

    有人直奔评论区了,补充一下里面的内容

    • 这是一个python的super set(超集),兼容python语法。类似于TS对于JS的关系
    • 多出的关键字和数据类型为,let(常量) var(变量)struct, 和swift很相似
    • 里面提到兼容主流库,比如pandas,numpy
    • 在非类型安全的情况下(原python的无类型注释的非安全语法),只有14倍的提速
    • 在全速情况下的条件是,加入静态类型,内存管理加入ownership && borrowing (rust理念),指针操作等
    30 条回复    2023-05-07 14:53:44 +08:00
    helloadmin
        1
    helloadmin  
       2023-05-05 09:36:52 +08:00   ❤️ 2
    我怀疑他在吹牛逼
    Rooger
        2
    Rooger  
       2023-05-05 09:38:05 +08:00   ❤️ 1
    才开始了解 Swift ,Mojo 就来了,有得玩。但愿 Mojo 会让我爱上,毕竟学过 Python 五六次,但是从来没有在生产上使用。

    官网: https://www.modular.com/mojo

    GitHub: https://github.com/modularml/mojo
    expkzb
        3
    expkzb  
       2023-05-05 09:46:36 +08:00
    先写 python ,再让 gpt 转成 mojo 就行了吧。最大的吸引力是可以省下一个 cuda 。
    galenjiang
        4
    galenjiang  
       2023-05-05 09:49:05 +08:00
    julia 怎么说
    fioncat
        5
    fioncat  
       2023-05-05 10:07:57 +08:00
    35000 倍?我印象中 C 语言比 Python 也就快几倍吧。。
    InkStone
        6
    InkStone  
       2023-05-05 10:18:10 +08:00
    @fioncat 我印象中计算密集代码有 20~30 倍左右。
    主要是 Python 的对象模型太复杂了,加法在 C 里就是一条指令,在 Python 里是一大堆的查表和函数调用。
    xooass
        7
    xooass  
       2023-05-05 10:27:51 +08:00
    能做到 python 代码编译成 mojo 就行

    平时用 py 做脚本,需要性能的时候就去编译一下
    Rooger
        8
    Rooger  
       2023-05-05 10:43:25 +08:00
    @fioncat 除非核心代码全部是 C 实现的,只是 Python 调用一下才可能快几倍,否则把纯 C 的代码用 Python 实现,可能真要差出上千倍的。
    love
        9
    love  
       2023-05-05 10:44:52 +08:00
    @fioncat js 都比 py 快几十倍
    CaptainD
        10
    CaptainD  
       2023-05-05 10:58:04 +08:00
    没深入了解这个语言,不过它和 py 对比速度的时候用了一个动图,py 是串行它是并行,是在多线程下吗?

    因为 GIL 在多线程里肯定性能要差的,但是 py 更多的用协程替代了多线程场景,特定场景性能差距没有想象中大,计算密集型场景 py 也并不是因为无法并行慢的
    duke807
        11
    duke807  
       2023-05-05 11:03:44 +08:00 via Android
    没有逻辑可言

    觉得 py 慢,所以搞一个子集是 py 的 新语言

    觉得 py 慢,不是应该搞一个新的 py 解释或者翻译器吗?搞新语言进一步扩充 py 是哪门子逻辑?
    laqow
        12
    laqow  
       2023-05-05 11:03:58 +08:00
    如果不是 python 足够慢谁敢在上面开源可能对自己形成竞争的东西
    haha512
        13
    haha512  
       2023-05-05 11:27:12 +08:00
    重要的是能否无缝兼容第三方库,不然再快,意义也不大
    tsubin
        14
    tsubin  
       2023-05-05 11:38:08 +08:00
    能提升几千倍 那不用说肯定是 JIT 编译+各种编译优化手段
    newshbb
        15
    newshbb  
       2023-05-05 11:48:12 +08:00
    他们是懂写标题的
    jsq2627
        16
    jsq2627  
       2023-05-05 11:54:12 +08:00 via iPhone
    @duke807 慢的原因就是语言特性太复杂导致不能优化吧。所以只好砍语言
    duke807
        17
    duke807  
       2023-05-05 12:02:40 +08:00 via Android   ❤️ 1
    @jsq2627

    对啊,然而,mojo 不是砍语言,反而是标榜自己是 python 的扩充
    ljsh093
        18
    ljsh093  
       2023-05-05 12:05:44 +08:00
    @duke807 #17 看了下感觉像 ts 对于 js
    iOCZ
        19
    iOCZ  
       2023-05-05 12:35:11 +08:00
    差距应该没那么大吧
    oldshensheep
        20
    oldshensheep  
       2023-05-05 12:51:28 +08:00   ❤️ 1
    Further, we decided that the right long-term goal for Mojo is to provide a superset of Python (i.e. be compatible with existing programs) and to embrace the CPython immediately for long-tail ecosystem enablement
    How compatible is Mojo with Python really ?
    ……but… it is still very early and missing many features - so today it isn’t very compatible. Mojo doesn’t even support classes yet!
    画饼很好,看看未来的发展吧……

    https://docs.modular.com/mojo/why-mojo.html
    pengtdyd
        21
    pengtdyd  
       2023-05-05 14:26:35 +08:00
    油管上看到一个笑死人的评价,Mojo 的人还跟评论了:
    JavaScript:无休止的框架战争。
    Python:无休止的替代战争。
    RockShake
        22
    RockShake  
       2023-05-05 15:53:58 +08:00
    看了下主要是用了并行计算,用硬件换时间?
    iorilu
        23
    iorilu  
       2023-05-05 15:55:54 +08:00 via Android
    有啥意义,现有得库能直接用吗
    wizardyhnr
        24
    wizardyhnr  
       2023-05-06 01:43:46 +08:00
    挺好的,现在的 Python 版本都是顶层 Python 调用加底层 C 实现。这个整个原型可以用 Python 写,底层优化同样的语法整合度肯定方便很多。
    Marketing 也很不错,切入机器学习的热点领域,加入 CUDA 的支持。用户群体简单适应就可以很快迁移了吧。
    Python 的优化方案太杂了(Cython/mypyc/taichi/numba ),也不差这一个了。
    mayli
        25
    mayli  
       2023-05-06 04:36:33 +08:00 via Android
    看起来核心还是数值计算和 simd/gpu, 并不是通用替代
    tywtyw2002
        26
    tywtyw2002  
       2023-05-06 04:43:57 +08:00 via iPhone
    mojo 能编译成二进制吗?

    目前 python 一大痛点就是没法编译成二进制。

    codon 虽然说提供了 python to 二进制,但是问题也很多。
    wizardyhnr
        27
    wizardyhnr  
       2023-05-06 06:53:23 +08:00   ❤️ 1
    看了下官网。简单来说最初的核心开发是 AI 计算,对 CUDA 等有较好的封装,为了方便客户就采用了 Python 的语法。到了这一步就要确定是做 CPython 的 DSL , 还是另外一个 Interpeter 。
    最初的设计应该和 Cython 类似,但后续受 CPython 架构的限制太大,免不了和 PyObject 和 GIL 打交道,估计内心是看不上 CPython 的实现的,确实时间太久远了,历史负担很大。
    看起来对自己 AI 计算的框架比较有信心,所以就选择走 PyPy 的路线。但是 PyPy 的教训就是没有广大的第三方库支持。它本身对 Python 基本类型的支持还不完整,属于 DSL 的状态。现在宣传就是希望多圈用户来移植第三方库。
    有第三方来倒逼一下 CPython 总是好的,到达 neovim 之于 vim 就最好了。一个 nogil 讨论了那么多年还是连个响都没有。性能需求倒逼总归是要逼出 Python4 的,官方不想做就看第三方能不能搞出来了。
    iorilu
        28
    iorilu  
       2023-05-06 17:50:33 +08:00
    @tywtyw2002 cython 不是可以,也不费啥事
    akaHenry
        29
    akaHenry  
       2023-05-06 21:04:25 +08:00
    我建了个 mojo 中文技术 vx 群, 加群二维码在如下链接里. 欢迎加群交流 mojo.


    https://user-images.githubusercontent.com/3252130/236625774-11005af1-0cf0-4154-908e-8094b7b3350a.png
    roundgis
        30
    roundgis  
       2023-05-07 14:53:44 +08:00
    python 那些特别慢的部分基本都用 cython 或者 c 改写了

    剩下那 20%慢的 要看谁有心情了 或者说不值得花时间

    gil 是另外一个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3020 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:59 · PVG 21:59 · LAX 05:59 · JFK 08:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.