Julia语言程序基础
Julia-lang
新兴的Julia语言,Julia 一开始就是为高性能而设计的。 Julia 程序通过 LLVM 编译成高效的多平台机器码。
Julia中文社区: https://cn.julialang.org/
Julia的诞生: 一群拥有各种语言丰富编程经验的Matlab高级用户,对现有的科学计算编程工具感到不满——这些软件对自己专长的领域表现得非常棒,但在其它领域却非常糟糕。他们想要的是一个开源的软件,它要像C语言一般快速而又拥有如同Ruby的动态性;要具有Lisp般真正的同像性而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;它应该是交互式的,同时又是编译型的JIT(Just-In-Time)。
julia与传统动态语言最重要的区别是:
- 核心语言很小:标准库是使用Julia下的,包括整数运算这样的基础运算
- 丰富的基础类型:既可用于定义和描述对象,也可用于做可选的数据标注
- 通过多重派发,可根据类型的不同,来调用同名函数的不同实现
- 为了不同的参数类型,自动生成高效、专用的代码
- 接近C语言的性能
Julia 变量
Julia语言中,变量是与某个值关联的名字。你可以用它来保存一个值
x = 10
x + 1
x = "hello world"
Julia提供了非常灵活的变量命名的策略。变量名是大小写敏感的,且不包含语义,意思就是说,Julia会根据变量的名字区别对待
julia> x = 1.0 1.0
julia> y = -3 -3
julia> Z = "My string" "My string"
julia> customary_phrase = "Hello world!" "Hello world!"
julia> UniversalDeclarationOfHumanRightsStart = " 人人生而自由,在尊严和权利上一律平等。"
- 变量的命名
变量名字必须以英文字母开头。
命名规范:变量名字采用小写
用下划线分割命名中的单词,不鼓励使用
Type Module类型的名字使用大写字符开头,并且大写字母而不是用下划线分割单词
函数function 和 宏macro的名字使用小写,不使用下划线
会对输入参数进行更改的函数要使用叹号!结尾
- 数值转换
Julia支持三种数值转换
- T(x) 和convert(T, x) 会把x转换成T类型
- 如果T是浮点类型,转换的结果就是最近的可表示值,可能会是正无穷大。
- 如果T为整数类型,当x不能由 T 类型表示时,会抛出异常InexactError
字符
char类型的值代表单个字符:他只是带有特殊文本表示法和适当算术行为的32位原始类型,不能转换为代表Unicode代码的数值,
- 字符拼接
text = string("Hello", "World")
println(text)
>>> HelloWorld
# 在Julia中字符串拼接的+号变成了*号
println("test" * "123")
- 计算长度
# 计算字符串的长度
println(length.(text))
>>> 10
- 引用变量进行字符拼接
# 引用变量
println("$text" * "123")
>>> HelloWorld123
- 三引号字符串字面量
str = """
又来到某个港口
我不是一定要你回来
"""
println("xix :$str")
- 常见的操作
# findfirst 获取字符串中是否有相应的字符 如果有返回第一个匹配到的字符下标
flag = findfirst(isequal('0'), "OOOOOOOOOO0OOOOOOO0oo")
println(flag)
# findfirst 获取字符串中是否有相应的字符 如果有返回最后一个匹配到的字符下标
flag = findlast(isequal('0'), "OOOOOOOOOO0OOOOOOO0oo")
println(flag)
# findnext 字符串偏移 之后进行匹配 偏移到从第15个开始
flag = findnext(isequal('0'), "OOOOOOOOOO0OOOOOOO0oo", 15)
println(flag)
# 判断字符是否存在在字符串中 返回bool值
flag = occursin("123", "1233123133")
println(flag)
# 切片拆分 以, 间隔
join(["apples", "bananas", "pineapples"], ", ", " and ") "apples, bananas and pineapples"
函数
在Julia中,函数是将一个参数值元祖映射到返回值的对象。Julia的函数不是说纯粹的数学函数,在某种意义上,函数可以改变并受程序的全局状态的影响。在Julia中定义函数的基本语法是:
- 函数基本语法
function f(x, y)
return x + y
end
println(f(1,2))
# 函数还可以进行缩写 简洁语法
foo(x, y) = x * y
println(foo(2,3))
- 函数指定返回类型
function bar(x, y)::Int64
return x * y
end
println(
bar(3, 5))
- 元祖
Julia有一个和函数参数与返回值密切相关的内置数据结构叫元祖。一个元祖是一个固定的长度的容器,可以容纳任何值。但是不可以被修改
yuanzu = (1,2,2,3,3)
println(typeof(yuanzu))
>>> NTuple{5, Int64}
- 具名元祖
元祖的元素可以有名字。
x = (a=2, b=2^2)
println(x.a)
# 或者 x[1]
>>> 2
Julia与Python的区别
- 切片 Julia 索引从1开始 Python从0开始
- Python切片左开右闭 julia 左右全闭
- Julia不支持负数索引
- Julia的条件语句 使用end结束 Python是以缩进结束
Julia的变量作用域
作用于结构
| 结构 | 作用于类型 | Allowed within |
|---|---|---|
| module , baremodule | 全局 | 全局 |
| struct 结构体 | local(soft) | 全局 |
| for, while ,try | local(soft) | 全局或局部 |
| macro | local(hard) | 全局 |
| let ,functions, comprehensions, generators | local(hard) | 全局或局部 |
持续更新ing...
Julia语言程序基础的更多相关文章
- 李洪强iOS开发之【零基础学习iOS开发】【02-C语言】02-第一个C语言程序
前言 前面已经唠叨了这么多理论知识,从这讲开始,就要通过接触代码来学习C语言的语法.学习任何一门语言,首先要掌握的肯定是语法.学习C语言语法的目的:就是能够利用C语言编写程序,然后运行程序跟硬件(计算 ...
- 【值得收藏】C语言入门基础知识大全!从C语言程序结构到删库跑路!
01 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成.格式.以及良好的书写风格,使小伙伴对c语言有个初步认识. 例1:计算两个整数之和的c程序: #include main() { ...
- Julia语言介绍
官网:https://julialang.org/ 中文社区:https://cn.julialang.org/ Julia 是一个面向科学计算的高性能动态高级程序设计语言. 首先定位是通用编程语言, ...
- iOS开发系列--C语言之基础知识
概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...
- 10个经典的C语言面试基础算法及代码
10个经典的C语言面试基础算法及代码作者:码农网 – 小峰 原文地址:http://www.codeceo.com/article/10-c-interview-algorithm.html 算法是一 ...
- Linux基础与Linux下C语言编程基础
Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...
- LINUX下C语言编程基础
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用 ...
- Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识
JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 ...
- C语言程序设计基础
C语言程序设计基础 目录 C语言 C语言基础 C语言编程注意 C语言 C语言基础 C语言编程注意 0<9<9和0<9&&9<9是不同的 数组的声明和定义 con ...
随机推荐
- 调整是为了更好的上涨,牛市下的SPC空投来了!
2021年刚过没几天,比特币就开启了牛市的旅程,BTC涨到4万美元,ETH涨到1300多美元,BGV也涨到了621.05美元,牛市已然来袭. 虽然从近两日,比特币带领着主流币进行了一波调整,但是只涨不 ...
- VS Code使用Git可视化管理源代码详细教程
前言: 随着VS Code的功能和插件的不断强大和完善,它已经成为了我们日常开发中一个必不可缺的伙伴了.在之前我曾经写过一篇SourceTree使用教程详解(一个git可视化管理神器,想要了解的话可以 ...
- Java并发包源码学习系列:线程池ScheduledThreadPoolExecutor源码解析
目录 ScheduledThreadPoolExecutor概述 类图结构 ScheduledExecutorService ScheduledFutureTask FutureTask schedu ...
- 文件描述符(File Descriptor)简介
本文转载自文件描述符(File Descriptor)简介 导语 维基百科:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开一个 ...
- node_puppeteer无界爬虫
环境:node----v14.5.0 vscode----2019 依赖库 (需要自行设置好目录结构,否则会报目录错误) const puppeteer = require("puppete ...
- Vue框架- 指令操作
目录 一.Vue指令操作 1. 表单指令 2. 条件指令 3. 循环指令 4. 斗篷指令 5. 实例成员:delimiter分隔符(了解) 6. filter过滤器 7. computed计算属性 8 ...
- 翻译:《实用的Python编程》03_01_Script
目录 | 上一节 (2.7 对象模型) | 下一节 (3.2 深入函数) 3.1 脚本 在该部分,我们将深入研究编写 Python 脚本的惯例. 什么是脚本? 脚本就是运行和终止一系列语句的程序. # ...
- 网络地址转换NAT的两种模式(概念浅析)& IP溯源
由于全球IPv4地址越来越少.越来越贵,因此大到一个组织,小到一个家庭一个人都很难获得公网IP地址,所以只能使用内网地址,从而和别人共享一个公网IP地址.在这种情况下,NAT技术诞生. 翻译 NAT( ...
- entitybuilder--一个简单的业务通用框架
关于业务通用框架的思考 业务系统是千差万别的,例如,保存.更新和删除订单,或者保存订单和保存客户,走的根本不是一个流程.但是,它们还是有共同点,它们的流程大致可以分成下面的几个部分: 拿到增删改等操作 ...
- 【Arduino学习笔记06】上拉电阻和下拉电阻
为什么要用上拉电阻和下拉电阻?--避免输入引脚处于"悬空"状态 下图是一个没有使用上拉电阻/下拉电阻的电路图: 在按键没有按下时,要读取的输入引脚没有连接到任何东西,这种状态就称为 ...