程式语言Julia历经6年开发,融合多语言特性终释出1.0
2018-08-10 17:53:43 | 来源:ithome | 投稿:阿呆 | 编辑:dations

原标题:程式语言Julia历经6年开发,融合多语言特性终释出1.0

Julia第一次释出时,就宣告了该程式语言宏大的目标,除了要有C一样的执行速度外,还要如同Python成为一个具一般可用性的语言,也想要如同Matlab支援线性代数演算法,字串处理能力要能与Perl匹敌等各式需求,而官方在...

Julia第一次释出时,就宣告了该程式语言宏大的目标,除了要有C一样的执行速度外,还要如同Python成为一个具一般可用性的语言,也想要如同Matlab支援线性代数演算法,字串处理能力要能与Perl匹敌等各式需求,而官方在Julia△1.0释出文章中,有自信的列出了Julia数个特点。

Julia一开始设计就以高效能运算为目标,Julia的程式可以用LLVM编译成多平台的高效能原生执行码。Julia也兼具一般性,能使用多重调度作为范式,让该语言容易表达多物件导向与函式程式设计模式,其标准函式库提供了非同步I/O、程序控制、日志纪录、概要分析以及套件管理器等。

作为Julia的目标之一,是能具备如同Ruby一样的动态特性,因此官方让Julia成为动态型别的语言,就像是脚本语言一样,在互动使用上有很好的支援。而在专业运算支援方面,官方也在Julia下足了功夫,因此Julia也适合用于数学的数值运算,支援多种数值资料型态,而其多重调度的特性,更加适合用于定义数字与阵列的资料型态。

Julia是具有丰富的描述性资料型态的语言,型态宣告可以让程式更加清楚与强健。而Julia套件间也可以进行良好的协同工作,无论是单位数量的矩阵,或是颜色和货币的资料表格栏位,都能高效能的运作。

官方提到,Julia并非半生不熟的程式语言,因此1.0最重要的更新,也就是API的稳定性。开发者使用Julia△1.0开发的程式,也能在1.1、1.2版本中运作,这也能帮助语言开发团队或是社交可以放心开发套件、工具与新功能。而跟着1.0发布的是全新的套件管理器,简化了安装套件以及管理相依性的工作,同时也支援个别专案的套件环境,能与他人分享工作应用程序状态,而且还能无缝支援私有套件与套件储存库,因此开发者可把用于开源套件生态系的工具,使用在安装与管理私有套件。

Julia△1.0为了可以良好支援统计与资料科学应用,引入了新的规范以表示缺失值,官方强调,能够表示和处理缺失的资料,是统计和资料科学应用的基本。Julia△1.0中,任何泛型集合型态都能通过让元素包含预定义的缺失值,来有效率的处理缺失值。过去Julia处理这种联合型态的集合效率极差,但在改进编译器后,这个问题获得改善。

另外,迭代协议也重新设计,开发者能更容易实现多种迭代,有别过去定义三个不同泛型函式的方法,现在只要定义一个迭代函式以及两个参数方法。而内建的字串型态现在已经可以安全的保存任意资料,程式不再会因为字串中放入了一个无效的Unicode杂散位元组而崩溃。

Julia的最佳化器(Optimizer)也是这次更新的一大亮点,现在最佳化器可以通过呼叫函数传播常量,进而做到更好的死码删除(Dead△Code△Elimination)和静态评估。而编译器也更善于避免在长效物件旁分配短效包装器(Wrapper),这让开发者可以在不损失效能的情况下,容易的使用高阶抽象。

Julia是一个非常精简的语言,许多功能组件被拆分成标准函式库套件,虽然这些套件随附在Julia中,但不属于语言基础的一部分,这些标准函式库将独立于Julia,进行本身的版本控制与升级。官方在发布Julia△1.0时,对API做了彻底的检视,过去模糊的命名以及低效能的程式编写模式,都被重新命名与重构,以维持语言的一致性与可用性。

想要从0.6或是更早版本的Julia升级成1.0的开发者,官方建议,可以先升级到0.7版本。由于0.7版本是一个过渡版本,会发出弃用警告,协助指引开发者升级程序,在程式码没有警告后,就可以无痛的升级至Julia△1.0版本。既存的套件也使用这个过渡方式,发布与1.0相容的更新。

tags:

上一篇  下一篇

相关:

IBM:恶意程式具备AI能力超狡猾,高度神隐几乎抓不到

图片来源: IBM IBM研究人员在美国黑帽骇客(Black△Hat)大会上展示DeepLocker的新式概念验证攻击程式,利用人工智能(AI)能力躲避侦测,现行安全软件几乎侦测不到。IBM△Research科学家Dhilung△Kirat和Jiyong△Ja

创举! 西维吉尼亚州将开放用手机程式来投票

示意图,与新闻事件无关。 美国西维吉尼亚州(West△Virginia)准备在今年11月的美国中期选举中开放州民通过行动程式来投票,以造福军人、军眷及海外居民,创下美国首例,然而,却有部份资安专家质疑行动投票的安全

台湾第一家Google边缘运算合作伙伴首度亮相,还抢先揭露Edge TPU更多特性

Google日前在Next云端大会上揭露云端战略新布局时,不只推出第一款超低功耗Edge△TPU边缘运算晶片,还公布了首波边缘运算合作厂商,来自台湾的凌华科技名列其中,更是台湾第一家。在近日一场工研院资通讯日活动上,我

Mozilla释出Firefox扩充程式Advance,可根据当前及历史浏览纪录推荐内容

安装Advance之后,使用者将在画面的左边侧边栏看到Read△Next及For△You,分别根据现在浏览内容及过去的历史浏览纪录推荐内容。 图片来源: Mozilla Mozilla本周于Test△Pilot专案中释出一项新的Firefox扩充程式功能

Rust 1.28释出,开发者现在可用全域分配器了!

距离上一个更新两个月后,Rust释出了1.28版本。Rust△1.27版本让开发者可以直接撰写低阶SIMD语法,而在1.28版本,官方释出了稳定版的全域分配器(Global△Allocators)以及NonZero数字型态,而Rust的套件管理器Cargo

站长推荐: