自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

選Python還是選Java?2020年,優(yōu)秀程序員最應(yīng)該掌握的7種編程語(yǔ)言

新聞 人工智能
哪種編程語(yǔ)言最好?這個(gè)問(wèn)題可能永遠(yuǎn)不會(huì)有答案。蘿卜白菜,各有所愛(ài),AI 工程師和科學(xué)家可以根據(jù)項(xiàng)目需要,從眾多編程語(yǔ)言中選擇最適合自己的。

哪種編程語(yǔ)言最好?這個(gè)問(wèn)題可能永遠(yuǎn)不會(huì)有答案。蘿卜白菜,各有所愛(ài),AI 工程師和科學(xué)家可以根據(jù)項(xiàng)目需要,從眾多編程語(yǔ)言中選擇最適合自己的。

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

有人曾經(jīng)將編程比作做菜,那編程語(yǔ)言就是首先要準(zhǔn)備的食材或廚具。

C:一把菜刀一口炒鍋,一個(gè)很好用的灶,隔壁有個(gè)菜市場(chǎng)。

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

Python:大超市的速凍柜臺(tái),要成品有成品,要半成品有半成品,什么都有。它能讓你快速獲得一桌還能吃的飯,但是深究口味火候什么的不那么容易。

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

盡管在剛開(kāi)始開(kāi)發(fā) AI 時(shí),有很多編程語(yǔ)言都可以滿足你的需求,但沒(méi)有一種編程語(yǔ)言是可以一站式解決 AI 編程的問(wèn)題,因?yàn)樵诿恳粋€(gè)項(xiàng)目中,不同的目標(biāo)需要特定的方法。

和做菜時(shí)的精挑細(xì)選一樣,在成為一個(gè)「高手」的過(guò)程中,我們要學(xué)會(huì)的是找到最適合自己的編程語(yǔ)言。

Python

Python 是可讀的最強(qiáng)大的語(yǔ)言。—Pau Dubois

[[321333]]

Python 編程。圖源:Unsplash。

Python 開(kāi)發(fā)于 1991 年,一項(xiàng)民意調(diào)查表明,在開(kāi)發(fā) AI 時(shí),超過(guò) 57% 的開(kāi)發(fā)者將 Python 作為首選編程語(yǔ)言,而不是 C++。因?yàn)橐子趯W(xué)習(xí),Python 讓程序員和數(shù)據(jù)科學(xué)家可以更輕松地進(jìn)入開(kāi)發(fā) AI 的世界。

Python 是一個(gè)程序員需要多少自由度的「實(shí)驗(yàn)」。太自由,沒(méi)人可以讀懂別人的代碼;太不自由,就會(huì)沒(méi)那么強(qiáng)的表現(xiàn)力。—Guido van Rossum

使用 Python,你不僅可以獲得優(yōu)秀的社區(qū)支持和廣泛的庫(kù)集,還能享受到其靈活性。你從 Python 中得到的最大的好處可能是平臺(tái)獨(dú)立性和針對(duì)深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的廣泛框架。

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

Python 代碼片段示例:

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

常用的庫(kù)

  • TensorFlow——用于機(jī)器學(xué)習(xí)工作負(fù)載和用數(shù)據(jù)集處理;
  • scikit-learn——訓(xùn)練機(jī)器學(xué)習(xí)模型;
  • PyTorch——計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理;
  • Keras——高度復(fù)雜性的數(shù)學(xué)計(jì)算和操作的代碼接口;
  • SparkMLib——類似 Apache Spark 的機(jī)器學(xué)習(xí)庫(kù),通過(guò)算法和實(shí)用程序等工具,讓每一個(gè)人都能輕松地進(jìn)行機(jī)器學(xué)習(xí);
  • MXNet——Apache 的另一個(gè)庫(kù),可以簡(jiǎn)化深度學(xué)習(xí)流程;
  • Theano——定義、優(yōu)化和評(píng)價(jià)數(shù)學(xué)表達(dá)式的庫(kù);
  • Pybrain——用于強(qiáng)大的機(jī)器學(xué)習(xí)算法。

