朱莉娅语言和哲学的精神是什么?

mer*_*rch 7 julia

我最近开始在朱莉娅编程用于研究目的.通过它我开始喜欢语法,我在这里积极体验社区,现在我正在考虑从其他编程语言移植一些代码.

使用高度计算的昂贵的预测模型,将它们全部用强大的现代语言作为Julia将是很好的.

我想创建一个项目,我想知道我应该如何设计它.从性能和语言的角度来看,我都很关心(即:创建模块会更好 - 子模块 - 函数或其他东西会更受欢迎吗?使用字典或自定义类型会更好吗?).

我在我的领域中查看了不同的GitHub项目,但我还没有真正找到一个共同的标准.因此,我想知道:朱莉娅语言和哲学的精神是什么?


编辑:

有人指出,这个问题可能过于笼统.因此,我想集中讨论如何更好地构建模块(即主要功能和子程序与模块和子模块的单独模块等).我相信这对我来说已经足够了解朱莉娅语言和哲学的精神.当然,非常欢迎其他示例和参考.

Chr*_*kas 11

你会发现最多的是有一个"官方" 风格指南.其余的"朱利安"风格定义不明确,但有一些方法可以启发式地定义它.

首先,它意味着围绕多个调度和类型系统设计软件.通常遵循朱利安设计理念,软件将不被定义一堆功能,如test_pumpkintest_pineapple,而是将使用调度上test的类型PumpkinPineapple.这允许清晰/可理解的代码.它会将任务分解为小型稳定功能,从而实现良好的性能.这可能也将非常笼统写,允许用户使用的子类型的项目AbstractArray或者Number,利用调度的权力,使他们的软件对他们从来没有听说过的数字工作.(在这方面,当您需要性能时,建议使用自定义类型而不是字典.但是,对于某个类型,您必须在开头知道所有字段,这意味着某些内容需要字典.)

遵循Julian设计理念的软件也可以实现DSL(域特定语言)以允许用户更简单的界面.不是要求用户遵守从C/Fortran派生的古老标准,或者编写大量重复项和输入,而是包可以提供宏以允许用户更具启发性地定义软件要解决的问题.

作为朱利安设计哲学一部分的其他项目引起了很多争论.是否适当的Julia代码被开发了?我会说不,并且循环融合广播.是一种编写MATLAB风格的"矢量化"代码的强大方法,并使其像执行循环一样执行.但是,我看到其他人更喜欢风格化的风格.

另请注意,Julia与Python之类的东西非常不同,在Julia中,你可以基本上"建立自己的标准做事方式".由于在包而不是Base中声明的函数/类型没有性能损失,如果需要,可以构建自己的Julia世界,使用宏来定义自己的"类函数"对象等.我的意思是,你可以重新创建Julia中的Java样式,如果你想要的话.