Julia语言的优缺点

欢迎关注Julia语言微信公众账号 julia_language

原文链接:http://suo.im/4DhrJF

没有银弹(No Silver Bullet – Essence and Accident in Software Engineering)
IBM360系统之父弗雷德里克·布鲁克斯(Frederick Brooks)发表过一篇关于软件工程的经典论文,文中指出
没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。
There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.

任何编程语言都有其优缺点,而且往往其优点会成为其自身的短板。

先看看其他语言的优缺点:

* Python 简单,易上手,胶水语言,灵活,生态丰富;
* MATLAB 有大量历史积累,易上手,对矩阵计算支持好;
* Fortran 运算速度快,以前的大量科研、工程中的科学计算代码均用Fortran编写;
* C 接近底层,硬件支持好;
* C++ 有大量工程实践,抽象,工具丰富。



* Python 慢,作为胶水需要大量代码进行封装;
* MATLAB 贵,不够工程化;
* Fortran 老,遗留问题很多,生态不好,无法进行包管理;
* C 缺乏足够的抽象能力;
* C++ 开发效率低(太丰富了),为了兼容会有很多妥协。

Julia的优点:

* 在Python与C/C++/Fortran中找到一个平衡点,在保证Python开发效率的前提下,尽可能提高性能;
* 能使用所有Python和大部分R的库;
* 可读性好,更接近数学表达式;
* 内建包管理器;
* 继承自Lisp的宏;
* 未并行计算和分布式系统设计;
* 协程,“绿色的线程”;
* 从语言层面支持GPU编程。

Julia的缺点(这只是部分缺点,每种语言都有坑,没遇到是你学的还不够):

* 基于JIT( Just-in-time,即时编译器),启动有预热时间,不适合小规模、只运行一次的任务(例如shell脚本);
* 新语言的生态还不够强,不适合调库党(即便能使用所有Python和大部分R的库);
* CLI(command-line interface,命令行界面)工具缺乏,不适合在终端(Terminal)开发,需要借助能够热重启(reload)和IDE开发。

适用于科学计算:

* 机器学习(内建的GPU编程,无缝调用Python,更快的native代码)
* 数据处理(支持HDF5和DataFrame,CSV等常用数据格式,自带分布式特性)
* 仿真模拟(自带多维数组和各类稀疏矩阵)
* 数值分析(高性能的代码和方便的并行计算)
Julia语言的优缺点_第1张图片
qrcode_for_gh_620155d44a63_258.jpg

你可能感兴趣的:(Julia语言的优缺点)