天天看點

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

雲栖号資訊:【 點選檢視更多行業資訊

在這裡您可以找到不同行業的第一手的上雲資訊,還在等什麼,快來!

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

有人曾經将程式設計比作做菜,那程式設計語言就是首先要準備的食材或廚具。

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

盡管在剛開始開發 AI 時,有很多程式設計語言都可以滿足你的需求,但沒有一種程式設計語言是可以一站式解決 AI 程式設計的問題,因為在每一個項目中,不同的目标需要特定的方法。

和做菜時的精挑細選一樣,在成為一個「高手」的過程中,我們要學會的是找到最适合自己的程式設計語言。

Python

Python 是可讀的最強大的語言。—Pau Dubois

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

Python程式設計。圖源:Unsplash。

Python 開發于 1991 年,一項民意調查表明,在開發 AI 時,超過 57% 的開發者将 Python 作為首選程式設計語言,而不是 C++。因為易于學習,Python 讓程式員和資料科學家可以更輕松地進入開發 AI 的世界。

Python 是一個程式員需要多少自由度的「實驗」。太自由,沒人可以讀懂别人的代碼;太不自由,就會沒那麼強的表現力。—Guido van Rossum

使用 Python,你不僅可以獲得優秀的社群支援和廣泛的庫集,還能享受到其靈活性。你從 Python 中得到的最大的好處可能是平台獨立性和針對深度學習和機器學習的廣泛架構。

用 Python 編碼的樂趣在于可以看到短小精悍、可讀性高的類,這些類可以用少量清晰的代碼表達大量行為(而不是用大量代碼煩死讀者)。——Guido van RossumPython

代碼片段示例:

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

Python 代碼段落示例。

常用的庫

TensorFlow——用于機器學習工作負載和用資料集處理;

scikit-learn——訓練機器學習模型;

PyTorch——計算機視覺和自然語言處理;

Keras——高度複雜性的數學計算和操作的代碼接口;

SparkMLib——類似 Apache Spark 的機器學習庫,通過算法和實用程式等工具,讓每一個人都能輕松地進行機器學習;

MXNet——Apache 的另一個庫,可以簡化深度學習流程;

Theano——定義、優化和評價數學表達式的庫;

Pybrain——用于強大的機器學習算法。

另外,根據 GitHub 庫的貢獻度,Python 已經超越了 Java,成為世界第二受歡迎的語言。

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

Java

編寫一次,随時運作。

Java 被公認為世界上最好的程式設計語言之一,它在過去 20 年間的使用情況就是最好的證明。

憑借其使用者友好度、靈活的特性以及平台獨立性,Java 以各種方式參與到了 AI 的開發中,比如:

TensorFlow——TensorFlow 支援的程式設計語言中也列出了帶有 API 的 Java。雖然不像其他完全支援的語言那樣功能豐富,但确實支援 Java,并且在迅速地改進。

Deep Java Library(深度 Java 庫)——亞馬遜開發的、用 Java 來建立并部署深度學習能力的庫。

Kubeflow——Kubeflow 使在 Kubernetes 上部署和管理機器學習堆棧更容易,還提供了現成的 ML 解決方案。

OpenNLP——Apache 的 OpenNLP 是用于自然語言處理的機器學習工具。

Java Machine Learning Library(Java 機器學習庫)——Java-ML 為開發者提供了多種機器學習算法。

Neuroph——Neuroph 借助 Neuroph GUI,利用 Java 開源架構設計了神經網絡。

如果 Java 可以垃圾回收,大多數程式都會在執行時删除自己。——Robert SewellJava

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

R

Ross Ihaka 和 Robert Gentleman 在 1995 年釋出了第一版 R 語言。現在由 R 開發核心隊伍維護,R 是 S 程式設計語言的實作,用于統計軟體的開發和資料的分析。

R 的基礎特征是善于處理大量資料,相比 Python 中不夠完善的 NumPy 包,R 是更好的選擇;你可以用 R 處理各種不同的程式設計範式,比如函數式程式設計、矢量計算和面向對象程式設計等。

R 适用的 AI 程式設計包:

  • Gmodels——提供了一系列拟合模型用的工具;
  • Tm——文本挖掘應用的架構;
  • RODBC——R 的 ODBC 接口;
  • OneR——用來實作單規則機器學習分類算法,适用于機器學習模型。
  • 在資料挖掘者和統計學家中,廣泛使用的 R 的功能有:
  • 多種用于擴充功能的庫和包;活躍的支援社群;
  • 能和 C、C++ 和 Fortran 協同工作;
  • 多個有助于擴充功能的包;
  • 支援生成高品質的圖形。

Prolog

