第一次接触到 Wolfram 是在 Matrix67 的博客,看到他博客上的精致的演示图片惊呆了,并且很多是动态的。后来从利器这一篇博客中知道博主用的是 Wolfram Language。软件叫做 Mathematica,是一款商业软件,类似 matlab。那时候 Wolfram 就给我留下了一个“很漂亮”的印象。
后来我一直想寻找一种作图的工具,可以用一种语言描述我想表达的数据结构,让我展示在博客上或者 slides 中。Dot 语言貌似是一个不错的选择,它非常简单,表达能力也还可以,基本上花1个小时弄懂它的 AST,然后试一下,就可以谙熟于心了。并且它的实现 Graphviz 还有 Python 版本。这里还有一个 Python 的库 GraphvizAnim 可以基于 Graphviz 制作动态的图片。
然而这个库唯一的缺点就是,它的每一个点的位置是自动布局算法生成的。因为渲染出的图片位置不完美,我曾经一直在网上搜索控制节点位置的方法,后来看到维基百科明确的说明,才放弃。维基百科的一个例子渲染出的结果如下图。
首先无法渲染出正方形,其次 (gof)’ 的位置也有问题。解决这个问题,要么借助其他 svg 编辑工具调整位置,要么就忍受这种自动布局算法的缺陷。Graphviz 提供了不同的工具,它们的不同仅仅是渲染节点的布局算法不同。
- dot – filter for drawing directed graphs
- neato – filter for drawing undirected graphs
- twopi – filter for radial layouts of graphs
- circo – filter for circular layout of graphs
- fdp – filter for drawing undirected graphs
- sfdp – filter for drawing large undirected graphs
- patchwork – filter for squarified tree maps
- osage – filter for array-based layouts
最近又想起来 Wolfram 这个好东西,Matrix67 对它的评价如此之高,不去试试可能会失去很多乐趣 :)
Wolfram 是 Stephen Wolfram 耗费了 30 年的心血开发的,目的是建立一种 Knowledge Based Language,比如说每个国家的首都,每个国家的国旗,这种通用的知识。也内置了很多丰富的库函数,一行代码几乎可以做到任何事情。
Naming everything after yourself, huh?
了解 Wolfram 的强大,可以去 Youtube 看 Stephen 的这个视频。视频中快速展示了几种酷炫的用法,第一次看这个视频的时候让我目瞪口呆,也是这个视频勾起了我学习 Wolfram 的好奇心。有意思的是,Wolfram 是一个基于符号的编程语言,这个最初有点难以理解,比如说你引用了一个不存在的符号,解释器不会报错,而是当做一个定义的符号来对待。图片、公式、地图、地理位置、未知变量 x 等都可以叫做符号。Stephen 的视频中为了解释“面向符号的”语言,说了太多次 Symbolic,所以视频下面有很多欢乐的吐槽。
New drinking game: drink every time Stephen says the word “Symbolic”
没有纠结太多,我在官方注册了 15 天 TRIAL。然后按照邮件的指引下载了一个安装工具,但是安装工具一直卡,使用代理下载也不行。尝试了 10 多次都这样,于是就去用户论坛发帖求助。
有人回复说给客服提交工单,客户会邮件直接发给你全部程序下载链接,可以跳过安装器。于是我 9 月 3 日提交了一个工单,9 月 8 日收到了回复,邮件有 Mac 和 Windows 的下载链接,大约 4G 左右。Mac 上面下载完之后按照普通 dmg 安装就可以。
安装好之后,终于可以弹钢琴尝试一下了。
配置目前看起来有些复杂,很多稀奇古怪的问题。比如 Proxy 一直导致网络有问题,直接连接就没问题了。以及 Kernel 不知道为啥最多开启 4 个,只要多余 4 个就会有问题。
《快速编程入门》很不错,还有面向 Python 程序员的解释。一个晚上就可以上手。后面打算读一下《Wolfram 全书》。
回来更新下,在 Wolfram 的价格页发现除了 Industry 的 license,其他的购买都只有 4 个 Kernel 可以用。我不知道这种纯粹限制用户机能的限制有什么意义。
Number of Mathematica Computation kernels available for parallel computing across an equivalent number of cores. Mathematica Core Extensions can be used to extend parallel support for machines with additional cores.
之前看31b1 也看到过 https://github.com/3b1b/manim
Animation engine for explanatory math videos
也挺好玩的B站有视频https://www.bilibili.com/read/cv17444/
太酷炫了! 我也先观摩一下这个 3b1b 的视频去~
哈哈 推荐一下这期https://www.youtube.com/watch?v=VcgJro0sTiM
作者在这期收获了 1 million subscribers
然后他推荐了一些其他的youtube channel
https://www.zhihu.com/question/58819482/answer/253076648
https://www.bilibili.com/video/av26037627