MATLAB 被封禁之后,Python 或成最大贏家?

這段時(shí)間,發(fā)生在哈工大身上的事,除了百年校慶千架無人機(jī)表演以外,可能最讓人關(guān)注的就是哈工大花錢購買的正版?MATLAB 軟件竟然被軟件公司單方面停用了!

(哈工大學(xué)生@王霖瑋 披露的停用內(nèi)容)
MATLAB 被封禁的來龍去脈想必大家都已經(jīng)知曉,圖靈君在此就不再贅述了。
而這一事件之所以能夠引起人們強(qiáng)烈的關(guān)注,我想除了這件事是發(fā)生在哈工大、哈工程等軍工院校身上以外,另一個(gè)值得注意的原因則是這個(gè)軟件本身。

MATLAB 發(fā)布于 1984 年,作為三大數(shù)學(xué)軟件之一,MATLAB 在工程計(jì)算、控制設(shè)計(jì)、信號處理、圖像處理、信號檢測、金融建模設(shè)計(jì)與分析等領(lǐng)域起著至關(guān)重要的作用。
在實(shí)際應(yīng)用過程中,MATLAB 可以大幅降低撰寫程序的困難度,讓工程師與研究人員能夠快速地進(jìn)行數(shù)據(jù)分析、系統(tǒng)開發(fā)與測試。
由于MATLAB?強(qiáng)大的功能,它被各領(lǐng)域的工程師與研究人員廣泛的使用在數(shù)值計(jì)算、算法開發(fā)與測試等問題上。
進(jìn)入中國后,MATLAB 更是迅速席卷了清華、北大、西安交大等高校,成為各大高校工科必備的軟件工具,甚至某些大學(xué)專業(yè)課程的首堂課,就是教大家安裝 MATLAB(圖靈君當(dāng)年上大學(xué)時(shí),第一堂專業(yè)課就是這樣)。

▲?使用 MATLAB 系列工具制作的模擬圖
面對此次 MATLAB 被封禁事件,有網(wǎng)友樂觀地表示“可以使用盜版軟件,反正盜版軟件和正版軟件在功能上沒有什么差別”。
話雖這么說,但假如使用盜版軟件測試程序并得出圖表和數(shù)據(jù)后,沒有版權(quán)保護(hù),這些數(shù)據(jù)和圖表將無法進(jìn)行發(fā)表公示,甚至面臨著侵權(quán)的控訴。
也有網(wǎng)友表示,可以使用更加開源的 Python、Julia。這為工科學(xué)生指明了一條道路。
雖然這些替代品,與 MATLAB 有著較大的差距,但恰如一位知乎網(wǎng)友所說:假如?MATHWORKS 真的決定永久禁止哈工大、哈工程等高校使用 MATLAB,那么大家也只好轉(zhuǎn)戰(zhàn) Python 了,畢竟 Python 可以解決絕大部分 MATLAB 的應(yīng)用問題,這已然是很不容易的了。

