日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java 之父:找Bug最浪费时间,现在不是开源的黄金时代

發(fā)布時(shí)間:2023/12/15 java 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 之父:找Bug最浪费时间,现在不是开源的黄金时代 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

90年代初,James Gosling和一群技術(shù)人員合作“綠色計(jì)劃”,創(chuàng)建了一個(gè)名為Oak的項(xiàng)目,旨在開發(fā)出能夠運(yùn)行于虛擬機(jī)的編程語(yǔ)言,開創(chuàng)計(jì)算機(jī)在家電產(chǎn)品上的嵌入式應(yīng)用。后來(lái),這項(xiàng)工作就演變?yōu)镴ava。

  • 1996年1月,Sun公司發(fā)布了Java的第一個(gè)開發(fā)工具包;
  • 1997年2月,JDK 1.1面世;
  • 1998年12月8日,第二代Java平臺(tái)的企業(yè)版J2EE發(fā)布;
  • 2000年5月,JDK1.3、JDK1.4和J2SE1.3相繼發(fā)布;
  • ……

隨著互聯(lián)網(wǎng)的普及,Java成為全球最流行的開發(fā)語(yǔ)言。James Gosling也因此被稱作“Java之父”。

來(lái)自于Evrone

James Gosling本人,出生于加拿大,是一位計(jì)算機(jī)編程天才,1977年獲得加拿大卡爾加里大學(xué)計(jì)算機(jī)科學(xué)學(xué)士學(xué)位,1983年獲得了美國(guó)卡內(nèi)基梅隆大學(xué)計(jì)算機(jī)科學(xué)博士學(xué)位。畢業(yè)后到Sun公司工作,這才有了上面的Java。

近日,外媒Evrone的軟件工程師、技術(shù)編輯Grigory與Java之父James進(jìn)行了一場(chǎng)線上對(duì)話。在采訪中,James提出了許多觀點(diǎn),他認(rèn)為:“對(duì)軟件的可靠性要求越高,靜態(tài)類型語(yǔ)言就越有幫助?!彼€分享了自己對(duì)某些編程語(yǔ)言的看法:反感C語(yǔ)言中的宏、對(duì)Lombok又愛又恨、很喜愛Lisp等等。

關(guān)于現(xiàn)代編程語(yǔ)言的構(gòu)建方式

Grigory:作為軟件開發(fā)人員和軟件顧問,我們?cè)噲D在俄羅斯組織Python、Ruby、Java和Go社區(qū)。您在Java方面的經(jīng)驗(yàn)和工作可以很好地幫助開發(fā)人員。通過這次采訪,我們希望能夠幫助到其他開發(fā)者,一起解決業(yè)內(nèi)的基本問題。

有些語(yǔ)言,比如Go,沒有類和繼承一說(shuō),而另一些語(yǔ)言則嘗試使用諸如Rust的特性。作為一名語(yǔ)言設(shè)計(jì)師,您認(rèn)為現(xiàn)代通用的、合理的編程語(yǔ)言構(gòu)建方式應(yīng)該是什么?

James:我應(yīng)該會(huì)繼續(xù)使用類,類對(duì)我的編程工作很有用。在C語(yǔ)言中有一些宏,這非常糟糕,因?yàn)楹瓴皇钦Z(yǔ)言的一部分,不應(yīng)該納入其中。而Rust的工作人員正在嘗試恰到好處地使用宏。

對(duì)于其他語(yǔ)言,如Lisp家族,人們總是想方設(shè)法更靈活地應(yīng)用它們。它們有一種定義語(yǔ)法的方法,語(yǔ)法幾乎完全與語(yǔ)義無(wú)關(guān)。在大多數(shù)語(yǔ)言中,語(yǔ)法和語(yǔ)義是密切相關(guān)的。我曾寫了很多Lisp,我真的很喜歡使用Lisp程序。有的語(yǔ)言能讓你以不同的方式做到這一點(diǎn),比如在Groovy中,你可以直接使用AST,Rust有一些語(yǔ)法集成的宏。但我總覺得還有一個(gè)問題:除此之外還能做什么呢?

Lisp對(duì)代碼片段進(jìn)行運(yùn)算,再生成新代碼,在Java世界里,人們就是這樣做的。雖然看似低級(jí),但很受歡迎。人們可以使用注釋的組合,用一些不同的語(yǔ)言生成字節(jié)碼,這是超級(jí)強(qiáng)大的。它會(huì)給你意想不到的驚喜,比如在Jackson,它通過計(jì)算序列化程序延展了性能。

一方面,這是一種非常強(qiáng)大的技術(shù),另一方面,它非常難以駕馭。這個(gè)技術(shù)充滿可能性,但這種可能性是有限的。我對(duì)Lombok又愛又恨,因?yàn)樗砑恿艘淮蠖袹ava特性,這些特性都很不錯(cuò),但從另一方面來(lái)說(shuō),也顯示出了弱點(diǎn)。JCP的社區(qū)職能在下降,我已經(jīng)離開好幾年了,雖然有些事情可以做,但也只能是在紙上談?wù)劇?/p>

