Julia焦虑?这有份Facebook软件工程师的测试差评

2018-08-10 14:24:00
刘大牛
转自文章
337

近日,MIT CSAIL 实验室正式发布了 Julia 1.0,不少人称,该语言结合了C语言的性能和Python 的易上手性,被称为最聪明的一群大脑创造出的现代编程语言。

Julia 官网:

https://julialang.org/

Julia Github地址:

https://github.com/JuliaLang

自诞生之日起,Julia语言就备受关注。但是,这门“未来的语言”真的值得所有人学习吗?

在Julia初诞生之初,一位来自Facebook的软件工程师Victor Zverovich对这门语言做了一个性能测评,他从性能、语言、安全性、Library、发展上详细叙述了Julia的特质,最终得出了“give up on Julia”的结论。

尽管这份“买家秀”距离今天时间略久,Julia经过一年多的演进,在本周发布时已有了很大的进步,但是一门语言自诞生之日,其基因毕竟已经携带了某种特性,因此这篇文章现在读起来仍然有一些不错的参考价值。

作者Victor Zverovich个人主页:

http://www.zverovich.net/

当然,作为一门正在被追捧的语言,Julia还是值得了解。以下两个视频可以帮你迅速了解并安装尝试一下这门语言。

第一个视频向python使用者详细介绍了Julia的性能、特征。演讲来自IBM论坛,演讲者有1.5年Julia使用经验,也是杜克大学技术 神经网络 实验室研究员,感兴趣的同学可以戳视频观看



在官方发布后,也有人制作了一个详细的Julia安装使用手把手教学视频



最后,Victor Zverovich的这份Julia差评买家秀,可能可以部分缓解你的编程语言焦虑。

文章链接:

http://www.zverovich.net/2016/05/13/giving-up-on-julia.html

首次了解Julia编程语言时,我对它非常热衷。Julia语言的吸引力从官网上的功能列表就可见一斑:

  • 多分派:提供跨多种参数 类型来组合定义函数的能力

  • 动态类型系统:文档,优化和分派的类型

  • 良好的性能,甚至能接近包括C语言在内的静态编译语言

  • 内置程序包管理器

  • 类似Lisp的宏和其他元编程工具

  • 可以通过使用PyCall包来调用Python函数

  • 不需要包装器或特殊API就能直接调用C函数:

  • 强大的类似shell的功能,用于管理其他进程

  • 专为并行和分布式计算 而设计

  • 协同程序:轻量级“绿色”线程

  • 用户自定义的类型与内置函数一样快速、紧凑

  • 为不同的参数 类型自动生成高效的专用代码

  • 针对数字和其他类型的优雅且可扩展的转换

  • 对Unicode的有效支持,包括但不限于UTF-8

  • MIT 开源许可(MIT license):免费+开源

然而,随着我对Julia语言的了解变得深入,亲自上手实验,我对它越来越不满意了。我将在这篇文章中解释为什么。

性能

当我看到Julia网站上报道的微基准测试时,我感受到了第一个次失望。粗浅浏览就能感受到其中的大问题

链接:

https://github.com/JuliaLang/julia/issues/4662

Julia比C或C++慢得多,这一点倒是没有什么可指责的,毕竟大多数语言都是。最令人失望的是其声称的表现与观察到的表现之间的显著差异。

例如,Julia中的一个简单的hello world程序运行速度比Python的版本慢约27x,比C语言慢约187x。这些性能是Linux上运行的结果,虽然我自己不使用Windows,但别人告诉我在那个环境下的差异更明显。

# test.jl println("Hello, World!")

# test.py print("Hello, World!")

#include <stdio.h> int main() {  printf("Hello, World! "); }

$ time julia test.jl Hello, World! real  0m0.371s user  0m0.240s sys  0m0.312s $ time python test.py Hello, World! real  0m0.014s user  0m0.004s sys  0m0.004s $ gcc -O3 test.c $ time ./a.out Hello, World! real  0m0.002s user  0m0.000s sys  0m0.000s

如果忽略启动时间,Julia在简单的数组运算、矩阵运算以及循环上性能尚佳,但我们已经知道怎么用Python或者其他语言来高效执行这些操作了。

发表评论
评论通过审核后显示。
文章分类
联系我们
联系人: 透明七彩巨人
Email: weok168@gmail.com