成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java 之父最新訪談:JIT 很好,但不適合所有語言

開發(fā) 后端
James Gosling 在此次訪談中聊了大量關(guān)于編程語言的話題,例如對現(xiàn)代編程語言新特性的看法、怎么看待編程語言更新后引起的破壞性變更、為什么不是所有編程語言都使用 JIT 技術(shù)等。

James Gosling,加拿大計算機科學家,完成了 Java 的原始設(shè)計,并實現(xiàn)了 Java 最初版本的編譯器和虛擬機,也是公認的 “Java 之父”。

Evrone 是一家企業(yè)軟件開發(fā)公司,旗下?lián)渭夹g(shù)布道師 (DevRel) 的 Grigory Petrov 最近對 James Gosling 進行了采訪。

James Gosling 在此次訪談中聊了大量關(guān)于編程語言的話題,例如對現(xiàn)代編程語言新特性的看法、怎么看待編程語言更新后引起的破壞性變更、為什么不是所有編程語言都使用 JIT 技術(shù)等。

[[419668]]

Grigory:我們希望以軟件開發(fā)和軟件顧問的身份在俄羅斯組織 Python、Ruby、Java 和 Go 社區(qū)。通過這次采訪,我希望能展現(xiàn)這個行業(yè)的基本問題,進而為開發(fā)者同行提供幫助。你在 Java 領(lǐng)域的經(jīng)驗和工作經(jīng)歷可以幫助開發(fā)者變得更好,所以我們一起嘗試完成這個目標吧!

有些編程語言,例如 Go,舍棄了類和繼承這些特性。與此同時,其他語言則試驗了一些新特性,如 Rust 中的 traits。作為語言設(shè)計師,你認為編程語言應(yīng)該用怎樣的現(xiàn)代、通用、合理方式來進行組合(Composition)。

James:我應(yīng)該會繼續(xù)使用類,因為我發(fā)現(xiàn)類對于這種場景非常有效。事實上,對于如何做不同的事情,我沒有任何好的、清晰的想法。在 C 語言中,宏的存在幾乎是一場災難,因為宏不是語言的一部分,而是在語言之外的特性。Rust 正好希望通過合適的方式在語言中使用宏。

對于其他編程語言,如 Lisp 家族,它們有一套定義語法的方法,這些語法幾乎完全和語義無關(guān)。我曾經(jīng)寫過許多 Lisp,沉迷于用 Lisp 程序來操作 Lisp 程序的技術(shù)。有些語言能夠讓你以不同的方式做到這一點,像 Groovy,我們可以直接使用 AST。而 Rust 則具有語法集成的宏。

Lisp 通過運算代碼片段來生成新代碼,在 Java 領(lǐng)域,這種方式也會經(jīng)常被使用。雖然是非常底層的方法,不過卻很受歡迎。因為開發(fā)者可以對注解進行組合,并使用不同的語言生成字節(jié)碼,這是非常強大的技術(shù),經(jīng)常被用在意想不到的場景。例如 Jackson 框架,它通過計算序列化器提升了性能。

當然,這既是強大的技術(shù),但也非常難以駕馭。這個技術(shù)充滿可能性,但這種可能性是有限的。我對 Lombok 有著強烈的愛恨交加情感。它添加了許多優(yōu)秀的 Java 特性,但從另一方面來說,這也暴露了其弱點。因為有些特性本應(yīng)是內(nèi)置功能。

Grigory:我們最近采訪了 Ruby 的作者 Yukihiro Matsumoto,他提到他在最新的 Ruby 3.0 主要版本中做了一個實驗。他試圖在沒有引入破壞性變更的情況下發(fā)布這個版本,看看會發(fā)生什么。我知道 Java 對“破壞性”持謹慎態(tài)度。那么是否所有編程語言都要考慮兼容性的問題,每個大版本都兼容是一個好主意嗎?還是說這種情況只用于特定的語言,如 Ruby 或 Java?

James:這幾乎完全取決于開發(fā)者社區(qū)的規(guī)模。每一項重大變更都會給開發(fā)者帶去困擾,如果社區(qū)的開發(fā)者不多,那么破壞性更改不是大問題。另外還必須權(quán)衡成本效益。如果添加了某項破壞性的變更,它會增加負擔,但與此同時也會帶來一些好處,那么可以考慮。例如,如果將下標運算符從方括號更改為圓括號,它可能不會帶來任何好處,并且會引起開發(fā)者極大的困擾。那這就是一個愚蠢的變更。

