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 · 328 天前 · 6307 次点击
    这是一个创建于 328 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  328 天前

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

    • 这是一个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  
       328 天前   ❤️ 2
    我怀疑他在吹牛逼
    Rooger
        2
    Rooger  
       328 天前   ❤️ 1
    才开始了解 Swift ,Mojo 就来了,有得玩。但愿 Mojo 会让我爱上,毕竟学过 Python 五六次,但是从来没有在生产上使用。

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

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

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

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

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

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

    对啊,然而,mojo 不是砍语言,反而是标榜自己是 python 的扩充
    ljsh093
        18
    ljsh093  
       328 天前
    @duke807 #17 看了下感觉像 ts 对于 js
    iOCZ
        19
    iOCZ  
       328 天前
    差距应该没那么大吧
    oldshensheep
        20
    oldshensheep  
       328 天前   ❤️ 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  
       328 天前
    油管上看到一个笑死人的评价,Mojo 的人还跟评论了:
    JavaScript:无休止的框架战争。
    Python:无休止的替代战争。
    RockShake
        22
    RockShake  
       328 天前
    看了下主要是用了并行计算,用硬件换时间?
    iorilu
        23
    iorilu  
       328 天前 via Android
    有啥意义,现有得库能直接用吗
    wizardyhnr
        24
    wizardyhnr  
       327 天前
    挺好的,现在的 Python 版本都是顶层 Python 调用加底层 C 实现。这个整个原型可以用 Python 写,底层优化同样的语法整合度肯定方便很多。
    Marketing 也很不错,切入机器学习的热点领域,加入 CUDA 的支持。用户群体简单适应就可以很快迁移了吧。
    Python 的优化方案太杂了(Cython/mypyc/taichi/numba ),也不差这一个了。
    mayli
        25
    mayli  
       327 天前 via Android
    看起来核心还是数值计算和 simd/gpu, 并不是通用替代
    tywtyw2002
        26
    tywtyw2002  
       327 天前 via iPhone
    mojo 能编译成二进制吗?

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

    codon 虽然说提供了 python to 二进制,但是问题也很多。
    wizardyhnr
        27
    wizardyhnr  
       327 天前   ❤️ 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  
       327 天前
    @tywtyw2002 cython 不是可以,也不费啥事
    akaHenry
        29
    akaHenry  
       327 天前
    我建了个 mojo 中文技术 vx 群, 加群二维码在如下链接里. 欢迎加群交流 mojo.


    https://user-images.githubusercontent.com/3252130/236625774-11005af1-0cf0-4154-908e-8094b7b3350a.png
    roundgis
        30
    roundgis  
       326 天前
    python 那些特别慢的部分基本都用 cython 或者 c 改写了

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

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