Hacker News 中文摘要

RSS订阅

Julia生态系统中的正确性与可组合性缺陷(2022) -- Correctness and composability bugs in the Julia ecosystem (2022)

文章摘要

作者曾长期使用Julia语言进行数据处理和科学计算,并开发了多个开源包。但后来发现Julia生态系统存在大量正确性和兼容性问题,认为其错误率高于其他编程系统,因此不再推荐使用,尤其是在对正确性要求高的场景中。

文章总结

标题:为什么我不再推荐使用Julia编程语言

多年来,我一直使用Julia编程语言进行数据转换、清洗、分析和可视化,以及统计分析和模拟计算。我曾开发过多个开源软件包,涉及有向距离场最近邻搜索图灵模式等领域,并制作过解释Julia概念的视觉教程。但后来我停止使用Julia,当被问及时,我会明确表示不再推荐使用它。

经过多年使用,我发现Julia生态系统存在过多的正确性和组合性问题,在需要保证正确性的场景中难以放心使用。与其他编程系统相比,Julia及其软件包的正确性缺陷率最高。以下是一些具体案例:

我提交的问题包括: - 概率密度采样结果错误 - 数组采样可能产生偏差 - 整数乘积函数计算错误 - 直方图拟合Float64数组出错 - 基础函数可能返回错误结果

其他用户报告的问题涉及: - 统计摘要返回NaN值 - 有序字典可能损坏键值 - 闰年日期计算错误 - 带误差条数值类型导致模拟错误 - 管道输出顺序错乱

这些问题在使用不同软件包组合时尤为突出。例如: - 距离计算包与单位向量不兼容 - 外部命令执行函数不支持子字符串 - 缺失值支持在某些情况下破坏矩阵乘法 - 分布式宏与偏移数组不兼容

偏移数组(OffsetArrays)是问题高发区,经常导致内存越界访问,可能引发段错误或静默错误。根本原因在于与@inbounds宏的结合使用,该宏用于移除数组边界检查,但容易被误用。

这些问题不仅限于数学计算领域,在JSON编码、HTTP请求、数据框操作等常规任务中也频繁出现。多位用户私下分享了类似经历,公开讨论中也出现了相关案例。

虽然Julia社区人才济济,但这些系统性问题难以自下而上解决。项目领导层似乎并未充分认识到问题的严重性。尽管社区常回应称"大多数问题已修复",但类似的保证从2016年持续至今,而根本问题依然存在。

基于十年使用经验,我认为Julia在基础正确性方面尚未达到可靠状态,对于大多数应用场景而言,其风险超过了收益。虽然Julia最初设定的目标令人振奋,但要实现这些目标,需要重新审视和调整当前的发展模式。

(注:本文保留了原作者对Julia生态系统存在问题的详细描述和具体案例,删减了部分软件包链接和个人作品介绍等次要信息,突出了关于正确性和组合性问题的核心论述。)

评论总结

以下是评论内容的总结:

  1. 关于Julia语言正确性的担忧

    • 多位用户报告在使用过程中遇到基础功能bug,影响使用体验
    • 关键引用:
      • "I quit Julia after running into serious bugs in basic CSV package functionality" (dhampi)
      • "My conclusion after using Julia for many years is that there are too many correctness and composability bugs" (croes引用原文)
  2. 生态系统成熟度问题

    • 用户对包生态系统的稳定性和兼容性表示担忧
    • 关键引用:
      • "fast compilation and/or module caching is coming in the next release...got burned out" (CyberDildonics)
      • "the basics are always critical...some of those are pretty recent (2024)" (elcritch)
  3. 社区文化争议

    • 有用户指出问题修复过程中存在制度性阻力
    • 关键引用:
      • "had to push through a lot of 'institutional' friction to do so" (yurivish)
      • "the post claims vague but scary 'correctness issues'" (nsajko)
  4. 支持者的辩护

    • 长期用户表示核心语言稳定,问题多来自第三方包或特殊使用场景
    • 关键引用:
      • "The core language has no obvious bugs" (sgaure)
      • "Julia's type-system allows you to easily compose...in ways that possibly were never tested" (mgkuhn)
  5. 与其他语言的比较

    • 用户讨论Julia与其他技术计算语言(R/Fortran/Python)的对比
    • 关键引用:
      • "I'm reminded of the recent post about R's (CRAN's) somewhat radical approach" (maxbond)
      • "I hear similar bugs exist in python libraries" (max_)

总结呈现了正反两方面的观点:一方面是对基础功能稳定性和社区治理的担忧,另一方面是支持者认为核心语言可靠且问题多来自特殊使用场景。评论中既有具体的使用挫折案例,也有对语言设计理念的讨论。