舉個例子,JDK 9 引入了一個極其罕見的破壞性變更:如果開發(fā)者使用了一些所謂的隱藏 API,封裝機制就會被打亂,那些破壞封裝邊界,以不應(yīng)該使用的方式使用 API 的開發(fā)者,從 8 升級到 9 會碰到不少問題。

還有一種情況:當某處存在錯誤,并且開發(fā)者為該錯誤實現(xiàn)了變通方法。在這種情況下,如果修復了錯誤,那么有可能會對這些變通方法造成破壞。Java 也存在這種案例,我們的做法是要么不修復錯誤,要么引入正確的實現(xiàn)方法。

Grigory:我們來聊聊企業(yè)和產(chǎn)業(yè)的發(fā)展吧。我自己從未有過給機器人編程的經(jīng)歷,但我曾在為數(shù)百萬人創(chuàng)造軟件的公司工作了一段時間。拿今天和 20~25 年前來對比,我發(fā)現(xiàn)像 GitHub 這樣的社交編碼平臺得到了巨頭公司的支持,它幫助個人開發(fā)者和企業(yè)或工業(yè)軟件開發(fā)者進行開源開發(fā)。那么我們是否可以認為現(xiàn)在是開源軟件的黃金時代,你怎么看?

James:我不知道如何回答,因為這個問題涉及到未來。“現(xiàn)在是開源軟件的黃金時代”這個觀點隱含著“是不是從現(xiàn)在開始要走下坡路”的意思。如果現(xiàn)在是黃金時代,那么未來就不是黃金時代了嗎?

所以我的看法是,無論黃金時代是什么模樣,我們所處的環(huán)境正變得越來越好,一步步靠近理想中的“黃金時代”。目前,我們面臨著各種圍繞安全以及人類進行網(wǎng)絡(luò)恐怖主義的危機。當這種事情仍在發(fā)生或正在發(fā)生,我不認為這是黃金時代。如果有某種方式可以終結(jié)網(wǎng)絡(luò)恐怖主義——那將是非常“黃金”的時代,愿我們拭目以待。我想說的是,這是一個真正偉大的時代,但它可以變得更好。

Grigory:你在 Java 和 JVM 中使用了 JIT 技術(shù)。JIT 帶來了非常驚人的速度,并且不影響語言的優(yōu)雅語法和高級特性。許多編程語言都參考了 Java,例如 C# 和 JavaScript,它們通過熱路徑編譯對代碼進行重新編譯的速度接近 C 和 C++。但許多其他語言,如 Python、Ruby、PHP,雖然具備可選的 JIT,但沒有那么流行。許多主流編程語言也沒使用 JIT 來提升性能。所以,為什么不是所有編程語言都使用 JIT 來為開發(fā)者提供更快的速度?

James:事實上,靜態(tài)類型語言更適合通過 JIT 來提升性能。對于動態(tài)語言,比如 Python,這其實非常難。通常大家最終所做的是在語言中添加注解,這樣就會得到像 TypeScript 這種編程語言,它本質(zhì)上是帶有類型注解的 JavaScript。這很有趣,因為 JavaScript 本質(zhì)上是去除類型聲明的 Java。因此,TypeScript 本質(zhì)上是具有混合語法的 Java。

但如果你是一名用 Python 快速編寫腳本的開發(fā)者,在他們看來,聲明讓他們覺得很困擾,思考變量的類型是非常煩人的事情。腳本語言世界中的大多數(shù)開發(fā)者并不關(guān)心性能問題。他們更在意的是能否用最快的速度完成開發(fā),并不關(guān)心性能和相關(guān)的細節(jié)。

Grigory:有一個非技術(shù)問題。當我們談?wù)摬煌恼Z言時,在你個人看來,對于剛?cè)腴T的開發(fā)者或者相關(guān)專業(yè)的學生而言,該選擇什么語言作為他們學習的第一門語言?

James:對這個問題的回答我肯定會有一點偏心,畢竟 Java 已經(jīng)被成功地使用了這么多年。但我本人學習的第一門編程語言是 PDP-8 匯編代碼,差不多同一時期還學習了 Fortran。所以我認為對于初學者,可以教他們?nèi)魏螙|西,因為每個人的學習能力不一樣。