另外,根據(jù) GitHub 庫(kù)的貢獻(xiàn)度,Python 已經(jīng)超越了 Java,成為世界第二受歡迎的語(yǔ)言。Stack Overflow 將 Python 稱為「成長(zhǎng)最快」的主流編程語(yǔ)言。

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

Java

編寫一次,隨時(shí)運(yùn)行。

Java 被公認(rèn)為世界上最好的編程語(yǔ)言之一,它在過(guò)去 20 年間的使用情況就是最好的證明。

憑借其用戶友好度、靈活的特性以及平臺(tái)獨(dú)立性,Java 以各種方式參與到了 AI 的開(kāi)發(fā)中,比如:

  • TensorFlow——TensorFlow 支持的編程語(yǔ)言中也列出了帶有 API 的 Java。雖然不像其他完全支持的語(yǔ)言那樣功能豐富,但確實(shí)支持 Java,并且在迅速地改進(jìn)。
  • Deep Java Library(深度 Java 庫(kù))——亞馬遜開(kāi)發(fā)的、用 Java 來(lái)創(chuàng)建并部署深度學(xué)習(xí)能力的庫(kù)。
  • Kubeflow——Kubeflow 使在 Kubernetes 上部署和管理機(jī)器學(xué)習(xí)堆棧更容易,還提供了現(xiàn)成的 ML 解決方案。
  • OpenNLP——Apache 的 OpenNLP 是用于自然語(yǔ)言處理的機(jī)器學(xué)習(xí)工具。
  • Java Machine Learning Library(Java 機(jī)器學(xué)習(xí)庫(kù))——Java-ML 為開(kāi)發(fā)者提供了多種機(jī)器學(xué)習(xí)算法。
  • Neuroph——Neuroph 借助 Neuroph GUI,利用 Java 開(kāi)源框架設(shè)計(jì)了神經(jīng)網(wǎng)絡(luò)。
  • 如果 Java 可以垃圾回收,大多數(shù)程序都會(huì)在執(zhí)行時(shí)刪除自己。——Robert Sewell

Java 代碼片段示例:

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

R語(yǔ)言

Ross Ihaka 和 Robert Gentleman 在 1995 年發(fā)布了第一版 R 語(yǔ)言。現(xiàn)在由 R 開(kāi)發(fā)核心隊(duì)伍維護(hù),R 是 S 編程語(yǔ)言的實(shí)現(xiàn),用于統(tǒng)計(jì)軟件的開(kāi)發(fā)和數(shù)據(jù)的分析。

R 的基礎(chǔ)特征是善于處理大量數(shù)據(jù),相比 Python 中不夠完善的 NumPy 包,R 是更好的選擇;你可以用 R 處理各種不同的編程范式,比如函數(shù)式編程、矢量計(jì)算和面向?qū)ο缶幊痰取?/p>

R 適用的 AI 編程包:

  • Gmodels——提供了一系列擬合模型用的工具;
  • Tm——文本挖掘應(yīng)用的框架;
  • RODBC——R 的 ODBC 接口;
  • OneR——用來(lái)實(shí)現(xiàn)單規(guī)則機(jī)器學(xué)習(xí)分類算法,適用于機(jī)器學(xué)習(xí)模型。

在數(shù)據(jù)挖掘者和統(tǒng)計(jì)學(xué)家中,廣泛使用的 R 的功能有:

  • 多種用于擴(kuò)展功能的庫(kù)和包;
  • 活躍的支持社區(qū);
  • 能和 C、C++ 和 Fortran 協(xié)同工作;
  • 多個(gè)有助于擴(kuò)展功能的包;
  • 支持生成高質(zhì)量的圖形。

Prolog

