和 Julia 的一夜情结束了 0.0 ,渣男 dna049 拥抱 SageMath 咯
学完 Python 之后,觉得 Python 更像一个工具箱,啥都能干,但是我真的需要一个(轻量级)科学计算的工具,而不是像 Matlab 一样的付费巨无霸(我不想再用盗版软件了,学校正版 Matlab 2020 20G 吃不消!)而 C/C++ 在科学计算中因为原生精度问题,又没有特别权威的高精度包,所以也不太行。我甚至有自己学着去开发一种新型语言来打破当前尴尬的局面,直到我知道了 Julia ,已分手,理由:
有 C 快吗?没有!有 Python 方便吗?没有!安装个包就跟求它借 100w 一样(国内源安装不了)
免费是取代 MATLAB,Mathematics 的理由吗?不是,收费是一件好事!!!
学术界的高性能计算的人员,它们学校至少买了 MATLAB 或者 Mathematics 好吧!
非上述人员,真的需要高性能计算吗???再说了真的性能高吗?向量化计算竟然还没有循环快,我吐了好吧
我会的语言
我已经会写,C/C++,Matlab,Python 了,接触过 Java, Swift, Lua(现在全忘了)。又要新学一门语言其实我是抵触的,并且 Julia 的语法简直就像 没有分号的Matlab
,我是很不喜欢的,依然想着某天我也能设计一个仅用于科学计算和 OI/ICPC 的语言!
- 用 C/C++ 写高效小巧的功能
- 用 Python 处理日常小功能,计算器,模拟鼠标键盘控制,图片处理,视频处理,小游戏开发。
- 用 ~~Julia ~~ SageMath 写复杂的科学计算用以取代 Matlab。VSCode 一定要选择一个工作区文件夹
- 用 Matlab(学校版)做演示和交互,Wolfram Mathematics(网页版)做验算。
设计理念
Julia 设计理念竟然是传承各种语言的优势,丢弃各个语言的不足的一种动态编程语言,可是这不是既要马儿跑,又要马儿不吃草吗?它借助 LLVM 和 JIT 技术。
Julia 有交互界面,现在语言感觉都能像 Python,Matlab 一样支持交互界面,REPL REPL : Read Eval Print Loop : 交互式解释器。
高精度,支持向量,矩阵,传值而非传引用,速度快是我向往的
Julia 入门
基本运算
太接近数学符号了!不亏是 MIT 出来的。
支持非 ASCII 码当运算符我是接受不了的
typeof 查看类型
Bool 类型:
true, false
整数有 Int8,16,32,64,128, 和 U 版本(越界取模),还有高精度 BigInt(都会自动向这个转化)
浮点数有 Int16,Int32,Int64,有 Inf,-Inf,NaN,eps,还有高精度 BigFloat(当然了不可能是精确值)
有理数和复数自带(
//
表示有理数,im 表示虚数 i)从 1 开头索引,我有点接受不了
整除:
÷
(或者用 div) 异或:⊻
(或者用 xor)div 向 0 近似,fld 向 -inf 近似,cld 向 +inf 近似
Base.operator_precedence 看运算符优先级,Base.operator_associativity 看是左结合还是右结合
math 包内建
养成运算符之间加空格的好习惯
短路求值是个好东西
dot 运算,竟然比 for 循环慢???搞笑?这玩什么
好像要 Python 一样有 Yield 目前没找到
!放在函数名后面表示输入参数会被改变(但是不一定要这么做)
Copy 跟 Python 一样是浅 Copy
包的国内镜像
装个包,人装傻了!
USTC 的用不了,所以用 ZJU 的了
先把Registry.toml 文件下载下来,放在
C:\\Users\\Administrator\\.julia\\registries\\General\\
1 | (v1.4) pkg> registry add https://mirrors.zju.edu.cn/julia/registries/General.git/ |