邏輯程式設計(Logic Programming)的簡稱。Prolog 最早出現在 1972 年,适用于開發人工智能,尤其是自然語言處理。Prolog 最适合建立聊天機器人,ELIZA 是有史以來第一個用 Prolog 建立的聊天機器人。

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

第一個成功的聊天機器人。

為了了解 Prolog,你必須熟悉一些指導 Prolog 工作的基本術語:

  • 事實(Fact)定義了正确的陳述;
  • 規則(Rule)定義了有附加條件的陳述;
  • 目标(Goal)根據知識庫定義了送出陳述的位置;
  • 查詢(Query)定義了如何使你的陳述正确,以及對事實和規則的最終分析。

Prolog 提供了兩種實作 AI 的方法,這兩種方法已經實作很久了,并且在資料科學家和研究人員中廣為人知:

  • 符号方法包括基于規則的專家系統、定理證明和基于限制的方法;
  • 統計方法包括神經網絡、資料挖掘、機器學習以及其他方法。

Lisp

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

用 Lisp 編碼建立有 n 個輸入 m 個單元的一層感覺機。

清單處理(List Processing)的簡稱。這是繼 Fortran 後第二古老的程式設計語言。也被稱作 AI 的奠基語言之一,由 John McCarthy 與 1958 年建立。

Lisp 是用來實作不可能的語言。——Kent Pitman

Lisp 是可以程式設計的實用數學符号,很快就成為了開發人員首選的 AI 程式設計語言。Lisp 因為其特有的功能,成為機器學習 AI 項目的最佳選擇之一:

  • 快速建立原型;
  • 建立動态對象;
  • 垃圾回收;
  • 靈活性。

随着其他競争的程式設計語言的重大改進,其他語言內建了 Lisp 特有的一些功能。涉及到 Lisp 的著名項目有 Reddit 和 HackerNews。

說到 Lisp,這是世界上最美的語言——至少在 Haskell 出現之前是這樣。——Larry WallHaskell

Haskell

建立于 1990 年,以著名數學家 Haskell Brooks Curry 的名字命名。Haskell 是純粹的函數式和靜态類型的程式設計語言,與惰性計算和短代碼配合使用。

Haskell 是一種非常安全的程式設計語言,因為和其他程式設計語言相比,Haskell 很少出現錯誤,是以在處理錯誤方面提供了更大的靈活性。即便發生了錯誤,也可以在編譯(而非運作)時捕獲大多數非文法錯誤。Haskell 提供的功能包括:

  • 強大的抽象能力;
  • 内置的記憶體管理;
  • 代碼的可重用性;
  • 易于了解。

SQL、Lisp 和 Haskell 是我所見過的唯一可以把時間花在思考而不是打字上的程式設計語言。——Philip Greenspun

Haskell 的功能有助于提高程式員的生産率。Haskell 與其他程式設計語言非常相似,但隻有一小部分開發人員使用。撇開挑戰不談,随着開發者社群使用率的增加,可以證明 Haskell 和其他用于 AI 的競争語言一樣出色。

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

Julia

Julia 是一種高性能的通用動态程式設計語言,可以建立幾乎任何應用,但最适合進行數值分析和計算科學。和 Julia 一起使用的工具還包括:

  • 像 Vim 和 Emacs 這樣流行的編輯器;
  • 像 Juno 和 Visual Studio 這樣的 IDE。
選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

Julia 源代碼組織。

Julia 中有一些功能使其成為 AI 程式設計、機器學習、統計和資料模組化的重要選擇,這些功能有:

  • 動态類型系統;
  • 内置的包管理器;
  • 能夠進行并行和分布式計算;
  • 宏和元程式設計能力;
  • 支援多分派;
  • 直接支援 C 函數。

Julia 是為了消除其他程式設計語言的弱點而建構的,和其他工具(如 TensorFlow.jl、MLBase.jl 和 MXNet.jl)內建後還可以用于機器學習,利用 Julia 的可伸縮性還可以做更多事。

選Python還是選Java?2020年,頂尖程式員最應該掌握的7種程式設計語言

總結

AI 工程師和科學家可以根據項目的需求,從多種程式設計語言中進行選擇。每一種 AI 程式設計語言都有優缺點。随着這些語言的不斷改進,AI 開發很快就可以有更舒适的體驗,這樣就會有更多人加入這一創新浪潮。出色的社群支援使新人們可以更好地工作,社群對包和擴充的貢獻讓每個人的工作都變得更加輕松。

【雲栖号線上課堂】每天都有産品技術專家分享!

課程位址:

https://yqh.aliyun.com/zhibo

立即加入社群,與專家面對面,及時了解課程最新動态!

【雲栖号線上課堂 社群】

https://c.tb.cn/F3.Z8gvnK

原文釋出時間:2020-04-07

本文作者:機器之心

本文來自:“

掘金

”,了解相關資訊可以關注“