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

2020-12-25 澎湃新聞

機器之心

選自Medium

作者:Claire D

機器之心編譯

參與:李詩萌、蛋醬

哪種程式語言最好?這個問題可能永遠不會有答案。蘿蔔白菜,各有所愛,AI 工程師和科學家可以根據項目需要,從眾多程式語言中選擇最適合自己的。

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

C:一把菜刀一口炒鍋,一個很好用的灶,隔壁有個菜市場。

Java:碎菜器,切菜機,絞肉機,和面機,烤箱,微波爐……

Python:大超市的速凍櫃檯,要成品有成品,要半成品有半成品,什麼都有。它能讓你快速獲得一桌還能吃的飯,但是深究口味火候什麼的不那麼容易。

C++:一套頂級廚具,光刀就十幾把,切肉的切片的雕花的;鍋有爆炒的悶燒的平底煎肉的煎蛋的燉湯的……有人試圖用二十一天掌握這套工具的用法,結果往往是玩刀傷了自己,或者是炸了廚房。

選自知乎用戶:https://www.zhihu.com/question/284549387/answer/451018336

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

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

Python

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

Python 編程。圖源:Unsplash。

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

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

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

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

Python 代碼片段示例:

Python 代碼段落示例。

常用的庫

TensorFlow——用於機器學習工作負載和用數據集處理;

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

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

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

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

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

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

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

另外,根據 GitHub 庫的貢獻度,Python 已經超越了 Java,成為世界第二受歡迎的語言。Stack Overflow 將 Python 稱為「成長最快」的主流程式語言。

Python 入門課程

《三門免費的 Python 入門課程:2020 版》

課程連結:https://hackernoon.com/3-free-python-courses-for-beginners-2020-edition-j7c23y3u

《完整 Python 訓練營:用 Python 3 從小白到大師》

課程連結:https://www.udemy.com/course/complete-python-bootcamp/?LSNPUBID=JVFxdTr9V80&ranEAID=JVFxdTr9V80&ranMID=39197&ranSiteID=JVFxdTr9V80-lB6TwxSdouentAk36.qjmw

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 Sewell

Java 代碼片段示例:

Java 代碼段示例。

Java 入門課程

《五大在線 Java 編程入門課程——最好的》

課程連結:https://javarevisited.blogspot.com/2018/05/top-5-java-courses-for-beginners-to-learn-online.html

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 創建的聊天機器人。

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

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

事實(Fact)定義了正確的陳述;

規則(Rule)定義了有附加條件的陳述;

目標(Goal)根據知識庫定義了提交陳述的位置;

查詢(Query)定義了如何使你的陳述正確,以及對事實和規則的最終分析。

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

符號方法包括基於規則的專家系統、定理證明和基於約束的方法;

統計方法包括神經網絡、數據挖掘、機器學習以及其他方法。

Lisp

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

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

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

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

快速創建原型;

創建動態對象;

垃圾回收;

靈活性。

隨著其他競爭的程式語言的重大改進,其他語言集成了 Lisp 特有的一些功能。涉及到 Lisp 的著名項目有 Reddit 和 HackerNews。

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

Haskell

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

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

強大的抽象能力;

內置的內存管理;

代碼的可重用性;

易於理解。

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

Haskell 的功能有助於提高程式設計師的生產率。Haskell 與其他程式語言非常相似,但只有一小部分開發人員使用。撇開挑戰不談,隨著開發者社區使用率的增加,可以證明 Haskell 和其他用於 AI 的競爭語言一樣出色。

Julia

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

像 Vim 和 Emacs 這樣流行的編輯器;

像 Juno 和 Visual Studio 這樣的 IDE。

Julia 原始碼組織。

Julia 中有一些功能使其成為 AI 編程、機器學習、統計和數據建模的重要選擇,這些功能有:

動態類型系統;

內置的包管理器;

能夠進行並行和分布式計算;

宏和元編程能力;

支持多分派;

直接支持 C 函數。

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

谷歌趨勢——Julia 的使用趨勢。

總結

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

參考連結:

https://towardsdatascience.com/top-programming-languages-for-ai-engineers-in-2020-33a9f16a80b0

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

✄------------------------------------------------

加入機器之心(全職記者 / 實習生):hr@jiqizhixin.com

投稿或尋求報導:content@jiqizhixin.com

廣告 & 商務合作:bd@jiqizhixin.com

原標題:《選Python還是選Java?2020年,頂尖程式設計師最應該掌握的7種程式語言》

閱讀原文

