有几个要求
有兴趣可以看这个 The Design Impact of Multiple Dispatch,觉得长的话,也可以听我胡乱说说。
Julia 整体设计比较统一,挑不出来什么毛病。不给人添麻烦,Erlang 虽然很美好,但太特别了,比如变量非要大写。
语法很简洁,比如方法定义 f(x) = x + 1
,作者也比较有品位,比如 Julia 有 block。
Type System && The Expression Problem
语言要对不同的数据进行不同的操作。
比如 +
,加字符串和加数字不一样。面向对象是,都由对象自己决定。但对象的状态就变得模糊,且不好拓展。函数式交给方程,无法保证结构,有的时候甚至不接受这种抽象。
type 则不一样,状态清晰,抽象度更高。
Julia 很好扩展,比如 +
有了数字和字符串的加,那文件加怎么办?定义一个 +
方法,接受 file 这个 type 就可以。
type 有 union type、subtype、abstract type、general type。简介、并且包含了所有可能。
type + type Inference 让开发效率和运行效率都能得到解决。声明类型,写起来麻烦。没类型,运行慢。Julia 方法定义可以不声明类型(泛型),需要优化的部分,可以声明类型。