為什么 Wolfram 語言是(類似于)開源的六個原因

為什么 Wolfram 語言是(類似于)開源的六個原因的圖1



數年前,我曾寫過一篇文章,闡述為什么我認為開源不適合 Wolfram 核心技術的商業模式 Wolfram 技術不開源的十二個原因 )。也引發了一些關于不同模式優點的(大多是理性的)討論。

受這些討論的影響,我意識到,盡管 Wolfram 不是開源,但大多數開源軟件實際使用中的優點在 Wolfram 技術中也很明顯。所以,如果你不介意這個有點標題黨的標題,我想分六點闡述一下:


1. 可以免費使用;

2.可以查看源代碼

3.可以對代碼進行修改

4.你可以做出自己的貢獻

5.有技術支持的社區

6.我們一直積極開發各類功能




為什么 Wolfram 語言是(類似于)開源的六個原因的圖2
0 1
你可以免費使用


由于我們的中心商業模式是做優秀的軟件并出售其使用許可,所以當我說到有幾種方法可以免費使用 Wolfram 語言你一定會感覺有點驚訝。當然, Wolfram|Alpha 是免費的,但我說的是完整的 Wolfram 語言。最簡單的方法是創建一個免費的 Wolfram 云賬戶。這樣你可以免費通過瀏覽器或 API 使用完整的語言功能。確實,你會有 CPU 時間和存儲的時間限制,因為你使用的是免費賬戶而這些功能對我們而言都有成本,如果想要升級這些功能你可以選擇付費。

想要本地使用?試試看 Raspberry Pi 版本。完整的 Wolfram 語言可以免費在這個五刀的電腦上使用,不過會有一些商業使用限制。想在個人電腦上使用的話,在 macOS、Windows 或 Linux 操作系統上有 Wolfram 引擎。你可以在項目開發階段免費使用這個工具;還有 Wolfram 播放器,只可以免費用于運行代碼,不可以編寫新代碼。

所以,雖然開源軟件不是“免費做所有事”,但依然可以做很多事。

最重要的是,大家必須記住,由于很多人所在機構的支持,他們才可以免費使用技術棧的全部功能。很多優秀的大學擁有站點許可證,所以這些大學的學生和教職工才可以在個人不交任何費用的情況下免費使用這些技術。我們甚至有國家級別許可使用——如果你是埃及境內的學生、教師或學術研究者,你可以免費使用 Mathematica——這就有 4000 萬的人口了。你可能會說,“這并不是免費的,還是有人在付錢”。但開源不就是這樣嗎?到目前為止,Jupyter 和相關項目已經花費了數以百萬美元的費用,只想簡化 Mathematica 的筆記本,很煩惱的是,這些資金一部分就來源于我的個人納稅


為什么 Wolfram 語言是(類似于)開源的六個原因的圖3
0 2
可以查看源代碼


Wolfram 技術棧的很大一部分且越來越多的內容都是用 Wolfram 語言編寫的,所有這些的源代碼都是可以查看的。只要關閉 ReadProtected 屬性并請求定義即可。從 Mathematica 第一版開始就可以使用這個功能了,但是有些時候,還有一個沒有記錄但是大家心知肚明的內部函數讓你可以僅用鼠標指向點擊的方式就可以瀏覽定義。這個函數現在記錄在Wolfram函數資源庫中了,用法是 ResourceFunction["PrintDefinitions"]

比如,這就是 ResourceFunction["PrintDefinitions"][URLRead] 的結果:

為什么 Wolfram 語言是(類似于)開源的六個原因的圖4


點擊代碼中的函數可以查看其定義。以前用C語言編寫的函數或核心函數不能用這種方法查看,但當然,一部分上述函數可以調用真實的開源資源庫比如 MXNet、MKL、GMP 和 ImageJ,這些資源都可以在其他地方進行查看。


為什么 Wolfram 語言是(類似于)開源的六個原因的圖5
0 3
可以對代碼進行修改


Wolfram 語言中的任何公共或內部函數都可以被替換。查找源代碼、編輯并運行就可以替換內置規則。不僅如此,Wolfram 語言的基礎設計加上其對操作符過載的普遍支持,甚至可以讓你在不需要查看源代碼的情況下修改或增強任意功能。

比如,假設我認為我對值較小的實數的 Sin 有更好的執行方法,但我并不想替換值較大的實數、復數和符號參數的內置行為,那么我可以這么做:

為什么 Wolfram 語言是(類似于)開源的六個原因的圖6

為什么 Wolfram 語言是(類似于)開源的六個原因的圖7

為什么 Wolfram 語言是(類似于)開源的六個原因的圖8

你可以看到我是如何在不影響其他行為的情況下進行我的新操作的。這比編輯源代碼要簡單多了:

為什么 Wolfram 語言是(類似于)開源的六個原因的圖9


為什么 Wolfram 語言是(類似于)開源的六個原因的圖10
0 4
你可以做出自己的貢獻


我之前在開源那篇文章中也說過,我們的核心語言不依賴于用戶的貢獻,盡管我們喜歡詳細描述的錯誤報告。但是在 Wolfram 語言的生態系統中用戶有很多其他方法做出自己的貢獻。截止這篇博文的時間,在之前提到的 Wolfram 函數資源庫中,已經增加了超過 2000 條來自用戶和 Wolfram 程序員貢獻的函數。這些新函數都像已經內置一樣立即可以使用(但是實際上是自動下載并在第一次使用的時候進行安裝的),也都帶有源代碼。

比如,下面這個就是我貢獻的用來創建有內嵌地圖的地理表面繪圖的函數:

為什么 Wolfram 語言是(類似于)開源的六個原因的圖11

而且還有超過1.2萬的演示文件以教育為目的被貢獻出來,也都有自己的源代碼。

你不一定要用我們的交付系統。你可以找到很多通其他方式分享的開源 Wolfram 語言程序包的例子,比如 GitHub。有一些可以在 Wolfram 社區和 PackageData 中看到,而且我們也在準備可以分享更大型的 Wolfram 語言代碼的方法


為什么 Wolfram 語言是(類似于)開源的六個原因的圖12
0 5
有技術支持的社區


實際上有兩個有組織的社區,每個社區的重點稍有不同。

在 Stack Exchange 上完全獨立的 Mathematica 和 Wolfram 語言站點。該站點的結構是問答模式,已經處理了超過8萬個問題。這是 Stack Exchange 僅有的用于單個編程語言的站點,應該也是唯一一個用于單個技術棧的站點。

我們還有自己的支持社區 Wolfram 社區。我們有超過3萬會員,這個社區不僅止于技術支持,用戶可以分享自己的作品、討論方法或尋求幫助。你也可以在這里找到志同道合的合作伙伴,一起合作你想要貢獻給社區的程序安裝包。


為什么 Wolfram 語言是(類似于)開源的六個原因的圖13
0 6
我們一直在積極開發各類功能


除了我們定期推送的小補丁外,另外還有很多在原有功能基礎上的升級。這個數量已經多于核心 Python 語言的總運算符數量了。


為什么 Wolfram 語言是(類似于)開源的六個原因的圖14
WE PRACTICE "OPEN DESIGN"
開放設計”一直在實踐


這一點并不在人們平常討論的開源優點中,因為即使你可能以為開放設計可以在那里發生,但實際上并不是。你經常可以看到程序錯誤和拉取請求,但并沒有很多關于設計的策略或決策的討論。

我們還會直播設計審閱會議。你可以聽到我們是如何決定哪些函數可以被加進 Wolfram 語言,我們如何以最小的函數組合最大限度提供不同功能,以及我們如何確定這些函數可以作為一個整體互相協作(我在前一篇博文中討論過這個問題)。你還可以在直播會議中提問,或者如果你對我們目前遇到的困難有任何想法,盡管提出來。有時候會議會進行得很溫和,但有時候也很激烈,但你可以看到要獲得好的設計有多困難,因為我們一直在克服一些很困難、晦澀但是很重要的細節。你還可以查看已直播過的超過500個小時的會議內容

所以,雖然我們的軟件并沒有在常規意義上做到“免費且開源”,但 Wolfram 的技術在一定程度上可以做到免費,內容很大程度上可以做到開放,且總是追求更好的設計。

購買軟件/免費試用

【13.2.1中英文 Wolfram 軟件】

請評論區留言申請

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

2