2020年Julia开发者 【问卷调查】
备受期待的Julia语言的1.0版本积累了富有野心的程序员们的十年心血。 在 JuliaCon2018 发布会上,Julia 社区正式将该版本设置为1.0.0。
Julia项目起初是因为这些强烈的需求而公开发起的开源项目:
我们想要的是一个自由开源的语言,并且它同时拥有C的速度和Ruby的动态性;我们想要一个具有同像性(可以将语言的脚本本身当作数据进行处理)的语言, 它有着真正的和lisp一样的宏,但是却像Matlab一样有着显然的,类似于数学表达式的标记;我们想要一个既可以像Python一样作为通用编程语言的工具, 又可以像R那样适用于统计分析,能像Perl那样自然地处理字符串,能像Matlab那样给力地处理矩阵运算,它还要能像shell一样作为胶水将各种程序粘 合在一起;我们想要一个简单易学的语言,同时它还能让最苛刻的魔法师们(hackers)开心。我们希望它是交互式的,但我们也希望它能被编译。
一个充满活力和繁荣的社区就围绕这种语言成长起来,世界各地的人们都在为了这个目标而不断努力改进和塑造Julia。 超过700人为Julia做出了自己的贡献,更多人创造了成千上万开源的Julia包。总而言之,我们创造了这样一种语言:
现在可以通过下载Julia 1.0版本来尝试Julia。 如果你现在从Julia 0.6或者更早的版本开始升级代码,我们建议你先使用过渡性的0.7版本, 其中包括了弃用警告(deprecation warning)来指导你的升级过程。一旦你的代码无警告通过, 那么你可以在没有任何功能变化的情况下将代码更改为1.0版本。 已注册过的包可以利用这个来过渡并发布与1.0版本兼容的更新。
当然,在Julia 1.0版本中一个最重要的新特性是对语言API稳定性的承诺:你为Julia1.0编写的代码将可以继续在 Julia 1.1, 1.2中运行。这种语言是“足够成熟的”。基于这样的一个坚实的基础, 核心语言的开发者和社区都可以集中于第三方包,工具,和新特性的开发上。
但是Julia 1.0并不意味着稳定,它也带来一些新的,强大的并且创新的语言特性。其中一些新的特性是0.6开始就有的:
missing
变量来有效支持缺失值。而这样的集合类型的性能在过去的Julia版本里可能会很慢,但是现在编译器已经
可以使得Julia在缺失值的表示上达到类似 C 或者 C++ 的速度,而远比 C 或者 C++ 一般和灵活。String
类型可以安全的使用任意的数据类型。你的程序不会因为一个单独的无效Unicode字节而失效好几个小时或者好几天。
所有的字符串数据会保留,同时指出哪些字符是有效的哪些是无效的,这样允许你的应用安全并方便地运行在不可避免会出现缺陷的真实世界的数据中。row =
(name="Julia", version=v"1.0.0", releases=8)
并且通过 row.version
访问 version
的数据,而这和
row[2]
有着相似的性能,但是却更加方便。obj.property
的方式表示某种意义,而不是用来设置和获取合成类型(struct)的
成员。这对于将具有 class
的语言例如 Python
和 Java
翻译到Julia来说更加平滑。性质的访问器重载也将是的获取匹配数据的名
称的一列于可命名元组更加一致:你可以写 table.version
来获取表格中的 version
这一列就好像 row.version
会获取 version
这一行的这个元素一样。start
,next
,done
。现在只需定义一个变量
和两个变量的 iterate
函数即可。这将常常使得我们可以简单地通过定义了一个函数参数默认值的函数来实现迭代器。更加重要的是,这将使得
实现一个只有在尝试返回值失败之后才知道需要结束的迭代器成为可能。这种迭代器在 I/O,网络和生产者/消费者模型中普遍存在;而Julia现在
可以以更加直接和正确的方式表达这样的迭代器。我们仔细地审查了Julia的API,并且提高了它的一致性和可用性。很多费解的命名和低效的实现都被重新命名和重构,使得其能够 更优雅地发挥Julia的能力。这将使得使用集合类的方式更加一致和连贯。变量的顺序被确保在整个语言中遵循一个统一的标准,并且 将关键词变量(现在更快了)加入到了API中。
还有很多没有被列举的大大小小的提高。你可以通过 0.7 NEWS 文件查看 完整的更新。在我们2012年的 “为什么我们创造来Julia”博文里,我们写到:
它还没有完工——但是已经可以发布一个1.0版本了(其实等了6年才要发布)——我们创造的这个语言叫做Julia。
虽然对于1.0的发布我们放了大家好几次鸽子,但是这一次我们终于正式发布了。 我们真心为所有为这个真正为数值计算和通用编程设计的现代语言的各种形式的贡献的人感到自豪和高兴。