由此可見,在 MATLAB 被禁用之后,Python 的使用將會是一個(gè)很好的替代選擇。所以今天我們暫且拋開 MATLAB 不談,著重跟大家聊一聊 Python。
Python 的發(fā)展起源
自從 20 世紀(jì) 90 年代初 Python 語言誕生至今,Python 發(fā)展了接近三十年,它被逐漸廣泛應(yīng)用于系統(tǒng)管理任務(wù)的處理和 Web 編程,現(xiàn)在更是成為了編程語言中的“網(wǎng)紅”。Python 的創(chuàng)始人為荷蘭人吉多·范羅蘇姆?(Guido van Rossum)。
19 年圣誕節(jié)期間,在阿姆斯特丹,Guido 為了打發(fā)圣誕節(jié)的無趣,決心開發(fā)一個(gè)新的腳本解釋程序,作為 ABC 語言的一種繼承。之所以選中 Python(大蟒蛇的意思)作為該編程語言的名字,是取自英國 20 世紀(jì) 70 年代首播的電視喜劇《蒙提.派森的飛行馬戲團(tuán)》(Monty Python's Flying Circus)。
ABC 語言是由 Guido 參加設(shè)計(jì)的一種教學(xué)語言。就 Guido 本人看來,ABC ?這種語言非常優(yōu)美和強(qiáng)大,是專門為非專業(yè)程序員設(shè)計(jì)的。但是 ABC 語言并沒有成功,究其原因,Guido 認(rèn)為是其非開放造成的。Guido 決心在 Python 中避免這一錯(cuò)誤。
同時(shí),他還想實(shí)現(xiàn)在 ABC 中閃現(xiàn)過但未曾實(shí)現(xiàn)的東西。就這樣,Python 在 Guido 的手中誕生了??梢哉f,Python 是從 ABC 發(fā)展起來,主要受到了 Modula-3(另一種相當(dāng)優(yōu)美且強(qiáng)大的語言,為小型團(tuán)體所設(shè)計(jì)的)的影響,并且結(jié)合了 Unix shell 和 C 的習(xí)慣。
2004 年以后,Python 的使用率呈線性增長。Python 2 于 2000 年 10 月 16 日發(fā)布,穩(wěn)定版本是 Python 2.7。Python 3 于 2008 年 12 月 3 日發(fā)布,不完全兼容 Python 2。2011 年 1 月,它被 TIOBE 編程語言排行榜評為 2010 年度語言。?Python?目前已經(jīng)成為最受歡迎的程序設(shè)計(jì)語言之一。
Python 為何如此受歡迎?
Python 語言的簡潔性、易讀性以及可擴(kuò)展性,使得在國外用 Python 做科學(xué)計(jì)算的研究機(jī)構(gòu)日益增多,一些知名大學(xué)已經(jīng)采用 Python 來教授程序設(shè)計(jì)課程。例如卡耐基梅隆大學(xué)的編程基礎(chǔ)、麻省理工學(xué)院的計(jì)算機(jī)科學(xué)及編程導(dǎo)論就使用 Python 語言講授。
此外,眾多開源的科學(xué)計(jì)算軟件包也都提供了 Python 的調(diào)用接口,例如著名的計(jì)算機(jī)視覺庫 OpenCV、三維可視化庫 VTK、醫(yī)學(xué)圖像處理庫 ITK。
而 Python 專用的科學(xué)計(jì)算擴(kuò)展庫就更多了,例如以下 3 個(gè)十分經(jīng)典的科學(xué)計(jì)算擴(kuò)展庫:NumPy、SciPy 和 Matplotlib,它們分別為 Python 提供了快速數(shù)組處理、數(shù)值運(yùn)算以及繪圖功能。這些都直接或間接地促進(jìn)了 Python 的火爆和發(fā)展。
在前一階段知名技術(shù)交流網(wǎng)站 Stack Overflow 推出的 2020 全球開發(fā)人員調(diào)查報(bào)告中,有 30.0% 的開發(fā)者表示,Python 是他們最想學(xué)習(xí)的編程語言,這也是 Python 連續(xù)四年獲得這個(gè)榜單的第一名。

而在實(shí)際工作過程中,Python 也是使用的較多的編程語言,有 66.7% 的受訪者表示喜歡使用 Python 進(jìn)行編程。

同樣,通過百度指數(shù)我們也能感受出 Python 的熱度,針對最近 30 天 Python、Java、C?語言的搜索指數(shù),我們可以看出 Python 的搜索指數(shù)始終遙遙領(lǐng)先,平均值為 29557,而?C?語言和 Java 的搜索指數(shù)才在 12000 上下。

容易上手、學(xué)會了 python 可以大幅提高 IT 人的自身競爭力等優(yōu)勢使很多程序員都喜歡 Python,但非程序員也有很多人喜歡 Python,比如產(chǎn)品、運(yùn)營、數(shù)據(jù)分析師等,他們可以用 Python 進(jìn)行數(shù)據(jù)爬取和分析等工作,這些都導(dǎo)致?Python 是目前 IT 就業(yè)市場最受歡迎,最熱門的技術(shù)技能之一。
怎樣學(xué) Python ?
說了那么多,那么我們應(yīng)該如何學(xué)習(xí) Python 呢?其實(shí)很簡單,得益于互聯(lián)網(wǎng)的發(fā)展,我們學(xué)習(xí)和提升自己的方式更加多元化??偨Y(jié)起來可以從以下兩大方面入手:
一、網(wǎng)課
1、Python Tutorial for Beginners (For Absolute Beginners)油管上的面向初學(xué)者的 Python 視頻教程,主要是用語言講解一些基礎(chǔ)結(jié)構(gòu)。

2、Google's Python ClassGoogle 上的 Python 教程,同樣也是面向初學(xué)者,沒有什么基礎(chǔ)的也可以學(xué)習(xí)。不過這個(gè)課程主要是面向 Python 2 的,針對 Python 3 的一些內(nèi)容還尚未更新。

3、Introduction to Scripting in Python SpecializationCoursera 上的 Python 教程,從一開始介紹一些基礎(chǔ)的 Python 理論知識慢慢的引導(dǎo)到在實(shí)際案例中的應(yīng)用,可以慢慢的對 Python 由越來越深的理解也能一步一步加強(qiáng)對 Python 內(nèi)容的應(yīng)用能力。

二、書籍入門階段

《Python 編程:從入門到實(shí)踐》
銷量 80 萬冊,一本針對所有層次的 Python 用戶的 Python 入門書,完全零基礎(chǔ)的學(xué)員也可以用這本書入門 Python。內(nèi)容涉及到關(guān)于 Python 的很多的基礎(chǔ)概念并且輔以練習(xí)。前半講理論后半重實(shí)踐,會以實(shí)際的開發(fā)項(xiàng)目的講解引導(dǎo)讀者進(jìn)一步學(xué)習(xí)這門語言。

《Python 基礎(chǔ)教程(第3版)》
經(jīng)典的 Python 入門教程,層次鮮明、結(jié)構(gòu)嚴(yán)謹(jǐn)、內(nèi)容翔實(shí),特別是后面幾章,作者將前面講述的內(nèi)容應(yīng)用到 10 個(gè)引人入勝的項(xiàng)目中,并以模板的形式介紹了項(xiàng)目的開發(fā)過程,手把手教授 Python 編程實(shí)踐,讓讀者從項(xiàng)目中領(lǐng)略 Python 的真正魅力。
進(jìn)階階段

《流暢的 Python》
致力于讓廣大 Python 程序員能把代碼寫的更流暢,減少重復(fù)勞動,并且會涉及到一些 Python 語言中的高級用法,幫助中高級程序員進(jìn)一步的去理解和使用這一門語言。
實(shí)際應(yīng)用方面

《Python 3 網(wǎng)絡(luò)爬蟲開發(fā)實(shí)戰(zhàn)》
爬蟲也算是 Python 的一種非常廣泛的應(yīng)用了,很多的大數(shù)據(jù)產(chǎn)品都是利用 Python 來爬蟲。這本書屬于近兩年國內(nèi)在爬蟲方面寫的非常優(yōu)秀的一本書了。

《Python 深度學(xué)習(xí)》
這本書作者是目前使用最廣泛的深度學(xué)習(xí)框架 Keras 的發(fā)布者,從這一點(diǎn)上來說,權(quán)威性得到了保障。這本書并不需要特別深刻的機(jī)器學(xué)習(xí)知識,讀者在學(xué)習(xí)完這本書之后將獲得搭建自己的深度學(xué)習(xí)環(huán)境的能力。值得入手!

接下來,再給大家推薦兩本關(guān)于算法的書,畢竟程序=算法+數(shù)據(jù)結(jié)構(gòu),掌握了數(shù)據(jù)之后,算法的學(xué)習(xí)也得提上日程了。

《算法(第4版)》
這本書作為算法領(lǐng)域經(jīng)典的參考書,全面介紹了關(guān)于算法和數(shù)據(jù)結(jié)構(gòu)的必備知識,并特別針對排序、搜索、圖處理和字符串處理進(jìn)行了論述。第 4 版具體給出了每位程序員應(yīng)知應(yīng)會的 50 個(gè)算法,提供了實(shí)際代碼,而且這些 Java 代碼實(shí)現(xiàn)采用了模塊化的編程風(fēng)格,讀者可以方便地加以改造。圖書的配套網(wǎng)站提供了書中內(nèi)容的摘要及更多的代碼實(shí)現(xiàn)、測試數(shù)據(jù)、練習(xí)、教學(xué)課件等資源。

《算法圖解》
這本書示例豐富,圖文并茂,以簡明易懂的方式闡釋了算法,旨在幫助程序員在日常項(xiàng)目中更好地利用算法為軟件開發(fā)助力。前三章介紹算法基礎(chǔ),包括二分查找、大 O 表示法、兩種基本的數(shù)據(jù)結(jié)構(gòu)以及遞歸等。余下的篇幅將主要介紹應(yīng)用廣泛的算法,具體內(nèi)容包括:面對具體問題時(shí)的解決技巧,比如何時(shí)采用貪婪算法或動態(tài)規(guī)劃;散列表的應(yīng)用;圖算法;K 最近鄰算法。


參考內(nèi)容:1、世界華人周刊:禁止哈工大使用“工科神器”-這次,美國抓住了中國制造的軟肋?
2、知乎:
https://www.zhihu.com/question/291869104/answer/824514120
3、Stack Overflow 2020報(bào)告:
https://insights.stackoverflow.com/survey/2020