Grigory:這就是為什么我們更想了解您創(chuàng)建語(yǔ)言的經(jīng)驗(yàn),而不是一些Java增強(qiáng)建議。五年前,我嘗試操控一些Java字節(jié)碼。我發(fā)現(xiàn),用它來(lái)創(chuàng)建特定領(lǐng)域的語(yǔ)言有點(diǎn)困難。但是有了Ruby后,就容易多了。Evrone公司有許多精通Ruby的開發(fā)人員。Ruby開發(fā)人員很優(yōu)秀,但是他們需要多年的培訓(xùn)才能真正掌控DSL的魔力。

James:像代碼片段運(yùn)算這樣的特性,在Java中之所以尷尬是因?yàn)镴ava總是試圖去編譯機(jī)器代碼,Ruby幾乎總是被解釋。如果你想同時(shí)獲得超強(qiáng)功能和終極性能,這一切就會(huì)變得很困難。

如何看待破壞性的更改?

Grigory:25年前,當(dāng)我開始自己的軟件開發(fā)生涯時(shí),我寫了很多C和C++代碼。幾乎每個(gè)月都會(huì)遇到一次錯(cuò)誤警報(bào)。調(diào)試這些錯(cuò)誤是一件很痛苦的事情。但是現(xiàn)在,我看到許多工具集成到我們的工作流程中,比如靜態(tài)類型檢查器。現(xiàn)代開發(fā)人員使用IDE,如NetBeans、IntelliJ IDEA,甚至Visual Studio。他們編寫源代碼,編寫靜態(tài)類型檢查器解析程序,構(gòu)造抽象語(yǔ)法樹,并進(jìn)行檢查,然后在文本編輯器中標(biāo)記錯(cuò)誤。這些技巧不僅適用于靜態(tài)類型的語(yǔ)言,也適用于動(dòng)態(tài)類型的語(yǔ)言,在Python、Ruby和TypeScript中皆可使用。

你對(duì)靜態(tài)類型檢查器有什么看法?它們能幫助人們編寫出更好的程序,還是說(shuō)需要在語(yǔ)言語(yǔ)法中添加更多內(nèi)容?

James:我都同意。我非常喜歡使用靜態(tài)類型系統(tǒng)的語(yǔ)言,因?yàn)樗鼈優(yōu)殪o態(tài)類型檢查器和IDE提供了一個(gè)框架。作為一名資深軟件工程師,尋找那些奇怪的Bug是最浪費(fèi)時(shí)間的。為減少這方面的時(shí)間浪費(fèi),我會(huì)盡力阻止Bug的出現(xiàn)。因此,我非常喜歡IDE,它能夠提供減少Bug的方法。而動(dòng)態(tài)類型語(yǔ)言很少有框架來(lái)解決這個(gè)問題,因?yàn)樗鼈儾灰欢芘袛嗨蓄愋?#xff0c;只能靠猜測(cè)。強(qiáng)類型語(yǔ)言(如Java)為類型檢查器提供了更嚴(yán)格的框架。在另一個(gè)層次上,甚至可以進(jìn)行自動(dòng)的定理證明。像Dafny這樣的系統(tǒng),它有一個(gè)非常復(fù)雜的定理證明器。所以如果你想建立一個(gè)加密算法,你將能夠用數(shù)學(xué)方法進(jìn)行證明。這聽上去很夸張,但對(duì)于某些代碼來(lái)說(shuō),真的很有用。

這很大程度上取決于你的目標(biāo)是什么。

如果你是一名正在努力完成作業(yè)的大學(xué)生,或是一名正在努力畢業(yè)的博士生,那么當(dāng)你編寫一個(gè)程序時(shí),你的目標(biāo)是讓這個(gè)程序至少能運(yùn)行一次,因?yàn)槟惚仨氁故境晒?/p>

如果你在行業(yè)環(huán)境中,那么每次運(yùn)行都必須成功。一次運(yùn)行成功和每次都運(yùn)行成功之間的差別是巨大的。如果只需要運(yùn)作一次,那么動(dòng)態(tài)語(yǔ)言會(huì)更合適。如果你必須確保它能一次又一次地運(yùn)行,那么所有的靜態(tài)類型工具都適用。

如果你是一個(gè)物理學(xué)家,你想得出一些計(jì)算結(jié)果,那么它只需要運(yùn)行一次。這取決于你的工作背景。你對(duì)軟件的可靠性要求越高,靜態(tài)類型語(yǔ)言就越有幫助。

總結(jié)

以上是生活随笔為你收集整理的Java 之父:找Bug最浪费时间,现在不是开源的黄金时代的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。