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