不過在這個問題上,我覺得要更多地考慮初學者未來的職業(yè)道路。如果希望成為一名全面發(fā)展的軟件開發(fā)者,去構(gòu)建一款大型的高性能系統(tǒng),那么 JVM 語言是無法繞過去的,無論學習的是何種 JVM 語言。例如 Clojure、Scala 和 Kotlin。但如果是一名物理專業(yè)的學生,我會對他說 Python 也很不錯。

事實上,我認為選擇哪門編程語言作為第一門學習的語言并不是什么大問題。雖然許多人會一直堅持使用自己學習的第一門語言,但如果能夠他們學習多門語言,并來回切換使用,這其實更好。我甚至覺得大學應(yīng)該開設(shè)比較編程語言優(yōu)劣的課程。課程內(nèi)容是用 5 種不同的編程語言完成作業(yè),這樣的課程設(shè)計能讓學生快速學習這些語言,因為它們其實也沒有太大的區(qū)別。不過學生通過這種方式會思考語言的優(yōu)缺點。

很久以前我上過這樣的課程,例如使用 Cobol 完成數(shù)值計算,使用 Fortran 完成符號操作,對于這兩種語言來說,這些任務(wù)都不是它們擅長的領(lǐng)域,但我最后還是拿到了 A 的成績。

本文轉(zhuǎn)自O(shè)SCHINA

本文標題:Java 之父最新訪談:JIT 很好,但不適合所有語言

本文地址:https://www.oschina.net/news/157340/james-gosling-interview-evrone

責任編輯:未麗燕 來源: 開源中國
相關(guān)推薦

2013-12-09 10:16:03

Android firAndroid開發(fā)移動創(chuàng)業(yè)

2013-08-16 10:00:45

VMwareOpenStack

2015-03-12 13:39:48

Hadoop場景大數(shù)據(jù)

2021-01-31 18:52:36

Rust開發(fā)Web API

2018-07-29 07:58:34

物聯(lián)網(wǎng)IOT物聯(lián)網(wǎng)產(chǎn)品

2009-01-15 18:30:11

服務(wù)器虛擬化VMware

2010-07-20 09:56:53

VDI部署

2022-07-12 14:04:19

Kafka

2013-08-13 14:33:17

程序員

2022-11-07 10:20:20

useEffects

2012-03-13 15:28:47

Kindle Fire傲游

2016-11-04 09:41:48

容器Docker

2024-10-06 13:00:05

2015-07-23 11:26:35

虛擬化負載類型

2019-08-26 00:37:19

WiFi 65GWi-Fi

2012-06-25 14:09:58

2009-01-08 17:15:29

服務(wù)器虛擬化高性能計算

2010-01-08 09:13:28

2009-10-14 08:30:22

Windows 7UAC企業(yè)部署

2019-10-12 11:15:10

數(shù)據(jù)庫工具技術(shù)
點贊
收藏

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

主站蜘蛛池模板: 国产一区二区影院 | 日韩视频免费看 | 久久9久 | 波多野结衣中文字幕一区二区三区 | 久久久91| 成人小视频在线免费观看 | 久久久久久久久久久丰满 | 欧美精品v国产精品v日韩精品 | 国产精品成人一区二区三区 | 欧美激情一区二区 | 欧美激情国产日韩精品一区18 | 亚洲一二三在线观看 | 国产欧美日韩一区二区三区在线 | 国产精品久久久久久久免费观看 | 97国产一区二区精品久久呦 | 国产精品久久久一区二区三区 | 在线观看欧美一区 | 精品在线视频播放 | 欧美成年黄网站色视频 | 欧美最猛黑人 | 日韩国产在线观看 | 日本午夜一区二区三区 | 在线免费看毛片 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 精品国产视频 | 欧美日韩激情 | 91麻豆精品国产91久久久更新资源速度超快 | xx性欧美肥妇精品久久久久久 | 99久热| 日韩在线观看网站 | 免费毛片网| a级在线观看 | 这里只有精品999 | 国产精品久久午夜夜伦鲁鲁 | 亚洲精品一区二区三区蜜桃久 | 国产一区三区在线 | 精品国产乱码久久久久久图片 | 欧美日韩一区二区三区在线观看 | 日韩精品免费视频 | 天天操夜夜操 | 日韩色在线 |