课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的编程语言被研发和使用,今天我们就一起来了解一下Julia编程语言的起源和特点。希望通过对本文的阅读,大家对于学习新的编程语言有一个好的方向和学习方法。
1、为什么要有Julia
先,我们要知道的是,Julia是一门计算机编程语言。也就是说,我们可以使用符合Julia语言规范的代码来编写程序。这些程序可以用于纯粹的数学和科学计算、存取本地文件、通过网络收发数据,等等。虽然Julia针对各种科学计算任务做了特别的设计和优化,但它也适用于通用目的的编程。
科学计算往往对代码的表现力和性能都有着较高的要求。然而,一些善于科学计算的编程语言(如Python和R)却都在这两个方面有所欠缺。不过,我相信它们的流行必有其原因。而且,我也很喜欢这些编程语言。它们是我的编程工具箱中必不可少的一部分,尤其是Python。
现代语言设计和编译器技术基本上能让我们省去性能调试的工作量,并且可以提供一个单一的环境让我们打造程序原型和有效部署高性能的应用。Julia编程语言就是在此基础之上诞生的。Julia是一门灵活的动态编程语言,但其性能堪比传统的静态编程语言。
2、主要特性
Julia拥有可选的类型标注(typeannotation)、多重分派(multipledispatch)机制,以及优良的性能。它还借由LLVM实现了类型推断和即时(JIT)编译。Julia是多范式的,融入了命令式、函数式和面向对象编程的特性。Julia为高级数值计算提供了足够的易用性和表现力。当然,Julia也适用于通用编程。为此,它从那些流行的动态编程语言(包括Lisp、Perl、Python、Lua和Ruby)中借鉴了很多。
Julia与典型的动态编程语言之间大的区别在于:
Julia的Base包和标准库都是由Julia语言编写的。这包括像整数运算那样的基本操作。也就是说,Julia实现了一定程度的自举。
Julia拥有丰富的类型构造和对象描述方式,并且代码中的类型标注是可选的。
Julia拥有多重分派机制。它可以根据参数类型的不同去调用衍生自同一个函数定义的不同方法。并且,它还可以针对不同的参数类型自动生成有效的专用代码。
Julia的性能优良,并已接近那些静态编译的编程语言(如C语言)。
虽然那些动态编程语言从表面上看是“无类型的”,但是它们在内部却是“有类型的”。这些内部的类型一般都是在其读取代码后附加上去的。不过,由于这些语言的代码缺少类型标注,所以它们并不能向编译器明确地指示某个值的类型,甚至都不能显式地提及类型。另一方面,静态编程语言虽然可以(且必须)为编译器指示值的类型,但这些类型往往只在编译时存在,并不能在运行时操纵或表示。而在Julia中,类型本身就是运行时的对象。并且,这些类型也可以被用来向编译器传达信息。
3、更多的特性
Julia的目标是成为一门易用、强大和高效的编程语言。除了上述的优点之外,Julia相对于其他类似系统的优势还包括:
可供免费使用,并且开源(遵从MIT协议)
用户自定义的类型与内置的类型一样快速和紧凑
无需担心向量化代码的性能,被拆解后的代码速度会很快
已为并行计算和分布式计算做了优化设计
拥有轻量级的“绿色”线程(也就是协程)
拥有可选择使用但功能强大的类型系统
拥有针对于数字和其他类型的转换和提升方法,并且是优雅和可扩展的
有效支持Unicode,包括但不限于UTF-8
可以直接调用C程序中的函数,无需额外封装或者特殊的API
可以管理其他进程,强大如Shell
拥有类似于Lisp的宏,以及其他的元编程工具
顺便说一句,由于Julia的编译器不同于Python和R中的解释器,所以你在起初也许并不能体会到Julia的性能优势。如果你发现一些程序运行起来比较慢,那么我强烈建议你去阅读官方文档中的性能秘诀。一旦你理解了Julia是怎样工作的,那么写出性能堪比C程序的代码就比较容易了。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。