節(jié)選自《Go語言之父談Go:大道至簡(jiǎn)》(圖)
2021-08-11
現(xiàn)在下班了,隨便解釋一下
1)明顯下降的是c&c++。單獨(dú)
c 的下降與硬件不景氣有關(guān)。現(xiàn)在一切都在過渡到互聯(lián)網(wǎng)。硬件不如軟件,軟件不如互聯(lián)網(wǎng)。這是大勢(shì)所趨。這一切不都反映在這部終結(jié)者電影中嗎?有自我意識(shí)??催@個(gè)名字,不,在今年的一些行業(yè)趨勢(shì)中也可以看到,通信行業(yè)也開始走下坡路,華為等裁員的消息并不少見;
c++的沒落與c有關(guān)系,但也與go的出現(xiàn)有很大關(guān)系。 Go 的上升趨勢(shì)極大地打擊了現(xiàn)有的 c++ 用戶群。 C++在語言層面上是蹩腳的。我沒有勇氣去解決c帶來的問題,所以我保留了c的很多特性。同時(shí)在c的基礎(chǔ)上,加入了oop的特性,但沒有java那么純粹。和lisp等fp相關(guān)的語言相比,它就更加復(fù)雜了,所以后來的大部分語言都在一定程度上撞上了c++。這從多年前java的出現(xiàn)就可以看出。 java原來的名字是c++++--,看這個(gè)名字,++--,而c++缺的就是這個(gè)--,c有很多不純的東西,c++只有+不敢-,所以最后不像四,發(fā)明go的初衷是為了取代c++,就像go的父親說的那樣
這時(shí)候,我問自己一個(gè)問題:C++委員會(huì)真的認(rèn)為C++沒有足夠的特性嗎?當(dāng)然,不像羅恩的玩笑,簡(jiǎn)化這門語言肯定是一個(gè)更大的成就!也許這很荒謬,但請(qǐng)記住這個(gè)想法。
摘自《圍棋之父:談圍棋:通往簡(jiǎn)的大道》,網(wǎng)上搜索即可找到;
2)java,一個(gè)永遠(yuǎn)繞不開的話題
首先,你可以看到Java過去有一個(gè)上升的浪潮,然后開始下降,嗯,為什么?猜一猜
很簡(jiǎn)單。發(fā)生在上次低谷的時(shí)候。程序員們已經(jīng)熟悉了Java的特性,所以8開始添加一些新興的。重要的是它是fp的基石,就像oop一樣,沒有就沒有fp,同樣,沒有就沒有oop,所以能遇到的未來一定是一個(gè)把fp疊加在自己身上的過程通過java,因?yàn)閖ava幾乎把oop做到了極致,也沒什么可做的,但是fp是一個(gè) 池子越大,出土的寶物也越多,所以8之后有一個(gè)明顯的上升期,到了的時(shí)候被程序員普遍接受和消化,難免人氣開始下滑。這是正常的。學(xué)了東西以后就不會(huì)再搜索這個(gè)關(guān)鍵詞了,除非你不搜索,所以你可以看到,2016年之前是世界程序員學(xué)習(xí)的高峰期,16年后,程序猿一般接受了這個(gè)特性,各種東西開始成熟,所以開始沒落,消化Java世界最重要的結(jié)果就是Vert.x,開始輸出各種經(jīng)驗(yàn),后面會(huì)講到。
可以看出,對(duì)于學(xué)習(xí)來說,需要一定的時(shí)間。我個(gè)人覺得理解oop的概念和我第一次接觸oop的時(shí)間差不多,可能多一點(diǎn),因?yàn)樗容^抽象,需要很多,只有通過實(shí)踐才能掌握。現(xiàn)在很多人對(duì)這些參數(shù)并不熟悉??梢?,學(xué)習(xí)并不是一個(gè)簡(jiǎn)單的過程,需要投入時(shí)間和汗水。然而,16 年是一個(gè)分界線。 16年前,學(xué)習(xí)意味著你仍然可以與時(shí)俱進(jìn)。 16年后,所有技術(shù)嫻熟的程序員都在船上。如果你還在游泳,那你就很危險(xiǎn)了:
作為Java程序員,如果你現(xiàn)在不熟悉,尤其是不精通,那是不合格的
因?yàn)橐訴ert.x為代表的重框架已經(jīng)開始輸出各種經(jīng)驗(yàn)教訓(xùn),這其中的一個(gè)重要體現(xiàn)就是它帶來的各種問題,最典型的就是異步應(yīng)用,帶來了地獄,那么如何解決羊毛布?三種方式:和
目前java不是最后一個(gè),可以使用vert.x本身和java。這個(gè)設(shè)計(jì)類似于node.js中的方法,可以說是借(chao)建(xi)
或者,也就是已經(jīng)更新為2了,替換了代表新生代類中1所代表的工具類
輸出是什么?輸出當(dāng)然是設(shè)計(jì)借用了很多go,c#等相關(guān)的設(shè)計(jì),然后導(dǎo)出,然后感謝vert.x的中國(guó)用戶群,vert.x的中國(guó)用戶已經(jīng)把部分完成并貢獻(xiàn)給了官方的vert.x,應(yīng)該會(huì)在3.5的下一個(gè)正式版本中看到。預(yù)計(jì)3.5會(huì)在10.1發(fā)布;
設(shè)計(jì)
真正解決了異步帶來的各種問題。用戶可以像同步代碼一樣編寫非常漂亮的代碼塊。同時(shí)idea會(huì)在ide里面用一個(gè)綠色的小箭頭來標(biāo)記,讓我們的開發(fā)更方便、更自由。
同時(shí),這個(gè)語言最近也被red hat 貢獻(xiàn)并移交了。按照現(xiàn)在的情況,第一個(gè)版本要做的就是添加/支持,就這樣,而且這兩種語言同時(shí)被 .x支持,沒錯(cuò),vert.x支持7種語言,包括js , ruby??,,,, 以及最新的創(chuàng)意也是免費(fèi)支持的,所以你可以看到這個(gè)趨勢(shì)。
也就是16年后,發(fā)展的重點(diǎn)不是java本身,而是基于java/jvm和異步API的開發(fā),可以比喻為java和jee的關(guān)系。雖然java本身的熱度在16年下降,但與此同時(shí),vert.x等,熱度卻在上升,達(dá)到前所未有的高峰期
Java one 即將開放。今年是九月。估計(jì)我們會(huì)跟上的。同時(shí)vert.x制作組會(huì)在java上制作一個(gè)&vert.x。今年11月,大會(huì)也將有同樣的主題。 ,但不是這樣,viet說10月柏林會(huì)有vert.x
說了這么多,總結(jié)一下,java最近的上漲是什么時(shí)候,所以可以預(yù)計(jì)下個(gè)月之后還會(huì)有一波上漲
java最近的沒落,就是程序員吸收消化了這個(gè)特性,開始轉(zhuǎn)移到相關(guān)框架的生產(chǎn)和實(shí)踐的過程。最后的結(jié)果是:vert.x,這些繁榮,但這些不屬于java基礎(chǔ)也是java核心部分,所以掉了,但是jvm取得了很大的成績(jī)
雖然后續(xù)java會(huì)有一波增長(zhǎng),但是java還有很長(zhǎng)的路要走,因?yàn)橛脩羝谕鹙ava真正解決異步帶來的寫問題。目前其他語言都在嘗試,或者借(chao)欣賞(xi)go等其他非jvm語言的成果,等這些成熟之后,直接把java復(fù)制到它的里面也不是沒有可能語言特性
特點(diǎn)
主要是為了擺脫歷史包袱。同時(shí),類型已經(jīng)在生產(chǎn),也就是真機(jī)。這個(gè)需求是典型的fp需求,所以java圓滿完成了oop之后,在fp的道路上越走越遠(yuǎn),作為程序員,你要跟上這個(gè)趨勢(shì)。與oop相比編程語言熱度排行2016,fp就像另一種語言。重新學(xué)習(xí)是必要的。如果你還什么都不熟,呵呵,小心點(diǎn),被踢了 行業(yè)更新很快
寫的亂七八糟,急著下班,今天有臺(tái)風(fēng),先看看
看不懂請(qǐng)看我的專欄:百慕城全棧
我想在這里補(bǔ)充一些常識(shí)。有些人總是說,哦,你看到某種語言的某個(gè)特性,但Java最近才添加了它
首先,給Java添加特性是非常慎重的,因?yàn)檎Z言特性添加起來很簡(jiǎn)單,如果以后打算去掉的話,會(huì)造成大規(guī)模的破壞,因?yàn)檫@意味著重構(gòu)舊代碼,這是絕大多數(shù)資本家不愿意接受的,因?yàn)榻忉尣磺宄?。為什么你需要重寫你寫的代碼?需要重新測(cè)試嗎?之前寫的代碼是什么?因此,Java 添加功能非常謹(jǐn)慎和小心。我寧愿不添加它或隨機(jī)添加它。這不是和圣人的邏輯很相似嗎?你寧愿不結(jié)婚也不容忍嗎?
Java 是迄今為止與舊版本兼容的最佳語言。沒有必要添加一個(gè)。過去寫的代碼和之前寫的一樣,可以在各種平臺(tái)上舒服的運(yùn)行。語言功能沒有那么高。技術(shù)不難加,要看它的副作用
比如我當(dāng)時(shí)打算加,但是jcp以功能可讀性不是很好為由叫回來,要求重新修改重新提交,然后就有今天的樣子了,所以java中新增的特性是各個(gè)公司反復(fù)論證的結(jié)果,可以說是政治斗爭(zhēng)和博弈,但不管怎樣,這都是最大公約數(shù),也就是說大家感覺,呃,這種方式寫,我們可以接受,副作用很小甚至沒有,這個(gè)結(jié)論一旦形成,就定下來了,不會(huì)改變。所以java可以在企業(yè)后端猖獗運(yùn)行。這種對(duì)老版本的兼容性做的很好很重要編程語言熱度排行2016,隨便加一些特性造成混亂的例子:
1),到了5還在變,幾乎每次發(fā)布都是小版本造成的,太強(qiáng)了
2),又亂又亂。這也是很多公司放棄它的原因。你可以看到保羅對(duì)此的抱怨。該鏈接是一個(gè)鏈接。想辦法自己翻墻
3),2->3的鬧劇是業(yè)界經(jīng)典的失敗案例。游戲中以jcp為例,說我們不能有2->3這樣的,所以我們也會(huì)重新設(shè)計(jì)一下。
當(dāng)我們看到這些語言時(shí),為什么會(huì)有這樣的困惑?因?yàn)槎际且粦羧思?,就一個(gè)字。例如,如果你想做出這樣的改變,即使你看到這種改變是腦死亡的行為,你能做什么?我不聽。你說什么就是你說什么,但Java不同。 Java 的所有特性將在jcp 討論和批準(zhǔn)后添加。這既有優(yōu)點(diǎn)也有缺點(diǎn)。優(yōu)點(diǎn)是變化少,可預(yù)測(cè)性強(qiáng),夠用??梢赃m應(yīng)時(shí)間,但缺點(diǎn)是反應(yīng)較慢。所以,作為程序員,你應(yīng)該把這兩者結(jié)合起來,以java為基礎(chǔ),然后以這些為先鋒來擴(kuò)展和嘗試新的特性,但始終保留java的返回選項(xiàng)真的不好。我總是可以改回java,對(duì)嗎?正如一些人所說:java不酷,但它
vert.x的開發(fā)模式特別適合這個(gè),因?yàn)槎际沁@樣,不行的話,我不是一秒就切換回Java寫了嗎?無需像JVM以外的其他語言一樣更改ide和包管理
順便說一句,即便如此,有沒有java升級(jí)?
是的,但是很少,基本可以接受,但即便如此,還是引起了很多波
比如_下劃線會(huì)被去掉,下劃線會(huì)作為新的關(guān)鍵字使用。后續(xù)可以為類型推導(dǎo)做準(zhǔn)備。一般這個(gè)會(huì)先出來,后面幾個(gè)版本再出來,然后才是真正的強(qiáng)制要求,所以現(xiàn)在java也面臨這個(gè)問題,就是與舊版本的兼容性問題。比如com.sun包里的很多東西都用到了。這個(gè)已經(jīng)標(biāo)記很久了,但是還是不能阻止一堆第三方庫的使用,直到9號(hào)以后,才會(huì)正式,所以9號(hào)之前,一堆庫在更新自己的代碼