MIT 开发的 Julia 语言是全球热度上升最快的编程语言之一, 下载量超过 200 万次, 下载者包括谷歌, Facebook,FAA 和美国能源部等各个部门的开发者. 近日, MIT CSAIL 实验室正式发布了 Julia 1.0, 该语言期望结合 C 的速度, Matlab 的数学表征, Python 的通用编程与 Shell 的胶水命令行, 并构建开源, 自由与便捷的编程语言.
Julia 语言的官网: https://julialang.org/
Julia 语言项目地址: https://github.com/JuliaLang
在过去一年中, 研究者利用 Julia 在一台超级计算机上分析天文图像, 速度提升了 1000 倍, 在 15 分钟内将接近 2 亿个天体进行分类. 从技术上来看, 这种语言还会长期发展下去. 然而, 现在是一个里程碑的时刻: 在本周于伦敦举办的 Julia 语言年会上, Julia 1.0 正式发布! 一起发布的还有 JuliaCon.
Julia 的开发者之一, 就职于 MIT 计算机科学与人工智能实验室 (CSAIL) 的教授 Alan Edelman 表示:Julia 1.0 的发布证明, 该语言已经做好准备, 将 Python 和 R 的高效性和易用性与 C++ 的闪电速度结合在一起, 改变技术世界.
从实际应用来说, Julia 已经用于自动驾驶汽车, 机器人和 3D 打印机, 此外还广泛应用于精准医疗, 增强现实, 基因组学及风险管理. 从 Julia 的生态系统来说, 目前它主要的特征或应用领域为数据可视化, 一般性的 UI 与网站, 数据科学, 机器学习, 科学计算与平行计算等.
Julia 目前下载量已经达到了 200 万次, 且 Julia 社区开发了超过 1900 多个扩展包. 这些扩展包包含各种各样的数学库, 数学运算工具和用于通用计算的库. 除此之外, Julia 语言还可以轻松使用 Python,R,C/C++ 和 Java 中的库, 这极大地扩展了 Julia 语言的使用范围.
Julia 1.0
备受期待的 Julia1.0 累积了开发者近十年的努力. JuliaCon2018 举行了发布会, 该社区正式将该版本设置为 1.0.0..
Julia 开发者对该语言提出了很多需求:
我们想要一种十分自由的开源语言, 同时兼具 C 语言的速度和 Ruby 语言的灵活度. 我们想要一种同像性语言, 具有像 Lisp 一样真正的宏, 也有像 Maltlab 一样浅显易懂的数学符号. 它是像 Python 一样有用的通用编程语言, 像 R 语言一样便于统计的语言, 像 Perl 一样自然的字符串处理语言, 像 Matlab 一样强大的线性代数语言, 也是像 shell 一样的胶水语言. 它简单易学, 却能让严苛的黑客们为之倾心. 我们希望它兼具交互性和可编译性.
围绕这一语言, 一个欣欣向荣的社区已经蓬勃发展起来, 为了同一目标, 世界各地的人们不断地重塑并改进着 Julia. 超过 700 人对 Julia 做出了实质性贡献, 更有不计其数的人制造了数千个惊人的 Julia 开源包. 总之, 我们构建了一种这样的语言:
快速: Julia 为高性能而生. Julia 程序通过 LLVM 为多个平台编译高效的本地代码.
通用: 它使用多分派作为范例, 使得表达许多面向对象和函数式的编程模式变得容易. 标准库提供异步 I/O, 进程控制, 日志记录, 性能分析, 包管理器等.
动态: Julia 是动态型语言, 与脚本语言类似, 并且支持交互式使用.
专业: 它擅长数值计算, 其语法适用于数学, 支持多种数值数据类型, 并具有良好并行性. Julia 的多分派天生适合定义数字和类数组的数据类型.
多样: Julia 拥有丰富的描述性数据类型, 类型声明使程序条理清晰且稳定.
可组合: Julia 的包可以很好地组合在一起. 单位数量的矩阵, 或者货币和颜色的数据列表, 都可以组合 -- 而且性能很好.
现在 Julia 1.0 版本已经可以下载了. 如果你从 Julia 0.6 或更早的版本升级代码, 我们建议你首先使用过渡版本 0.7, 它包含了弃用警告, 可以帮助引导升级过程. 如果你的代码没有警告, 那么你就可以直接变更到 1.0 版本而不会产生任何功能性的改变. 已注册软件包正利用 0.7 这个过渡版本, 并发布了 1.0 的兼容更新.
当然, Julia 1.0 中最重要的一个新特征是对语言 API 稳定性的承诺: 为 Julia 1.0 编写的代码可以继续在 Julia 1.1,1.2 等版本上使用. 该语言是完全成熟的, 核心语言开发者和社区都可以基于这个坚实的基础构建新的包, 工具和特征.
来源: https://juejin.im/post/5b6d69b06fb9a04fd16043cf