「簡潔」又堪比「百科全書」的程式語言,了解一下?|推薦課程

「简洁」又堪比「百科全书」的编程语言,了解一下?|推荐课程

懂計算機的你三個問題:

第一個問題,有沒有哪一種編程語言,可以同時做可視化工具、數據處理工具、科學計算工具,還可以當玩具

第二個問題:哪種編程語言,是一本「活的百科全書」,可以從中學到各個學科的知識,比如說數學、物理、計算機圖形學等。

最後一個問題,哪一種編程語言的代碼長度可以最短?

今天給大家介紹的 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模型

  • 如何可視化一個網絡?

  • 如何手動生成特定的網絡?

  • 如何測量一個網絡的參數?


分享到:


相關文章: