为什么我们要创造Julia
Julia是为现代计算需求而设计的新语言,语法与其它类似功能的语言接近,却拥有更多更多更多……
翻译自 http://julialang.org/blog/2012/02/why-we-created-julia/,原文作于2012年2月14日。
好吧,很像机器翻译的>_< 无奈!不过应该还是比CSDN的翻译http://sd.csdn.net/a/20120223/312315.html 要准确得多!译于2012年3月7日,转载请注明出处。by C6H5NO2
简单的说,因为我们很贪心。
我们是Matlab的重度用户。我们中间有Lisp高手,Python专家,Ruby专家,还有Perl高手。有些家伙从嘴上无毛的年纪就开始用Mathematica了,当然我们中间也有人现在也还是不长胡子的。我们比正常人画了更多的R图。C更加是我们最喜欢的大杀器。
我们热爱所有这些语言,他们实在是很好很强大。在我们从事的领域中——包括科学计算、机器学习、数据挖掘、大规模线性代数、分布式与并行计算这些——每种语言都对某些问题来说很完美,但对另一些就变得很糟糕。我们需要做出取舍。
我们很贪心:我们想要更多。
我们需要一种语言,它是开源的,有自由的许可。我们需要C语言的速度,又要有Ruby社区的活力。我们需要一种homoiconic风格的编程语言,像Lisp那样有真正的宏,又要有Matlab里那些熟悉的数学概念。我们需要的东西既能像Python那样可以作为通用编程语言使用的工具,又要能够像R那样适用于统计分析,能像Perl那样自然地处理字符串,能像Matlab那样给力地处理矩阵运算,还要能像shell一样能把各种程序粘合在一起。它必须让初学者觉得简单易学,同时又可以让高级用户们挥洒自如。它既要是交互式的,又能被编译执行。
(前面提到过的,它要有C那么快!)
我们在构思这些需求的时候,我们还发现它得有Hadoop这样强大的分布式能力——却不想要Hadoop里面那些冗繁的Java和XML,不想在几百台机器庞大的日志文件里去寻找那些bug。我们不想要那些令人费解的层次结构。我们想让简单的标量循环能在单个CPU的寄存器里编译出精致的机器代码。我们想要写一个A*B就能让上千台机器为我们完成一次规模庞大的矩阵乘法。
我们不需要的时候,就不用做类型申明。但我们需要多态函数(polymorphic functions)时,希望能通过泛型编程(generic programming )使得只写一次的算法能在无穷多的数据类型上套用。我们希望通过多重分派(multiple dispatch ),能够为一个函数所有可能的参数选出最有效的执行方法。这些参数可能有着不同的定义,来自不同的数据类型,却能提供相同的功能。在拥有这些能力得的同时,我们还希望这种语言简单、干净!
要求有点多,是不是?
尽管我们意识到了自己有多贪心,我们还是想把这些都统统拥入怀中。大概在两年半之前,我们开始创造这种能满足我们贪念的语言。它还没有完工——但是已经可以发布一个1.0版本了——我们创造的语言叫做Julia。她已经实现了我们那些乱七八糟需求的90%,而现在她需要来自更多人更乱七八糟的需求,来让她走得更远。如果你也是一位贪心不足,不可理喻,需索无度的码场二逼青年,希望你能来试试这个东东。
翻译自 http://julialang.org/blog/2012/02/why-we-created-julia/,原文作于2012年2月14日。
好吧,很像机器翻译的>_< 无奈!不过应该还是比CSDN的翻译http://sd.csdn.net/a/20120223/312315.html 要准确得多!译于2012年3月7日,转载请注明出处。by C6H5NO2
简单的说,因为我们很贪心。
我们是Matlab的重度用户。我们中间有Lisp高手,Python专家,Ruby专家,还有Perl高手。有些家伙从嘴上无毛的年纪就开始用Mathematica了,当然我们中间也有人现在也还是不长胡子的。我们比正常人画了更多的R图。C更加是我们最喜欢的大杀器。
我们热爱所有这些语言,他们实在是很好很强大。在我们从事的领域中——包括科学计算、机器学习、数据挖掘、大规模线性代数、分布式与并行计算这些——每种语言都对某些问题来说很完美,但对另一些就变得很糟糕。我们需要做出取舍。
我们很贪心:我们想要更多。
我们需要一种语言,它是开源的,有自由的许可。我们需要C语言的速度,又要有Ruby社区的活力。我们需要一种homoiconic风格的编程语言,像Lisp那样有真正的宏,又要有Matlab里那些熟悉的数学概念。我们需要的东西既能像Python那样可以作为通用编程语言使用的工具,又要能够像R那样适用于统计分析,能像Perl那样自然地处理字符串,能像Matlab那样给力地处理矩阵运算,还要能像shell一样能把各种程序粘合在一起。它必须让初学者觉得简单易学,同时又可以让高级用户们挥洒自如。它既要是交互式的,又能被编译执行。
(前面提到过的,它要有C那么快!)
我们在构思这些需求的时候,我们还发现它得有Hadoop这样强大的分布式能力——却不想要Hadoop里面那些冗繁的Java和XML,不想在几百台机器庞大的日志文件里去寻找那些bug。我们不想要那些令人费解的层次结构。我们想让简单的标量循环能在单个CPU的寄存器里编译出精致的机器代码。我们想要写一个A*B就能让上千台机器为我们完成一次规模庞大的矩阵乘法。
我们不需要的时候,就不用做类型申明。但我们需要多态函数(polymorphic functions)时,希望能通过泛型编程(generic programming )使得只写一次的算法能在无穷多的数据类型上套用。我们希望通过多重分派(multiple dispatch ),能够为一个函数所有可能的参数选出最有效的执行方法。这些参数可能有着不同的定义,来自不同的数据类型,却能提供相同的功能。在拥有这些能力得的同时,我们还希望这种语言简单、干净!
要求有点多,是不是?
尽管我们意识到了自己有多贪心,我们还是想把这些都统统拥入怀中。大概在两年半之前,我们开始创造这种能满足我们贪念的语言。它还没有完工——但是已经可以发布一个1.0版本了——我们创造的语言叫做Julia。她已经实现了我们那些乱七八糟需求的90%,而现在她需要来自更多人更乱七八糟的需求,来让她走得更远。如果你也是一位贪心不足,不可理喻,需索无度的码场二逼青年,希望你能来试试这个东东。
![]() |