邏輯編程(Logic Programming)的簡(jiǎn)稱。Prolog 最早出現(xiàn)在 1972 年,適用于開(kāi)發(fā)人工智能,尤其是自然語(yǔ)言處理。Prolog 最適合創(chuàng)建聊天機(jī)器人,ELIZA 是有史以來(lái)第一個(gè)用 Prolog 創(chuàng)建的聊天機(jī)器人。

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

第一個(gè)成功的聊天機(jī)器人。

為了理解 Prolog,你必須熟悉一些指導(dǎo) Prolog 工作的基本術(shù)語(yǔ):

  • 事實(shí)(Fact)定義了正確的陳述;
  • 規(guī)則(Rule)定義了有附加條件的陳述;
  • 目標(biāo)(Goal)根據(jù)知識(shí)庫(kù)定義了提交陳述的位置;
  • 查詢(Query)定義了如何使你的陳述正確,以及對(duì)事實(shí)和規(guī)則的最終分析。

Prolog 提供了兩種實(shí)現(xiàn) AI 的方法,這兩種方法已經(jīng)實(shí)現(xiàn)很久了,并且在數(shù)據(jù)科學(xué)家和研究人員中廣為人知:

  • 符號(hào)方法包括基于規(guī)則的專家系統(tǒng)、定理證明和基于約束的方法;
  • 統(tǒng)計(jì)方法包括神經(jīng)網(wǎng)絡(luò)、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)以及其他方法。

Lisp

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

用 Lisp 編碼創(chuàng)建有 n 個(gè)輸入 m 個(gè)單元的一層感知機(jī)。

列表處理(List Processing)的簡(jiǎn)稱。這是繼 Fortran 后第二古老的編程語(yǔ)言。也被稱作 AI 的奠基語(yǔ)言之一,由 John McCarthy 與 1958 年創(chuàng)建。

Lisp 是用來(lái)實(shí)現(xiàn)不可能的語(yǔ)言。——Kent Pitman

Lisp 是可以編程的實(shí)用數(shù)學(xué)符號(hào),很快就成為了開(kāi)發(fā)人員首選的 AI 編程語(yǔ)言。Lisp 因?yàn)槠涮赜械墓δ?,成為機(jī)器學(xué)習(xí) AI 項(xiàng)目的最佳選擇之一:

  • 快速創(chuàng)建原型;
  • 創(chuàng)建動(dòng)態(tài)對(duì)象;
  • 垃圾回收;
  • 靈活性。

隨著其他競(jìng)爭(zhēng)的編程語(yǔ)言的重大改進(jìn),其他語(yǔ)言集成了 Lisp 特有的一些功能。涉及到 Lisp 的著名項(xiàng)目有 Reddit 和 HackerNews。

說(shuō)到 Lisp,這是世界上最美的語(yǔ)言——至少在 Haskell 出現(xiàn)之前是這樣。——Larry Wall

Haskell

Haskell 創(chuàng)建于 1990 年,以著名數(shù)學(xué)家 Haskell Brooks Curry 的名字命名。Haskell 是純粹的函數(shù)式和靜態(tài)類型的編程語(yǔ)言,與惰性計(jì)算和短代碼配合使用。

Haskell 是一種非常安全的編程語(yǔ)言,因?yàn)楹推渌幊陶Z(yǔ)言相比,Haskell 很少出現(xiàn)錯(cuò)誤,所以在處理錯(cuò)誤方面提供了更大的靈活性。即便發(fā)生了錯(cuò)誤,也可以在編譯(而非運(yùn)行)時(shí)捕獲大多數(shù)非語(yǔ)法錯(cuò)誤。Haskell 提供的功能包括:

  • 強(qiáng)大的抽象能力;
  • 內(nèi)置的內(nèi)存管理;
  • 代碼的可重用性;
  • 易于理解。

SQL、Lisp 和 Haskell 是我所見(jiàn)過(guò)的唯一可以把時(shí)間花在思考而不是打字上的編程語(yǔ)言。——Philip Greenspun