相關焦點

  • 程式設計師入門選擇哪一門程式語言?一定要從C語言開始嗎?
    學編程先從哪裡開始入手呢,選擇什麼程式語言會好點呢?一直以來,有那麼一部分新手程式設計師會經歷這方面的困惑,選擇一門程式語言確實是一個非常大的課題。程式設計師選擇哪一門程式語言入門?但是畢竟你要面對的現實是,學C語言離做出成品還很遙遠呢~即使C語言是一門非常好的程式語言,但是它對於沒有接觸過編程的新手、或者急於就業的程式設計師來說,未必適合拿來入門。而只有當你編程實踐到了一定的水平,再過頭學習C語言,會讓你對編程的理解更進一步。
  • 月入過萬的程式語言PHP、Python、Java到底該選擇哪一個
    是太陽系最好的語言php?還是在編程江湖名稱響噹噹的Python?還是很早就玩起對象模式的java?同學們是不是已經一頭霧水了呢?下面我們來分析下各個語言的優劣勢說到php,大家第一反應是「世界上最好的語言」,沒毛病,它就是啊,php是開發最快速的語言,很多中小型創業公司首選的第一語言。
  • 程式設計師需要學什麼?10年老技術分享,關於語言的選擇與發展方向
    關於學習語言的選擇與發展方向。選一門適合你的基礎程式語言學會編程是程式設計師必備技能,但是程式語言太多,實際應用也不盡相同,作為新手建議大家首先選擇一門基礎程式語言熟練運用為好,這裡不是說基礎的就是差的但是沒有基礎那是啥都做不好的。給大家推薦幾種基礎語言以及以後的發展方向.
  • 2020年十大物聯網程式語言
    作為一個新興產業,物聯網的發展可以說非常迅猛,對於物聯網編程就有好多種語言可以選擇,下面筆者列出2020年你應該了解或者去掌握的十大物聯網程式語言。因為Golang具有內置的並發性和出色的性能,可最大限度地提高硬體利用率,從而使該語言非常適合IoT設備的卡法。該語言既有出色的性能,同時又有著高效的開發效率,可以說它是除了c語言之外人們最看好的物聯網開發語言。
  • 想成為一名程式設計師或黑客 應該具備哪些技能?
    這一張18年6月28日的截取自TIOBE 網站的程式語言排名的圖片,它展示了每一種語言在當前的使用佔比。首先是java,java在中國藉助淘寶以及本國國情的情況下得到了很大的推動,它的特色在於服務端應用程式的並發處理上,有著多套非常成熟的完善的服務端開發框架以及擴展類庫,同時也能夠開發安卓平臺的應用程式,這個佔比應該是兩個主要的應用場景加起來的。
  • 為什麼Java、Python會成為程式設計師最害怕的程式語言?
    最不受歡迎 / 最令人畏懼的程式語言有哪些?這些程式語言為什麼令人畏懼?對它們的評價是否公正?在 StackOverflow 的 2020 年度開發者調查中,有一張表格,顯示的是「最受歡迎、最令人畏懼和最想要的程式語言」。最受歡迎的和最想要的程式語言,嗯,是有點無聊。倒是那個最令人畏懼的就有意思多了。
  • 程式設計師應該學習的5種程式語言
    了解一種或者真正的編碼語言是很好的,但作為一個真正的多語言開發人員是如何實現真正的主要狀態。我在某處讀到程式設計師應該每年學習一種新的程式語言(我認為它的代碼完整,但不確定),但如果你不能這樣做,我建議你至少學習以下五種程式語言,以便在你的職業生涯中取得好成績。 。
  • 開課吧:最值得學的程式語言是什麼?程式語言通用學習方法分享!
    如果您對編程有興趣,想要以後致力於編程這個方向,那是肯定要下一番苦功夫的。說實話沒有一門程式語言是好學的,要是那麼簡單就可以學會了,那是個人就是程式設計師了。最值得學的程式語言是什麼呢?零基礎學習編程首先要選對自己的方向,目前整體的方向上分為前端開發,後端開發,大數據,雲計算,人工智慧,運維測試等等,自己要選定好這個方向,選定好了,再去選擇一門語言去學習。
  • 你相信世界上有600多種程式語言麼?
    程式語言俗稱「計算機語言」,種類非常的多,總的來說可以分 成機器語言、彙編語言、高級語言三大類。電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合, 而程序全部都是用我們所掌握的語言來編寫的。
  • 4月程式語言排行榜出爐,Java漲幅一枝獨秀,PHP排名第7!
    近日,4 月程式語言排行榜出爐了。在此榜單上,Python排名第四,PHP排名第7。在各大程式語言中,Java語言的漲幅最大,堪稱一枝獨秀。對於此榜單,網友們也紛紛發表各自的一些看法:網友一:我大python會一統天下的!網友二:大家覺得java以後咋樣呢?
  • 零基礎準備學習編程,應該從哪門語言學起?
    在學習編程之前,我們還是要搞清楚一件事情,那就是你為什麼要學習編程?是想要獲得高額的薪水呢?還是自己對編程感興趣呢?或者兩者都是。目前在國內只要你是個程式設計師,那麼你基本上都能夠拿到一份不錯的薪資。對於大多數的轉行者來說,學習編程的目的就是想找一份高薪的工作,那麼肯定是哪個程式語言的就業前景好,就越值得學習。下面我們分析一下現在比較流行的程式語言,看看你到底適合哪門程式語言!目前主流的程式語言分別是:C語言、C++、Java、PHP、HTML5+JS、Python。這些也是目前市面上最流行的程式語言。
  • 程式設計師最不喜歡的語言為什麼是Java、Python?
    最不受歡迎 / 最令人畏懼的程式語言有哪些?這些程式語言為什麼令人畏懼?對它們的評價是否公正?在 StackOverflow 的 2020 年度開發者調查中,有一張表格,顯示的是「最受歡迎、最令人畏懼和最想要的程式語言」。最受歡迎的和最想要的程式語言,嗯,是有點無聊。倒是那個最令人畏懼的就有意思多了。
  • 大數據盤點|2020年最值得學習的5大程式語言
    出品 | CDA數據分析師今天給大家盤點2020年最值得學習的五大程式語言,掌握了這些語言你不僅能順利找到一份好的工作,而且還沒有相關學歷要求。從編程領域的個人發展來看,這是十分關鍵的,學多久你才能做出相關項目。當在創業公司和中小型公司工作時,你需要在很短時間內就能上手,做出可用的模型或應用。下面我們來具體盤一盤,看看2020年最值得學習的五大程式語言有哪些。
  • 開課吧:最值得學的程式語言是什麼?程式語言通用學習方法分享!
    如果您對編程有興趣,想要以後致力於編程這個方向,那是肯定要下一番苦功夫的。說實話沒有一門程式語言是好學的,要是那麼簡單就可以學會了,那是個人就是程式設計師了。最值得學的程式語言是什麼呢?零基礎學習編程首先要選對自己的方向,目前整體的方向上分為前端開發,後端開發,大數據,雲計算,人工智慧,運維測試等等,自己要選定好這個方向,選定好了,再去選擇一門語言去學習。
  • csdn最適合人工智慧開發的程式語言優缺點對比
    和大多數軟體應用程式開發一樣,開發人員正在用多種語言編寫人工智慧項目,但是沒有完美的程式語言能夠全速匹配人工智慧項目。程式語言的編程選擇通常取決於人工智慧應用程式的預期功能。關於最佳人工智慧程式語言的辯論從未停止過,因此本文比較了五個人工智慧項目最常用的程式語言,列出了它們的優缺點。
  • 程式設計師編程入門必知!程式設計師需要學什麼
    資訊時代的大背景下,計算機的應用顯得舉足輕重,精通計算機的人才對於龐大的市場需求量來說還是顯得很匱乏,因此計算機行業的前景是很可觀的,但是也有不少人對於編程處於一竅不通的狀態,那編程該從何入手呢?在從事其他一系列Web開發之前掌握好HTML非常重要。C——最古老的語言之一,它已經是非常強大的工具,也是一些更現代的語言的祖先,比如C++,C#和Objective-C。
  • TIOBE 11 月程式語言:Python超越Java!
    國內的情況我們可以參照下百度的搜索指數, 2017 年之前 Java 搜索指數還是高於 Python的,而 2018 年之後 Python 搜索指數迅速攀升,超過 Java 。 以下是 2019 年到 2020 年的搜索指數概覽:
  • 近50年來最具影響力的10種程式語言,都是誰發明的?
    軟體世界中有各種各樣的程式語言,每年還會有新的語言出現,最近發布的程式語言就有Scala、Kotlin、Go和Closure,但歷史車輪滾滾向前,浪花淘盡英雄,它們中只有少數才能夠存活下來。程式語言是軟體開發中最重要的東西,多年來伴隨著人們的討論和批評不斷改進,沒有最好的語言,只有更合適的語言。
  • 2020 年七大 AI 程式語言大盤點
    隨著近年來的發展,人工智慧促進企業的發展,這該歸功於底層程式語言核心的改進。隨著人工智慧的蓬勃發展和程式語言的持續改進,對高效、熟練的程式設計師和工程師的需求激增。雖然有很多程式語言可以讓你在人工智慧上開發領域輕鬆起步,但是沒有一種程式語言可以成為人工智慧編程的「一站式」解決方案,因為每種程式語言都有自己的獨特之處。目的不同,對語言的要求也會不同。
  • 關於php程式設計師要不要轉java
    ,要想掌握Java,應該注意以下三個問題:  第一:調整編程思路。  個人建議  這幾種情況你可以去轉向java    如果你使用php已經有一段時間,php已經限制了你的發展,可以去學習java轉向java或者其他語言。    如果你剛開始工作,剛做php,但是覺得php前景不那麼好,並且也有經濟支撐自己去學習,就去學。