Python 今年 30 歲了,但你不會知道。根據 2019 年 Stack Overflow 調查,高級動態編程語言仍然是增長最快的主要編程語言,超過了 Java,并且是人工智能開發人員最想要的語言。2021 年 1 月,Python 創紀錄地第四次獲得 TIOBE 年度最受歡迎編程語言獎。該獎項授予一年內最受歡迎的編程語言。
這就引出了一個問題:為什么有這么多開發人員可以從 500 多種語言中進行選擇,而且每年都會編寫更多的語言?答案可能在于 Python 的簡單性。
許多語言都承諾學習曲線短而平坦,但今天的開發人員需要更大的靈活性。當他們嘗試不同的堆棧和技術時,他們很快意識到 Python 幾乎可以輕松完成所有他們需要的事情。這部分是因為與其他語言相比它使用起來多么容易。一個初出茅廬的開發人員可以在幾分鐘內構建和運行一個簡單的 Hello World Python 應用程序。但通常達成交易的是該語言的內置靈活性,它支持多種編程范式,并且能夠以更少的工作量進行開發。
Python 從一開始只是一種便于簡單任務編程、自動化腳本和快速應用程序原型設計的工具,現已上升到一流語言的地位。例如,Instagram 最近在語言上加倍下注,選擇在 10 個月內分三個階段將其核心堆棧升級到 Python 3,盡管其母公司 Facebook 嚴重依賴 PHP:超文本預處理器 (PHP) 的核心架構。經過分析,Instagram 簡單地確定 PHP 在性能方面沒有顯著優勢,尤其是隨著該語言的每個新版本都在不斷提高速度。也可能是 Python 的人工智能和機器學習能力是一個考慮因素。
微軟似乎也認識到 Python 的重要性。2020 年 11 月 12 日,創建 Python 的荷蘭程序員 Guido Van Rossum 宣布他即將退休,加入微軟的開發人員部門。其他依賴 Python 的公司包括亞馬遜、工業光魔、Netflix、Reddit、谷歌和 Spotify。由于諸如此類的重擊者推動了全球對 Python 開發人員的需求,它不會很快消失,因此每個開發人員都考慮將 Python 添加到武器庫中是有意義的。
復雜世界的簡單解決方案
開發團隊嘗試使用最新技術構建復雜系統只是為了中途放棄他們的努力并返回到更簡單的編程語言(如 C++ 或 Python)并不是聞所未聞的。有時,需要的是大型柴油發動機,而不是花里胡哨的雙渦輪增壓 4 缸,如果你能在規劃階段弄清楚這一點,它可以為每個參與者節省很多心痛,時間,還有錢。
人工智能的興起讓開發人員利用 Python 在數據科學、數據分析等方面的潛力。Python 的子集機器學習和深度學習 (DL) 是最簡單的語言如何解決最初創建程序時不存在的問題的絕佳示例。
聰明的開發人員會為每個問題找到最簡單的解決方案,無論它最初看起來多么復雜。
亞馬遜采用了這種方法,并將賭注押在 Python 的機器學習能力上,選擇它作為其 DeepLens 設備庫的核心。Python 看到了簡化機器學習任務的真正需要,這些任務通常需要實現高維數據和手動流程。
Python 的強大功能極大地簡化了圖像識別、特征提取和對象檢測等任務。這使 AWS DeepLens 項目能夠使用神經網絡通過計算機視覺項目、教程和動手探索使用開發人員可以觸摸和感覺的物理設備(例如 AWS DeepLens 相機)進行學習和預測。
AWS DeepLens 的設備庫由一組不同的 Python 模塊組成,這些模塊公開對象和各種設備操作方法。結果是深度學習模型可以在相機上本地運行,以分析并對其所看到的內容采取行動。即使您從未打算在生產中使用該平臺,也可以拿起其中一臺相機并探索模塊。嘗試使用諸如此類的工具可以幫助開發人員磨練他們的手藝。
為什么Python Excel?
Python 是數據分析和數字運算的理想選擇,這解釋了為什么大多數涉及 ML 和數據科學的庫都有 Python 接口。但是 Python 不僅僅是開始學習這些學科的好方法。開發人員可以選擇采用最適合他們需求的范式:函數式、命令式、面向對象、結構化或反射式。Python 支持所有五個。
Python 在簡化復雜性方面處于最佳狀態。例如,在處理數字時,Python 擅長極快并且可以使用復雜的數學。它還具有簡單的語法來實現諸如兩個字符串相加之類的基本計算,一直到構建具有其固有復雜性的 ML 模型。
簡單也意味著用戶編寫更少的代碼。Python 支持預定義的包,實際上消除了算法編碼。對于需要的代碼,理解、更改、復制和共享都大大簡化了。這有助于 Python 開發人員社區通過免費和高效的算法、想法和工具交流而蓬勃發展。
Python 很靈活。Python 提供了選擇面向對象編程 (OOP) 或腳本的選項,它可以在多個平臺上運行,包括 Windows、macOS、Linux 和 Unix。使用 PyInstaller 將代碼從一個平臺移植到另一個平臺。
Python 有大量的社區、組和論壇,程序員可以在其中幫助解決問題。許多資源可供初學者和專業人士使用,因此您永遠不會孤單。數百個預建庫也可用于實現 ML 和 DL 算法。安裝包通常只需要一個命令。
免費、簡單和開源,Python 已進入一些最復雜的技術,并被行業巨頭、開發人員、數據科學家、ML 工程師和初學者等使用。
流行的 Python 庫
一門優秀的語言需要大量的庫選擇才能茁壯成長,這也是 Python 成為人工智能最流行的編程語言的主要原因之一。Python 庫模塊包含基本級別的項目,無需每次都對其進行編碼。
例如,NumPy 有助于高效管理多維數組,并具有出色的隨機功能。它還包含用于集成 C/C++ 和 Fortran 代碼的工具。Pandas 幫助處理 Python 中的二維數據表。盡管 SQL 也這樣做,但 Pandas 更容易在代碼中執行。僅這兩個庫就可以節省開發人員的時間。
Matplotlib 雖然不是最容易使用的,但將為開發人員節省大約六個可重復使用的基本折線圖和散點圖的代碼塊。使用 Matplotlib 可以非常快速地創建圖表、直方圖和繪圖,以便更好地理解數據、有效呈現和可視化。
Scikit-Learn 是 Python 程序員應該用于 AI /ML 的第一個庫。它處理回歸方法、分類方法和聚類、模型驗證和模型選擇,并使降維和特征提取變得輕而易舉。轉向更高級的,Scipy(不要與 Scipy 堆棧混淆)為集成、插值和優化等復雜的機器學習過程提供核心數學方法。Scikit-Learn 嚴重依賴 Scipy 庫,因此將其移至列表頂部。
使用 Python 創建快速、干凈的原型
創建原型通常需要數小時的編譯、調試、編輯、重新編譯、調試……你懂的。Python 是原型設計的理想選擇,因為它只允許編寫和測試幾行代碼,而無需編譯或使用 Makefile。它是高級別的,因此內存管理或垃圾收集等低級細節不是問題。
開始使用模塊并從那里構建。存在許多簡單且有據可查的 Python 模塊。該語言非常流行,用戶如此之多,以至于一個小組中的幾個人可能會閱讀您的代碼并幫助您將其完成。因為您的 Python 項目也將在大多數平臺上運行,所以開發人員不需要分支代碼或維護單獨的存儲庫。
值得探索的 Python 工具
使用庫可以幫助顯著加快開發速度。很有可能,有人已經編寫了所需的功能。開發人員可以將 Python 的內置成像庫或 MayaVi 和 VTK 3D 可視化工具包用于科學和數字應用程序。或者,開發人員可以考慮將 ScientificPython 和 Numeric Python 用于數值和科學應用程序。
很有可能,有一個庫可以幫助開發人員快速跟蹤項目。以下是值得探索的五個社區最愛的列表。
Selenium 構成了無數瀏覽器自動化工具、應用程序編程接口 (API) 和框架的核心技術。它使 Web 應用程序自動化以進行測試。Selenium 使數據抓取項目更容易,并且通常將復雜的例程減少到幾行代碼。
Gooey 只需幾行代碼即可將 Python 命令行程序轉變為具有圖形用戶界面的成熟應用程序,從而使共享工具變得更加容易,無論技能水平如何。Gooey 還提供簡單的日期和時間輸入。
Pyinstaller 使用傳輸壓縮創建小型、高效、獨立的可執行文件。它是多平臺的,極大地簡化了可執行文件的創建。
PYNQ(Zynq 的 Python 生產力)利用 Xilinx 器件在應用中的優勢,無需使用 ASIC 風格的設計工具來設計可編程邏輯電路。
英特爾 Python 分發版可加速 Python 并加速計算包。它使開發人員可以創建和加速可擴展的應用程序和服務,釋放現代硬件的力量,并輕松實現算法。
Python 的局限性
引用一位系統架構師朋友的話:“項目的完美語言就是項目的完美語言。”
我們已經討論了 Python 的許多優勢,尤其是在數據科學和腳本領域的數字運算方面。但是沒有一種語言對所有應用程序都是完美的,Python 也不例外。了解 Python 的局限性將有助于開發人員更好地確定它是否適合他們的項目。Python 在性能、應用程序打包和項目管理方面受到影響,總結了它的局限性。其他缺點包括:
Python 是一種高級語言。因為它比低級語言更遠離硬件,所以速度較慢。
Python 不適合移動開發。
Python 使用靈活的數據類型,無法將其用于內存密集型任務。
高內存消耗。
Python 的數據庫訪問層是原始的。對于需要復雜遺留數據平滑交互的企業來說,這不是一個好的選擇。
因為 Python 是動態類型的,所以它需要更多的測試并且只有在運行時才會出現錯誤。
盡管每種方法都可以采用優雅的解決方法,但對于依賴于讀取和操作任務關鍵型應用程序的遺留數據的移動開發或企業而言,Python 通常不是正確的選擇。
開始你的第一個 Python 項目
任何語言的入門都需要時間,雖然 Python 很容易上手,但建議初學者參考盡可能多的資源。要加入的一個學習資源是 PythonistaCafe,一個點對點學習社區。這個僅限邀請的小組提供了大量專門針對 Python 的練習、活動和聚會,所有這些都在隨處可見的最佳運行環境之一中進行。
請務必查看嘗試解決特定問題的項目。以下是要查看的開源項目的簡短列表:
OpenCog 正在創建具有人類能力的人工智能 (AGI) 項目。它用于 SingularityNET 項目和 Hanson Robotics 項目,為 Sophia 和其他機器人提供智能。
人工智能研究所(不來梅大學計算機科學學院的一部分)研究人工智能并舉辦旨在推進人工智能技術的研討會和活動。他們致力于支持現有的人工智能項目和教育。
Zulip 被稱為“世界上最高效的團隊聊天”,每天可以處理數千條實時消息。Zulip 為團隊提供了清晰的組織、異步通信和其他巨大優勢。
Magenta 是一個 Python 庫和研究項目。它的目標是使用人工智能來創作音樂和藝術。它可以創建圖像、歌曲,甚至生成繪圖,使藝術家能夠探索新的創作方式。
MailPile 是一個創新的電子郵件客戶端,專注于安全和私密的通信。它速度快,沒有廣告,并帶有強大的搜索功能、隱私和加密功能。
概括
開發人員學習新語言的三個主要原因:
因為他們必須:也許與您合作的開發團隊決定用 Python 構建一些東西,或者您正在申請的工作需要有 Python 經驗的開發人員。
為了好玩:如果你感到無聊或只是想嘗試 AI、ML 或 DL,Python 會叫你的名字。
解決問題:也許您在項目中使用的語言遇到了障礙。Python 可能值得一試。
審核編輯:郭婷
-
AI
+關注
關注
87文章
31325瀏覽量
269683 -
人工智能
+關注
關注
1793文章
47532瀏覽量
239301 -
python
+關注
關注
56文章
4802瀏覽量
84890
發布評論請先 登錄
相關推薦
評論