我最近开始在朱莉娅编程用于研究目的。通过它我开始喜欢语法,我在这里积极体验社区,现在我正在考虑从其他编程语言移植一些代码。
使用高度计算的昂贵的预测模型,将它们全部用强大的现代语言作为Julia将是很好的。
我想创建一个项目,我想知道我应该如何设计它。从性能和语言的角度来看,我都很关心(即:创建模块会更好 - 子模块 - 函数或其他东西会更受欢迎吗?使用字典或自定义类型会更好吗?)。
我已经在我的领域中查看了不同的GitHub项目,但我还没有真正找到一个共同的标准。因此我想知道:朱莉娅语言和哲学的精神是什么?
编辑:
有人指出,这个问题可能过于笼统。因此,我想集中讨论如何更好地构建模块(即主要功能和子程序与模块和子模块的单独模块等)。我相信这对我来说已经足够了解朱莉娅语言和哲学的精神。当然,我们非常欢迎其他的例子和参考资料。
答案 0 :(得分:11)
你发现的最多的是有一个"官员" style-guide。其余的朱利安"风格定义不明确,但有一些方法可以启发式地定义它。
首先,它意味着围绕多个调度和类型系统设计软件。遵循Julian设计理念的软件通常不会定义一组函数,如test_pumpkin
和test_pineapple
,而是使用test
上的类型Pumpkin
的调度}和Pineapple
。这允许清晰/可理解的代码。它会将任务分解为小型稳定功能,从而实现良好的性能。它也可能非常通用,允许用户使用AbstractArray
或Number
子类型的项目,并使用调度功能允许他们的软件处理他们所使用的数字从来没有听说过。 (在这方面,当您需要性能时,建议使用自定义类型而不是字典。但是,对于某种类型,您必须在开头知道所有字段,这意味着某些内容需要字典。)
遵循Julian设计理念的软件也可以实现DSL(特定于域的语言)以允许更简单的用户界面。而不是要求用户遵守从C / Fortran派生的古老标准,或者编写大量重复项和输入,包可以提供宏以允许用户更具启发性地定义软件要解决的问题。
作为朱利安设计哲学一部分的其他项目引起了很多争论。是否适当的Julia代码被开发了?我会说不,并且循环融合广播.
是一种强大的方式来编写MATLAB风格"矢量化"代码,让它像一个devectorized循环执行。但是,我看到其他人更喜欢风格化的风格。
另请注意,Julia与Python之类的东西截然不同,在Julia中,你可以基本上构建自己标准的做事方式"。由于在包而不是Base中声明的函数/类型没有性能损失,因此如果需要,可以构建自己的Julia世界,使用宏来定义自己的"类似函数"对象等我的意思是you can re-create Java styles in Julia if you wanted。