碼農們與數據科學家的新寵——開始用了就停不下來的無與倫比的編程語言是?

碼農們與數據科學家的新寵——開始用了就停不下來的無與倫比的編程語言是?

來自專欄數據應用學院

Matlab初接觸

我在密歇根大學的第一年物理課上,有位教授叫我們模擬一個多體系統的問題集,那一周我接觸到了人生的第一個編程語言——Matlab。

我就是這樣在過去十年中一點點接觸到了十幾種編程語言。除了在CS入門課程中學習了一些C++語言,還有研究生院開設的Java資料庫課程之外,我幾乎從未接受過任何軟體工程方面的正式訓練。對我而言,編程就如同是完成作業,或者是分析數據來解決問題,亦或是將自己的想法變成現實。這些意味著我們要熟悉演算法和數據結構的具體細節,然而我從來沒有發現自己是為了學習編程而寫代碼。絕大多數數據科學家和機器學習工程師也是這樣,在選擇編程工具時,通常我們會想如何在要解決的問題範圍內優化其可用性和提高效率,而不是在意於其軟體基礎。

Python/Swift進入視野


Python語言優勢

直到2018年,Python似乎已經廣泛應用於機器學習和數據科學界。它是一個很棒的腳本語言,而且語法對初學者非常友好。當你想要優化其性能時,可以與C語言中的低級工具庫進行交互。然而對我來說,Python最吸引人的地方是因為它足夠的友好,可以連接每個客戶端,構建整個系統。 Python的工具包比如Numpy,Pandas,Matplotlib,還有Jupyter notebook,它們有著巨大的性能支撐。而且你在工作中需要構建一個應用程序的時候,像Flask和Django這樣的框架其性能足以支持數以億計的用戶,我可以使用其中一種語言來構建整個系統。


Swift語言優勢

雖然近十年來我對Python語言一直很滿意,但今後十年可能不會繼續使用它,我會選擇Swift語言取而代之。

在今年的TensorFlow 發展峰會上,來自谷歌的Chris Lattner宣布TensorFlow將很快支持Swift。我們不要因為Swift能在iOS設備上使用就覺得它只是TensorFlow的一個簡單工具,Swift的作用可遠不止於此,它的開發正試圖改變著整個機器學習和數據科學界的默認軟體。

在我熟練使用Python期間,另外兩種技術趨勢正在緩慢滲透:人工智慧在通過神經網路和深度學習復甦,同時人工智慧正逐步向移動應用程序轉變,並且這些應用程序運行在數十億的智能手機和物聯網設備上。這兩種技術都需要高性能的計算設備,然而Python語言並不能夠支撐。


數據科學家為什麼要學習Swift?

深度學習在計算上是很昂貴的,因為要通過tensor操作的長鏈條傳遞著巨大的數據集。為了快速執行這些計算,軟體開發必須針對具有數千個線程和內核的專用處理器進行編譯。然而移動設備功耗和熱量是個關注點,這使得這個問題更加棘手。對於更慢、更高效、但內存較少的處理器,優化應用程序是一項挑戰,到目前為止,Python還沒有提供太多幫助。

對於數據科學家和機器學習研究人員來說,這是一個問題。最終我們不得不求助於Hack-y工作區與GPUs進行交互,而且我們很多人苦惱於移動應用程序開發。學習一門新的語言並非不可能,但是換一種編程平台的成本太高。看下Node.js這樣的javascript項目和像react-native這樣的跨平台abstractions,我們就會發現換個編譯環境的代價之高。我曾計劃永遠依賴於numpy數組,但是現在完全脫離Python環境去完成一個項目似乎越來越難,所以它不再是一個足夠好的解決方案。

在由機器學習和邊緣計算主導的世界中,Python無法成為端到端語言,這是Swift為TensorFlow設計的原動力。Chris Lattner認為Python不會帶動技術上的提升,因為Python動態類型和編譯器的局限性。用他的話來說,工程師需要一個把機器學習視為基源的編程語言。儘管他提出了一些深層次的技術原因,我們為什麼需要採用新的編譯器分析方法來改變TensorFlow的構建和執行方式,然而他的觀點中最引人注目的卻是編程人員的經驗。


推薦閱讀:

寫了那麼久代碼了,給大家談談我怎麼理解編程
AI編程:5種最流行的人工智慧編程語言
大數據時代對編程有什麼影響?
C/C++進階為大神鋪路必備,C語言指針用法!
Python有哪些一千行左右的經典練手項目?

TAG:編程語言 | 數據挖掘 | 數據科學家 |