Julia 一种用于技术计算的高级、高性能动态语言

Julia 一种用于技术计算的高级、高性能动态语言

2022-10-31 0 1,047
资源编号 47234 最近更新 2022-10-31
¥ 0人民币 升级VIP
立即下载 注意事项
下载不了?请联系网站客服提交链接错误!
增值服务: 安装指导 环境配置 二次开发 模板修改 源码安装

本期推荐的Julia 是一种用于技术计算的高级、高性能动态语言。

Julia 一种用于技术计算的高级、高性能动态语言

Julia特征

  • 快速地
  • Julia 从一开始就是为高性能而设计的。Julia 程序通过 LLVM编译为适用于多个平台的高效本机代码。
  • 动态的
  • Julia 是动态类型的,感觉像是一种脚本语言,并且对交互使用有很好的支持。
  • 可重现
  • 可重现的环境使得每次都可以使用预构建的二进制文件跨平台重新创建相同的 Julia 环境。
  • 可组合的
  • Julia 使用多重分派作为范例,使得表达许多面向对象和函数式编程模式变得容易。关于多次调度的不合理有效性的演讲解释了为什么它如此有效。
  • 一般的
  • Julia 提供异步 I/O、元编程、调试、日志记录、分析、包管理器等。可以在 Julia中构建整个应用程序和微服务。
  • 开源
  • Julia 是一个拥有超过 1,000 名贡献者的开源项目。它是在MIT 许可下提供的。源代码可在 GitHub 上获得。

Julia生态系统

  • 数据可视化和绘图
  • 数据可视化有着复杂的历史。绘图软件在功能和简单性、速度和美观以及静态和动态界面之间进行权衡。
  • 构建、部署或嵌入您的代码
  • Julia 使构建完整的应用程序成为可能。使用Dash.jl编写 Web UI或使用QML.jl和GTK.jl 编写本机 UI 。从各种数据库中提取数据。
  • 与您的数据交互
  • Julia 数据生态系统提供DataFrames.jl来处理数据集,并执行常见的数据操作。CSV.jl是一个快速的多线程包,用于读取 CSV 文件,并且与Arrow.jl正在与 Arrow 生态系统集成。
  • 可扩展的机器学习
  • MLJ.jl包为常见的机器学习算法提供了统一的接口,包括广义线性模型、决策树和聚类。Flux.jl和Knet.jl是强大的深度学习包。
  • 丰富的科学计算生态系统
  • Julia 的设计初衷就是非常擅长数值和科学计算。
  • 并行和异构计算
  • Julia 专为并行性而设计,并为各个级别的并行计算提供内置原语:指令级并行性、多线程、GPU 计算和分布式计算。

Julia不同之处

  • 核心语言强加的很少;Julia Base 和标准库是用 Julia 本身编写的,包括整数运算等原始操作。
  • 用于构造和描述对象的丰富类型语言,也可以选择用于进行类型声明。
  • 通过多次分派跨多种参数类型组合定义函数行为的能力。
  • 为不同的参数类型自动生成高效的专用代码。
  • 良好的性能,接近 C 等静态编译语言的性能。

Julia入门

Julia 的安装很简单,无论是使用预编译的二进制文件还是从源代码编译。

学习和试验 Julia 的最简单方法是通过双击 Julia 可执行文件或julia从命令行运行来启动交互式会话(也称为 read-eval-print 循环或“REPL”):

$ julia

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.7.3 (2022-05-06)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |


julia> 1 + 2
3

julia> ans
3

要退出交互式会话,请键入CTRL-D(同时按 Control/^键和d键),或键入exit()。在交互模式下运行时,julia显示横幅并提示用户输入。一旦用户输入了一个完整的表达式,例如1 + 2,并点击回车,交互式会话就会计算表达式并显示它的值。如果将表达式输入到带有结尾分号的交互式会话中,则不会显示其值。ans无论是否显示,该变量都绑定到最后一个评估表达式的值。该ans变量仅在交互式会话中绑定,而不是在 Julia 代码以其他方式运行时绑定。

