和 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/