Haskell 的功能有助于提高程序員的生產(chǎn)率。Haskell 與其他編程語(yǔ)言非常相似,但只有一小部分開(kāi)發(fā)人員使用。撇開(kāi)挑戰(zhàn)不談,隨著開(kāi)發(fā)者社區(qū)使用率的增加,可以證明 Haskell 和其他用于 AI 的競(jìng)爭(zhēng)語(yǔ)言一樣出色。

Julia

Julia 是一種高性能的通用動(dòng)態(tài)編程語(yǔ)言,可以創(chuàng)建幾乎任何應(yīng)用,但最適合進(jìn)行數(shù)值分析和計(jì)算科學(xué)。和 Julia 一起使用的工具還包括:

  • 像 Vim 和 Emacs 這樣流行的編輯器;
  • 像 Juno 和 Visual Studio 這樣的 IDE。

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

Julia 源代碼組織。

Julia 中有一些功能使其成為 AI 編程、機(jī)器學(xué)習(xí)、統(tǒng)計(jì)和數(shù)據(jù)建模的重要選擇,這些功能有:

  • 動(dòng)態(tài)類型系統(tǒng);
  • 內(nèi)置的包管理器;
  • 能夠進(jìn)行并行和分布式計(jì)算;
  • 宏和元編程能力;
  • 支持多分派;
  • 直接支持 C 函數(shù)。

Julia 是為了消除其他編程語(yǔ)言的弱點(diǎn)而構(gòu)建的,和其他工具(如 TensorFlow.jl、MLBase.jl 和 MXNet.jl)集成后還可以用于機(jī)器學(xué)習(xí),利用 Julia 的可伸縮性還可以做更多事。

选Python还是选Java?2020年,顶尖程序员最应该掌握的7种编程语言

谷歌趨勢(shì)——Julia 的使用趨勢(shì)。

總結(jié)

AI 工程師和科學(xué)家可以根據(jù)項(xiàng)目的需求,從多種編程語(yǔ)言中進(jìn)行選擇。每一種 AI 編程語(yǔ)言都有優(yōu)缺點(diǎn)。隨著這些語(yǔ)言的不斷改進(jìn),AI 開(kāi)發(fā)很快就可以有更舒適的體驗(yàn),這樣就會(huì)有更多人加入這一創(chuàng)新浪潮。出色的社區(qū)支持使新人們可以更好地工作,社區(qū)對(duì)包和擴(kuò)展的貢獻(xiàn)讓每個(gè)人的工作都變得更加輕松。

 

責(zé)任編輯:張燕妮 來(lái)源: 機(jī)器之心
相關(guān)推薦

2021-10-26 16:25:25

編程語(yǔ)言JavaPython

2019-11-11 09:45:06

程序員相親擇偶

2009-06-19 14:38:20

Java程序員

2020-01-15 14:40:05

Java技術(shù)框架

2014-11-10 09:46:57

程序員

2021-07-05 15:10:11

編程語(yǔ)言技巧

2016-01-18 11:03:58

程序員搜索技巧

2021-02-18 00:19:40

編程語(yǔ)言程序員工具

2015-10-28 09:33:31

程序員崩潰編程語(yǔ)言

2022-05-23 07:56:19

語(yǔ)言DSLClojure

2009-05-13 11:40:19

編程語(yǔ)言開(kāi)發(fā)語(yǔ)言Perl

2014-11-26 09:45:48

程序員

2019-10-16 16:25:54

爬蟲(chóng)房源程序員

2021-04-27 15:28:32

程序員技能開(kāi)發(fā)者

2021-10-20 06:05:01

編程語(yǔ)言開(kāi)發(fā)

2014-12-04 10:02:55

2020-07-16 10:29:55

程序員編程語(yǔ)言工資

2020-01-12 19:48:13

編程語(yǔ)言RustPython

2017-12-06 10:43:51

程序員軟技能

2015-08-20 09:06:48

程序員
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)