天天看點

未來物聯網全棧開發 —— JavaScript OR Python?

未來物聯網全棧開發 —— JavaScript OR Python? 物聯網開發涉及面龐雜,開發周期長,是以我們必須尋找一種覆寫面廣的程式設計語言和方法。 JavaScript 支援 HTTP 和 JSON 、支援函數式程式設計、可提供互動式環境等特點堪稱适用于物聯網全棧開發; Python 作為一種膠水語言,可在物聯網及嵌入式系統中承擔大量任務,并部分替代以上語言。
未來物聯網全棧開發 —— JavaScript OR Python?

  可能很少人知道 js 的前身,Javascript 的前身叫LiveScript,是Sun公司推出Java後 Netscape 公司引進的,當時因為某些原因,它将原有的 LiveScript 重新進行設計,參考了面向對象的概念,并更名為 JavaScript,據說是因為一位小職員在無聊時開發出來的自身版本 。

  之是以取名JavaScript,是因為JavaScript是作為一種嵌入HTML文檔的、基于對象的腳本設計語言。其中很大一部分的文法同Java語言很相似,而且JavaScript的設計可以使它很容易地同Java語言一同工作,它可以充分支援Java的applet小應用程式,Java的 applet小應用程式也可以很友善地通路已有的JavaScript代碼。是以,也可以JavaScript看成是Java語言的某種簡化版本。

未來物聯網全棧開發 —— JavaScript OR Python?

  前端開發人員都比較清楚 JavaScript 的優點,來排列下:

JavaScript 可以減少網絡傳輸。

JavaScript 擁有跨平台性。

JavaScript 簡單、友善操縱HTML對象。

JavaScript 支援分布式運算。

JavaScript 簡單弱類型,并且相對安全。

  可是它也有局限性,如各浏覽器廠商對JavaScript支援程度不同,“Web安全性”對JavaScript一些功能犧牲,如 .NET 大多數攻擊都是通過 Js 運作腳本注入。

目前在網際網路上有很多浏覽器,如Firefox、Internet Explorer、Opera等,但每種浏覽器支援JavaScript的程度是不一樣的,不同的浏覽器在浏覽一個帶有JavaScript腳本的首頁時,由于對JavaScript的支援稍有不同,其效果會有一定的差距,有時甚至會顯示不出來。

  膠水語言,同樣的也是面向對象,但我更喜歡稱它為“蛇”語言,一種 C 和 shell 之間的語言,功能全面,易學易用,可拓展的語言,為什麼這麼說,在你會 Java 的基礎上,如果你同時學 Js 和 Python 的話,我想,Python 會更快勝任。

  開發遊戲裡有一種常見的應用情形,需要快速生成模型。如何操作?

  使用 Python 快速生成程式的原型(有時甚至是程式的最終界面),然後對其中有特别要求的部分,用更合适的語言改寫。

未來物聯網全棧開發 —— JavaScript OR Python?

  比如3D遊戲中的圖形渲染子產品,性能要求特别高,就可以用C/C++重寫,而後封裝為Python可以調用的擴充類庫。需要注意的是在您使用擴充類庫時可能需要考慮平台問題,某些可能不提供跨平台的實作。

Python 在吉多手中誕生了。實際上,第一個實作是在 Mac 機上。可以說,Python 是從 ABC 發展起來,主要受到了Modula-3(另一種相當優美且強大的語言,為小型團體所設計的)的影響。并且結合了 Unix shell 和C 的習慣。

  如果你使用過,應該對它所支援的擴充庫印象會很深刻吧,它可擴充性和可嵌入性,包括實用性非常強。如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK,還有最近在幫公司開發的進階反編譯讀取庫(暫定命名YHK)。

  那對比優缺點和使用規則之後我們發現,兩者各有千秋,未來物聯網發展離不開一樣東西,那就是智能化與科學計算,國外這幾年比較主流的是 MATLAB,記得上家公司帶領的團隊裡有個英國留學回來的哥們,和他聊過幾次,了解到,其實在國外,MATLAB 一直都是比較主流的,但它是商用,和oracle一樣,需要付費,且價格不菲。由此可見,國外走的不是“程式、産品、項目”,而是“機器人、智能、科學計算、圖形、算法”這些,當然國内也有,卻是非主流的趨勢,今年才感覺到市場的趨勢改變,也許未來會着重發展,是以單從這一點來看,科學算法占用了很大的比例。

用 Python 做科學計算有如下優點:

首先,MATLAB 是商用的,且價格不菲。而 Python 完全免費,衆多開源的科學計算庫都提供了Python的調用接口。使用者可以在任何計算機上免費安裝Python及其絕大多數擴充庫。

其次,與MATLAB相比,Python是一門更易學、更嚴謹的程式設計語言。它能讓使用者編寫出更易讀、易維護的代碼。

最後,MATLAB主要專注于工程和科學計算。然而即使在計算領域,也經常會遇到檔案管理、界面設計、網絡通信等各種需求。而Python有着豐富的擴充庫,可以輕易完成各種進階任務,開發者可以用Python實作完整應用程式所需的各種功能。

  由于Python語言的簡潔性、易讀性以及可擴充性,在國外用Python做科學計算的研究機構日益增多,一些知名大學已經采用Python來教授程式設計課程。例如卡耐基梅隆大學的程式設計基礎、麻省理工學院的計算機科學及程式設計導論就使用Python語言講授。   衆多開源的科學計算軟體包都提供了Python的調用接口,例如著名的計算機視覺庫OpenCV、三維可視化庫VTK、醫學圖像處理庫ITK。   Python專用的科學計算擴充庫就更多了,例如如下3個十分經典的科學計算擴充庫:NumPy、SciPy和matplotlib,它們分别為Python提供了快速數組處理、數值運算以及繪圖功能。是以Python語言及其衆多的擴充庫所構成的開發環境十分适合工程技術、科研人員處理實驗資料、制作圖表,甚至開發科學計算應用程式。

  電商、遊戲、爬蟲、資料分析等商業應用,再到 分布式系統、網絡系統、大規模資料存儲、web基礎架構等進行性能分析,再過來就是 圖形渲染、科學計算、智能化、再到運作速度、快速處理、支援的擴充庫,如果是你,你會選什麼呢?

未來物聯網全棧開發 —— JavaScript OR Python?