初试 Julia 语言 (转)
原文地址:
https://blog.csdn.net/seekiu/article/details/47397067
随着 Julia 1.0版本的推出,人工智能圈子比较炸锅, 好像这门小众语言要赶超Python了, 作为现在编程领域的大佬,Python最被人诟病的就是运算性能,恰巧 Julia 是已高性能并行计算为主打,并且兼顾了语法简洁和动态性,好奇之下找了找网上的相关资料,发现确实是太小众了,最后发现了下面这篇文章,觉得有些用处。
以下为原文内容:
上一篇博文中推荐了 Python 的 JIT 编译器 numba,这两天又用空余的时间尝试了一下最近的一个新兴语言 Julia。Julia 的目标设定得很高,未来是要成为一个速度上接近甚至超过 Fortran/C 这样的传统语言的通用编程语言。然而就我这两天很初步的尝试结果看来,它也许有这个能力,但至少目前,对工程计算的人来说,还没有达到 production-ready 的程度。(当然,这只是基于我个人的编程经验和需求的结论,很可能不适用于其他人。而且Julia本身是一门相对年轻的语言,很值得持续关注。)
之所以这样说,有三个方面的理由:
-
作为一个动态语言,它的 JIT 编译器(在很多情况下)还没有智能到,让我可以同时享受动态语言的便利和它的速度优势。例如最近我在试用 Julia 时最先尝试的就是把原来用 Numba 写的函数重写一遍,然而发现结果非常不好。Julia 版本的函数执行速度相当于纯 Python 的速度,与 Numba 版本相差三个数量级,占用的内存也异常地大。后来发现,最主要的原因是三层嵌套循环中,循环长度我按 Python 的习惯定义为变量,而在 Julia 中不变的全局量最好声明为常量。仅仅这个修改,让速度提升了两个数量级,但还不及 numba 的速度。进一步的测试还可以通过一些细小的地方来进一步提升速度,如这篇文章做的那样,最终高度优化之后速度也许可以达到接近 Fortran。但是,如果要这样做,为什么不干脆用 Fortran 呢?相比之下,numba 的可用性就要高太多了。不过毕竟它现在的稳定版本还是0.3.10,还需要再给它一点时间发展成熟。
-
作为一个新兴、小众的语言,相关的工具链还太弱了。没有合格的 IDE,Juno 在我看来现在连半成品都还算不上。包管理似乎是用的 Git,有时会出一些奇怪的问题,这时候用
Pkg
倒还不如手动去管理。调试程序也比较痛苦,一方面是很多错误信息跟没给差不多,像我这种不熟悉的人基本只能用print
一半一半地查,另一方面是相关的调试工具也还不够好用。 -
文档、相关信息还太少。已经有不少人开始使用 Julia,但网上公开的信息中,官方的文档还比较简陋,其他用户贴出的博客也很少。这导致在遇到问题的时候,很难快速地难过 Google 直接得到问题的答案,而往往需要在社区中等待圈内人士的解答。
另外一个对 Julia 印象不太好的是,官网给出的 benchmark 没有多少参考价值,至少其结果中 Python 和 Matlab 都很有问题,多半是单纯地逐行翻译出来的程序。这就跟我把 numba 的程序直接翻译成 Julia,然后得出结论它很慢一样,是不公平的比较。
不管怎么样,Julia 目前看来还是值得持续关注的,但是目前,我还不会考虑把它作为主要的计算语言。
posted on 2018-08-11 22:11 Angry_Panda 阅读(6927) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探