「简洁」又堪比「百科全书」的编程语言,了解一下?| 推荐课程
问懂计算机的你三个问题:
第一个问题,有没有哪一种编程语言,可以同时做可视化工具、数据处理工具、科学计算工具,还可以当玩具?
第二个问题:哪种编程语言,是一本「活的百科全书」,可以从中学到各个学科的知识,比如说数学、物理、计算机图形学等。
最后一个问题,哪一种编程语言的代码长度可以最短?
今天给大家介绍的 Mathematica,也就是 Wolfram 语言,它就是上面问题的答案。
它的的确确,在绝大多数问题下,代码长度都是最短的;同时,它的帮助文档也可以说一个百科全书;进一步的,它可以做可视化、数据处理、科学计算,甚至也可以用来当玩具。
那为什么这个编程语言会比别的语言更简洁,同时还有这么多功能呢?
1.简洁
我们先从简洁开始说起。
Mathematica的代码之所以简洁,有两个重要的因素。一是它有大量的原生函数,目前,它自带的函数已经有近五千个了;二是它的语法本身,就会使得代码更加简洁。
先说第一点,Mathematica拥有大量的原生函数。有人可能会说,这不就是「作弊」嘛?
确实看起来有点像作弊,但仔细研究,就会发现这不是简单的堆砌函数,而是在「普适计算」思想指导下的必然结果。所谓「普适计算」,大致可以理解成「万物皆可计算」。
比如说,Mathematica 中有一些滤波函数,它们可以作用到数值列表上,但同时,也可以直接作用到图片上。进一步的,还可以作用到三维图像上。所以可以看到,在 Mathematica 中,几乎每一个函数,都可以作用在很多不同的对象上。而作为辅助,显然要引入大量的配套函数。但这就像一棵树一样:枝干其实并不多,但功能(树叶)非常强大。
再说第二点,它的语法本身,就会使得代码更加简洁。举一个简单的例子,如果我想将多个函数嵌套起来,比如说这个表达式:
一般的语言可能会这样写:
这个时候就会发现,我们很难判断其中一个元素到底在什么地方。而 Mathematica 则有一个非常聪明的做法:使用 @ 符号连接函数,就像这样写:
这样,函数的嵌套关系就一目了然了。后期还会讲到 Map 函数、模式替换等操作,它们都会大幅地提高书写效率,同时保有很好的阅读效率。
2.百科
现在来解释一下,为什么我称 Mathematica「是一个百科全书」,而且是一个「活的百科全书」。
主要得益于 Mathematica 的帮助文档内容非常丰富,几乎无所不包。
一个简单的例子,Mathematica 有一个原生函数:叫做 Mandelbrot Set Plot。用来绘制 Mandelbrot 集合图,也就是这里显示的这种图像。
打开它的帮助文档之后,点击「更多信息和选项」,就能看到非常详细的背景信息,比如说第一条,就给出了 Mandelbrot 集的数学定义,写的也非常清晰明了。
而帮助文档里的例子,还可以直接就在文档里运行。你甚至可以修改它的几个参数,看看有什么变化。而且你不用担心会损坏这些文档,因为它不会保存这些修改。
而像这样的帮助文档,在 Mathematica 中非常常见,大家在后续的学习中,可以多多体验。
3.Mathematica 是什么?
所以,Mathematica 是什么呢?
这就回到了第一个问题:有没有哪一种编程语言,可以同时做可视化、数据处理、科学计算,还可以当玩具?通过这个问题,我们就可以完整的描述Mathematica了:
Mathematica = 编程语言 + 可视化工具 + 数据处理工具 + 科学计算工具 + 玩具
作为编程语言,它的代码效率非常高;作为可视化工具,它拥有从一维到四维的可视化能力,拥有从普通照片到CT图像的显示能力;作为数据处理工具,它也有一整套的数学工具进行配套;而作为科学计算工具,它的数学函数几乎覆盖了所有数理工作所需的范围。甚至,它还是一个玩具,使用简短代码,就可以进行很多有意思的实验。
4.新课上线:
Mathematica 软件入门教程
所以,总结一下,这套课程将会利用很多具体的项目,来系统地讲解 Mathematica 的使用方法,欢迎在「集智AI学园」参加这个系列课程。
扫描二维码或者点击“阅读原文”开始学习
课程讲师
上课方式
13节课,每周更新。线上视频课程。
课程价格
单节 25.6元,系列课总价 256元
免费试听
Mathematica 概述(6分钟,免费)
Wolfram 语言入门:从1+1到混沌(24分钟,免费)
课程大纲
一、概论
1. 简述
-
简洁:Mathematica为什么比其他语言更简洁?
-
百科:初步认识Mathematica中的宝库——帮助文档;
-
定义:Mathematica是什么?
2. Wolfram语言入门:从1+1到混沌
-
数值计算;
-
表达式输入 / 代数计算;
-
二维、三维、参数绘图;
-
微分方程、数值微分方程;
-
Mathematica程序包
二、可视化
3. 函数可视化:绘图函数通览
-
可视化是一种分类:它将重要的信息呈现出来,同时淡化、隐藏那些不重要的信息;
-
Mathematica中函数绘图工具的种类
-
对主要绘图工具的详细讲解
-
如何选择绘图工具?
4. 函数可视化:绘图函数的选项
-
通过选项,可以绘制出任意想要的图像;
-
如何控制图像的风格?
-
如何修改图像的细节?
-
如何「一键」得到符合常见论文规范的图形?
5. 数据可视化:你需要怎样的可视化工具
-
数据可视化工具通览
-
各个数据可视化工具的讲解
-
数据可视化函数的用法、选项
-
导入、处理外部数据
6. 数据可视化:数据可视化的技巧
-
处理大量数据的方法:采样(系统自带的采样函数,手动采样,像素化)
-
处理重叠数据的方法:使用密度图处理重叠数据,使用二维分布图处理重叠数据,加入噪声
7. 图形绘制:手写Plot函数
-
Graphics函数
-
几何对象通览
-
手写Plot函数
-
作业:手写ListPlot函数
三、Wolfram语言基础
8. 界面:可以计算的笔记本
-
提示栏
-
上下文、文件位置与笔记本的关系
-
笔记本排版
9. 函数式编程:不用For循环的程序
-
一种问题有几种写法?
-
For, Table, Do, Nest,它们都是什么意思?
-
比较各个函数的效率
-
@
-
模式,与模式匹配
四、数据处理
10. 数据处理:大物实验的「终极神器」
-
数据输入、预处理(字符转数字、清除无效数据)
-
转置的妙用
-
拟合、以及相关检测
-
插值函数
-
滤波
11. 图像处理:「手写」一个PS
-
PS是怎样调整图像的?
-
如何在Mathematica中修图?
-
如何将这些功能做成界面?
五、科学数学计算
12. 数学分析 / 线性代数
-
极限、数列
-
微积分与微分方程
-
为程序提供更多的信息
-
线性代数
13. 图与网络:社交网络分析
-
社交网络是什么?
-
社交网络模型:Barabasi-Albert模型
-
如何可视化一个网络?
-
如何手动生成特定的网络?
-
如何测量一个网络的参数?
| 编辑:TT
推荐阅读
集智QQ群|292641157
商务合作|zhangqian@swarma.org
投稿转载|wangting@swarma.org
◆ ◆ ◆
搜索公众号:集智俱乐部
加入“没有围墙的研究所”
让苹果砸得更猛烈些吧!
始发于微信公众号: 集智俱乐部