要计算源文件file.jl中编写的表达式,请编写include(“file.jl”).

要以非交互方式运行文件中的代码,您可以将其作为julia命令的第一个参数:

$ julia script.jl arg1 arg2...

正如示例所暗示的,以下命令行参数julia被解释为程序的命令行参数script.jl,在全局常量中传递ARGS。脚本本身的名称作为 global 传入PROGRAM_FILE。请注意,当使用命令行上ARGS的选项给出 Julia 表达式时也会设置(请参阅下面的帮助输出),但将为空。例如,要打印提供给脚本的参数,您可以这样做:-ejuliaPROGRAM_FILE

$ julia -e 'println(PROGRAM_FILE); for x in ARGS; println(x); end' foo bar

foo
bar

或者您可以将该代码放入脚本并运行它:

$ echo 'println(PROGRAM_FILE); for x in ARGS; println(x); end' > script.jl
$ julia script.jl foo bar
script.jl
foo
bar

分隔符可用于将–用于脚本文件的命令行参数与用于 Julia 的参数分开:

$ julia --color=yes -O -- script.jl arg1 arg2..

Julia要点

Julia Base 包含一系列适用于执行科学和数值计算的函数和宏,但也与许多通用编程语言一样广泛。越来越多的可用软件包集合提供了附加功能。功能按以下主题分组。

一些一般注意事项:

  • 要使用模块函数,使用import Module导入模块,并Module.fn(x)使用函数。
  • 或者,using Module将所有导出Module的函数导入当前命名空间。
  • 按照惯例,以感叹号 ( !) 结尾的函数名称会修改它们的参数。一些函数同时具有修改(例如,sort!)和非修改(sort)版本。

Julia 运行时的初始化

main()

执行从main()incli/loader_exe.c开始,调用jl_load_repl()in cli/loader_lib.cwhich 加载一些库,最终调用repl_entrypoint()insrc/jlapi.c。

repl_entrypoint()调用libsupport_init()以设置 C 库语言环境并初始化“ios”库(请参阅ios_init_stdstreams()和Legacy ios.clibrary)。

Nextjl_parse_opts()被调用来处理命令行选项。请注意,jl_parse_opts()仅处理影响代码生成或早期初始化的选项。其他选项稍后由process_options()inbase/client.jl处理。

jl_parse_opts()在全局jl_options结构中存储命令行选项。

julia_init()

julia_init()intask.c被调用main()并调用_julia_init()ininit.c。

_julia_init()从再次调用开始libsupport_init()(第二次它什么也不做)。

restore_signals()被调用以将信号处理程序掩码归零。

jl_resolve_sysimg_location()搜索基本系统映像的配置路径。请参阅构建 Julia 系统映像。

jl_gc_init()为弱引用、保留值和终结设置分配池和列表。

jl_init_frontend()加载并初始化包含扫描仪/解析器的预编译 femtolisp 图像。

jl_init_types()为中定义的内置类型创建jl_datatype_t类型描述对象。例如julia.h

序列化

Serialization.serialize—功能

serialize(stream::IO, value)

以不透明格式将任意值写入流,以便deserialize. 回读值将尽可能与原始值相同。一般来说,如果读写是由不同版本的 Julia 完成的,或者是具有不同系统映像的 Julia 实例,则此过程将不起作用。Ptr值被序列化为全零位模式 ( NULL)。

首先将一个 8 字节的标识标头写入流。为避免编写标头,请构造 aSerializer并将其用作第一个参数serialize。

—END—

开源协议:MIT license

资源下载此资源为免费资源立即下载

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 免费源码 Julia 一种用于技术计算的高级、高性能动态语言 https://www.7claw.com/47234.html

分享免费的开源源码

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、七爪会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、七爪无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在七爪上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于七爪介入快速处理。
查看详情
  • 1、七爪作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益; 2、非平台线上交易的项目,出现任何后果均与互站无关;无论卖家以何理由要求线下交易的,请联系管理举报。
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务