MIT 项目如何演变为全球语言 Julia
How an MIT research project became a global programming language

2009 年,一群 MIT 研究人员因对现有科学计算语言既僵硬又缓慢感到沮丧,决定自研一款新语言。他们创建了 Julia,旨在让科学家和工程师无需精通编程也能构建高性能应用。如今,Julia 已拥有超过 100 万用户,被用于从模拟原子行为到设计喷气式引擎、开发 Moderna 疫苗等广泛领域。其核心优势在于独特的即时编译技术,兼具 Python 的易用性和 C 语言的速度。JuliaHub 团队进一步推出了 Dyad 3.0,利用 AI 代理自动处理物理仿真与系统设计,将原本需要数月的工程设计工作缩短至数小时,彻底改变了复杂系统的开发模式。
研究人员会告诉我,他们告诉主管自己用 Julia 是因为它速度快,但千万别告诉主管用 Julia 其实是因为它真的很有趣。
HN 评论区
124- eigenspace
Julia 是一门非常棒的语言,正是它让我真正开始关心并享受编程。我认为它是现代语言中从 Lisp 汲取教训最多的一门,同时也提出了一些非常出色的原创想法。
值得称道的地方很多,但我认为我最爱它、也觉得它最有趣的一点在于:它几乎独一无二地擅长将一段代码以各种方式转换其含义,并且拥有大量实现这一点的工具。包括:
* 多重分派(Multiple dispatch)允许非常灵活地编写通用代码,而且多重分派并非某种事后添加、需要手动启用的额外功能。语言中的每个函数都是可重载的,使用多重分派没有任何性能惩罚。
* 参数化类型(Parametric typing)允许对常见的“基础”类型进行大量的抽象。
* Lisp 风格的宏(Lispy macros)让你可以进行元编程,从而改变某段语法的含义。
* 生成函数(Generated functions)让你能在编译时介入,本质上接管编译流水线,并为任何给定的输入类型签名定制代码生成。
* 抽象解释器接口(Abstract interpreter interface)让你能实质上接管编译器,随心所欲地定制你的代码生成和分析过程。例如,该接口就被用来支持 GPU 和自动微分,作为包的功能提供。
- cmontella
上周末我做了一些 Julia 的基准测试,对比了一堆语言,如果有人感兴趣的话。工作负载是在 Apple M1 上运行 EKF(扩展卡尔曼滤波),我试图尽可能多地并行执行:
https://raw.githubusercontent.com/mech-lang/mech/codex/taich...
对比对象包括 Taichi、Halide、Futhark、Rust、Lua、LuaJIT、Numpy 以及纯标量 Python。Julia 表现非常出色,它基本上能跑得和你想要的一样快!(这些并不是完全对等的比较,请把这想象成一篮水果)
* Mech 的结果应被视为 Rust 性能的下限。
- prof-dr-ir
如果你从事数值计算工作,并且希望显式地写出内层循环,同时又不牺牲太多性能——无论是出于教学目的,还是因为你想调整算法——那么 Julia 简直太棒了。
从零开始创建一个空文件,导入一个 LinearAlgebra,然后从头开始开发卷积神经网络或马尔可夫链蒙特卡洛算法,这个过程非常有趣。然后看到这样一个程序速度快到足以在 MNIST 数据集上训练,或者算出临界指数的合理估计值(这里特指 Python),会非常有成就感。
我不确定是否有比 Julia 更适合这类工作的语言。
- maxall4
我真的很想喜欢 Julia。它拥有不错的类型系统、良好的生态系统、合理的语法,而且比 Python 快得多。但它的开发者体验(DX)存在几个问题,阻碍了我使用它:其中最严重的是 JIT(或类似 JIT 的系统)完全缺乏缓存,导致运行时间不到 100ms 的脚本需要数秒的编译时间。有一些外部包试图解决这个问题,但它们远达不到官方包的质量,而且根据我的经验,它们相当不稳定。
(我上次尝试 Julia 是几年前的事了;也许这方面已经有所改进?)
- myrmidon
Julia 用起来真的很有趣,我认为他们在类型系统方面确实搞到了一些门道:复杂类型在模块边界之间的交互比大多数其他语言都要好得多;这是其中一位创作者关于此话题的精彩演讲:
https://www.youtube.com/watch?v=kc9HwsxE1OY
在我看来,这门语言最大的缺点是 Julia 本质上是一个 LLVM 工具链在“假装”是一门解释型语言(从技术上讲,它确实是),这往往表现为首次执行时的延迟非常慢(几乎迫使你保持解释器处于打开状态,而不是仅仅在编辑的文件上调用它)。
- drhagen
当我在 MIT 读研究生时,我的办公桌就在 Julia 团队隔壁的走廊对面。我们甚至共用一张午餐桌。Julia 最出名的是它的优化编译器,但许多人可能没有注意到他们在语言本身设计上所付出的精心工作。这可不是 Matlab!我记得有一次很长的谈话,其中一位成员在教我关于 Unicode 的不同规范化类型。他们必须选择一种方式来规范化 Unicode 变量名(这对数学编程语言更有用),并且他们正在仔细权衡各种选项的后果。
- ashton314
当我需要一门既能快速运行又能以函数式方式推理的语言时,Julia 是我的首选。类型系统不错,模式匹配相当好,元编程的故事虽然可以显著改进,但也并不差,而且天哪,它快得离谱。快得令人发指。
- radiator
你觉得文章《Why I no longer recommend Julia》(为什么我不再推荐 Julia)中关于正确性的批评仍然有效吗?*
* 整个生态系统中存在太多正确性和组合性方面的 bug,以至于在任何正确性至关重要的场景下,使用它都难以得到辩护。