色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

前期學(xué)習(xí)JAVA是照著寫(xiě)代碼好還是背著寫(xiě)好

前期學(xué)習(xí)JAVA是照著寫(xiě)代碼好還是背著寫(xiě)好?

前段時(shí)間,B 站推出的青年節(jié)演講視頻《后浪》在朋友圈刷屏,看著“后浪”們豐富多彩的生活,同事們紛紛自嘲自己就是被拍在沙灘上的那一個(gè),被生活瘋狂蹂躪。然而在編程語(yǔ)言界,“后浪”們掀起的波瀾則十分有限。與近年來(lái)陸續(xù)涌現(xiàn)的新興編程語(yǔ)言相比,那些出道即巔峰、一巔幾十年的“前浪”們,似乎還沒(méi)有要退位讓賢的意思。

在 TIOBE 公布的最新編程語(yǔ)言排行榜中,排名前十的語(yǔ)言中有 8 個(gè)誕生于上個(gè)世紀(jì) 90 年代,最“年輕”的是誕生于 2001 年的 C#,而位于榜首的 C 語(yǔ)言距今已有 48 年的歷史。如果我們?cè)賮?lái)縱觀自 2002 年以來(lái)的編程語(yǔ)言排行榜,基本上也還是這些老牌編程語(yǔ)言的身影,尤其是 C 與 Java 這兩位“前浪”老大哥的江湖地位一直難以撼動(dòng)。

數(shù)十年來(lái),陸續(xù)出現(xiàn)的新興編程語(yǔ)言不在少數(shù),其中不乏一些以取代某種老語(yǔ)言為目的而設(shè)計(jì)的,那么這些編程語(yǔ)言界的“后浪”們,是否能夠追上“前浪”們的腳步呢?下面不妨讓我們來(lái)看看這些年編程界的知名“后浪”們。

前浪 C++(1979)VS 后浪 Go(2009)

誕生于 2009 年的 Go 語(yǔ)言堪稱(chēng)編程語(yǔ)言中的“星二代”。Go 的早期作者有三人,分別是 Rob Pike,Ken Thompson 和 Robert Griesemer,每一位的來(lái)頭可都不小。Rob Pike 曾是貝爾實(shí)驗(yàn)室的 Unix 團(tuán)隊(duì)以及 Plan 9 操作系統(tǒng)計(jì)劃的成員,與 Thompson 共事多年,并共創(chuàng)出廣泛使用的 UTF-8 字元編碼;Ken Thompson 則是 B 語(yǔ)言、C 語(yǔ)言的作者,Unix 之父,1983 年圖靈獎(jiǎng)和 1998 年美國(guó)國(guó)家技術(shù)獎(jiǎng)得主;而 Robert Griesemer 在開(kāi)發(fā) Go 之前是 Google V8、Chubby 和 HotSpot JVM 的主要貢獻(xiàn)者。

2007 年,Rob Pike 認(rèn)為 C++ 在 Google 分布式編譯平臺(tái)上的編譯過(guò)程太過(guò)漫長(zhǎng),于是他和 Robert Griesemer 開(kāi)始探討 “簡(jiǎn)化編程語(yǔ)言相比于在臃腫的語(yǔ)言上不斷增加新特性,會(huì)是更大的進(jìn)步”。兩人一拍即合,隨即說(shuō)服了身邊的 Ken Thompson,三人決定要搗鼓一門(mén)新語(yǔ)言。幾天后,他們?cè)?Google 內(nèi)部發(fā)起了一個(gè)叫 Golang 的項(xiàng)目 。很快,一個(gè)在 C 語(yǔ)言基礎(chǔ)上進(jìn)行了優(yōu)化的新語(yǔ)言誕生了,這就是 Go 。

作為一個(gè)設(shè)計(jì)目的就是為了取代 C/C++ 的新語(yǔ)言,Go 的語(yǔ)法在很多地方借鑒了 C/C++ 。比如用花括號(hào)作為定界符,以分號(hào)作為語(yǔ)句結(jié)束等等,這使得 Go 很容易就能被精通 C/C++ 的開(kāi)發(fā)人員接受。而在沿襲 C/C++ 基本語(yǔ)法的基礎(chǔ)上,Go 新加入了很多針對(duì)當(dāng)下流行的分布式系統(tǒng)的實(shí)用功能,比如超輕量級(jí)的線程 goroutine,在高并發(fā)的系統(tǒng)中,可以按照多線程的方式寫(xiě)程序,從而保證邏輯的清晰和簡(jiǎn)單,又可以獲得非常高的性能。而同樣的事情在 C++ 中則需要調(diào)用第三方框架,如果用多線程,會(huì)導(dǎo)致系統(tǒng)線程過(guò)多帶來(lái)大量的上下文切換 overhead;如果采用基于消息的架構(gòu),雖然可以獲得較高的效率,但程序邏輯會(huì)被打散,可讀性和可維護(hù)性較差。

此外,Go 語(yǔ)言作為 Google 大力支持的“親兒子”,擁有編譯、測(cè)試、調(diào)試、性能分析等一整套成熟的工具,編譯效率極高,再加上其還內(nèi)置了 http、json、xml、正則表達(dá)式等很多后端系統(tǒng)開(kāi)發(fā)中常用的庫(kù),可以說(shuō)是一門(mén)已經(jīng)非常成熟的工程化開(kāi)發(fā)語(yǔ)言。而在這方面,C++ 則需要用到大量的第三方開(kāi)源工具或庫(kù),在工程上需要花費(fèi)更多的精力進(jìn)行技術(shù)選型,同時(shí)也不利于后期維護(hù)。

基于上述的優(yōu)點(diǎn),Go 語(yǔ)言被公認(rèn)為非常適合構(gòu)建命令行實(shí)用程序和網(wǎng)絡(luò)服務(wù)等,尤其是云計(jì)算場(chǎng)景下的高并發(fā)應(yīng)用,如今廣泛流行的容器引擎 Docker、容器編排系統(tǒng) Kubernetes 都是用 Go 編寫(xiě)的,Go 也因此被一些人稱(chēng)為“容器語(yǔ)言”。

雖然 Go 在很多方面已經(jīng)超越 C/C++,并且在云原生相關(guān)領(lǐng)域占有了一席之地,但是仍然難以撼動(dòng) C/C++ 語(yǔ)言在大量工業(yè)基礎(chǔ)設(shè)施終端的地位。C/C++ 的優(yōu)勢(shì)仍然在于它的運(yùn)行效率,如果是低級(jí)設(shè)備驅(qū)動(dòng)程序、內(nèi)核空間操作系統(tǒng)組件以及其他需要嚴(yán)格控制內(nèi)存布局和管理的任務(wù),C 依然是不二之選。

目前,Go 在各種權(quán)威編程語(yǔ)言排行榜上都名列前茅,且一直呈上升趨勢(shì),在云原生建設(shè)如火如荼地當(dāng)下,Go 至少在“云”這一領(lǐng)域已經(jīng)完成了對(duì)前輩的超越。

前浪 C++(1979) VS 后浪 Rust(2010)

Rust 是繼 Go 之后另一個(gè)試圖取代 C/C++ 的新語(yǔ)言。2010 年前后,隨著大規(guī)模業(yè)務(wù)的拓展和分布式計(jì)算的流行,Graydon Hoare 也和 Rob Pike 一樣看到了 C++ 等傳統(tǒng)編程語(yǔ)言在高并發(fā)場(chǎng)景下的缺陷,試圖創(chuàng)造更優(yōu)秀的語(yǔ)言來(lái)替代它們。Rust 原本是 Graydon 從 2006 年開(kāi)始搗鼓的個(gè)人項(xiàng)目,隨后該項(xiàng)目得到了 Mozzila 基金會(huì)的資助,而 Graydon 本人也于 2009 年加入 Mozzila 公司,帶領(lǐng)團(tuán)隊(duì)完善 Rust 語(yǔ)言的開(kāi)發(fā)。2010 年,Mozzila 正式對(duì)外透露了 Rust 的存在。2013 年,Mozzila 基金會(huì)宣布將與三星合作,使用 Rust 語(yǔ)言開(kāi)發(fā)一款瀏覽器引擎 Servo,成為首個(gè)使用 Rust 編寫(xiě)的大型項(xiàng)目。2015 年,Rust 首個(gè) 1.0 正式版發(fā)布。

Rust 最初是 Mozilla 為了解決軟件在語(yǔ)言級(jí)別上無(wú)法真正利用多核計(jì)算帶來(lái)的性能提升而創(chuàng)建的,這一點(diǎn)與 Go 有些類(lèi)似。相比前輩 C++,Rust 在代碼安全這一特性上下足了功夫。比如內(nèi)存安全方面,Rust 在安全代碼里不容許空指針、懸垂指針和數(shù)據(jù)競(jìng)爭(zhēng),這些問(wèn)題在編譯階段就無(wú)法通過(guò)。Rust 社區(qū)核心開(kāi)發(fā)者 Nichols 表示:“之前,我們只能使用 C 或者 C++ 才能編寫(xiě)具有較低內(nèi)存占用空間的高質(zhì)量代碼。但是,在生產(chǎn)代碼中使用這些語(yǔ)言需要你手動(dòng)管理內(nèi)存并了解可能導(dǎo)致未定義行為的所有方法?!盢ichols 指出,不斷擴(kuò)展的 CVE 代碼漏洞數(shù)據(jù)庫(kù)證明,即使是最優(yōu)秀的程序員也疲于應(yīng)對(duì)層出不窮的代碼漏洞。“為了確保你安全地使用內(nèi)存,Rust 編譯器非常嚴(yán)格,這樣你就可以專(zhuān)注于你真正想要解決的問(wèn)題。”

盡管 Rust 憑借其代碼安全的特性獲得了部分開(kāi)發(fā)者的青睞,但由于其無(wú)論是在性能還是語(yǔ)法上,均不足以顛覆 C/C++,再加上其學(xué)習(xí)曲線并不平滑,因此與“家大業(yè)大”的 Go 相比,Rust 在前期的發(fā)展不溫不火。直到去年 7 月,微軟突然宣布將擁抱 Rust,探索用 Rust 作為 C/C++ 和其他語(yǔ)言的安全替代方案,以此來(lái)改善應(yīng)用程序的安全狀況。微軟認(rèn)為 Rust 是目前業(yè)界系統(tǒng)編程的最佳選擇,原因不僅是它能夠以?xún)?nèi)存安全的方式編寫(xiě)系統(tǒng)級(jí)程序,還在于其精密性。

微軟此舉讓 Rust 在開(kāi)發(fā)者中的地位直線上升,越來(lái)越多的企業(yè)和個(gè)人開(kāi)始關(guān)注并重視代碼安全的問(wèn)題,從而重新審視這門(mén)新語(yǔ)言,這主要體現(xiàn)在 2020 年以來(lái)圍繞 Rust 語(yǔ)言發(fā)生的幾件事情:Linux 內(nèi)核維護(hù)者表示愿意接受用 Rust 開(kāi)發(fā) Linux 驅(qū)動(dòng);AWS 宣布贊助 Rust;微軟更進(jìn)一步,在今年年初開(kāi)發(fā)并開(kāi)源了受 Rust 啟發(fā)的新編程語(yǔ)言 Verona;最近,蘋(píng)果也站出來(lái)?yè)肀?,?jì)劃將部分 C 代碼移植到 Rust 。

目前,Rust 語(yǔ)言的發(fā)展總體來(lái)說(shuō)仍然比較緩慢,根據(jù)最新的一份調(diào)查報(bào)告顯示,大多數(shù)不愿意接受 Rust 的開(kāi)發(fā)者認(rèn)為,Rust 目前的問(wèn)題主要在于學(xué)習(xí)曲線陡峭、缺少所需的庫(kù)、缺乏 IDE 支持等??梢哉f(shuō),Rust 的發(fā)展仍然任重道遠(yuǎn)。

前浪 Objective-C(1986) VS 后浪 Swift(2014)

Swift 是為數(shù)不多的成功把“前浪”拍在沙灘上的“后浪”。

2010 年,或許是受到競(jìng)爭(zhēng)對(duì)手 Google 推出 Go 的啟示,Apple 高層也決定開(kāi)發(fā)一套新的編程語(yǔ)言,用以替代使用了數(shù)十年的 Objective-C,而最早接到這個(gè)任務(wù)的人正是 Chris Lattner。Chris 在大學(xué)還沒(méi)畢業(yè)的時(shí)候就成為了業(yè)內(nèi)知名的編譯器專(zhuān)家,其碩士期間發(fā)表的論文奠定了 LLVM 框架的發(fā)展基礎(chǔ)。在加入 Apple 公司以后,Chris 創(chuàng)造的 LLVM + Clang 成為了 Apple 軟件產(chǎn)品的編譯框架。而 Swift 語(yǔ)言就是 Chris 繼 LLVM 與 Clang 之后的又一力作。

Swift 是一門(mén)博采眾長(zhǎng)的現(xiàn)代語(yǔ)言,在設(shè)計(jì)的過(guò)程中,Chris 參考了 Objective-C、Rust、Haskell、Ruby、Python、C# 等語(yǔ)言的優(yōu)點(diǎn),最終形成了 Swift 的語(yǔ)法特性。與前輩 OC 相比,Swift 的語(yǔ)法更加簡(jiǎn)潔,例如行尾不再需要分號(hào),if/else 語(yǔ)句也不需要括弧,調(diào)用方法時(shí) [ ] 也不再嵌套,支持字符串插入,省略了 OC 中的 %s,%d,%@ 等等。同時(shí),Swift 把 oc 頭文件 .h 和實(shí)現(xiàn)文件 .m 合并成了一個(gè)代碼文件 .swift,使得Swift 代碼更易于維護(hù)。最重要的是,擅長(zhǎng)優(yōu)化的蘋(píng)果工程師讓 Swift 的運(yùn)行速度能夠逼近 C++,是 OC 運(yùn)行速度的近 1.4 倍。在 Swift 誕生以后,蘋(píng)果軟件的開(kāi)發(fā)者只需要維護(hù)原來(lái)一半量的代碼文件,大大提高了開(kāi)發(fā)效率,降低了維護(hù)成本。

目前,Swift 幾乎已經(jīng)完全取代 Objective-C ,成為蘋(píng)果旗下 MacOS 、iOS 的主流開(kāi)發(fā)語(yǔ)言,很多剛剛?cè)胄械?iOS 新人開(kāi)發(fā)者甚至沒(méi)有接觸過(guò) Objective-C 。不出意外的話,Objective-C 很有可能在不久的將來(lái)被人們逐漸遺忘。然而 Swift 團(tuán)隊(duì)的目標(biāo)似乎遠(yuǎn)不止于干掉老大哥這么簡(jiǎn)單,在即將發(fā)布的 5.3 版本中,Swift 將增加對(duì) Windows 和其他 Linux 發(fā)行版 PC 操作系統(tǒng)的支持(目前僅支持 MacOS 和 Ubuntu),至于其后續(xù)發(fā)展如何,我們還將持續(xù)關(guān)注。

前浪 JavaScript(1995) VS 后浪 Dart (2011)

Dart 是 Google 工程師們繼 Go 之后造的又一個(gè)輪子。與 Go 類(lèi)似,Dart 最初也是一群 Google 工程師覺(jué)得 JavaScript 不太行,因此想要重新造一個(gè)更好的語(yǔ)言取代它,于是就有了 Dart 。

Google 工程師認(rèn)為,JS 當(dāng)初從設(shè)計(jì)到發(fā)布的時(shí)間極短(僅為 7 個(gè)月),在語(yǔ)言規(guī)范和謹(jǐn)慎性方面存在先天不足,比如語(yǔ)法過(guò)于松散、缺乏模塊化能力、核心庫(kù)不完備、編程語(yǔ)言范型不明確等,且難以用改良的方式來(lái)修復(fù)。事實(shí)上,Google 工程師多年來(lái)也為改善 JavaScript 的性能做出了諸多貢獻(xiàn),特別是通過(guò) V8 引擎強(qiáng)化了 JIT 對(duì) JS 的編譯能力,從而讓 Chrome 瀏覽器的性能一騎絕塵。 這足以說(shuō)明當(dāng)時(shí)的 JavaScript 在 Google 工程師眼里確實(shí)存在很多問(wèn)題。

Dart 最初也是作為一種在瀏覽器中運(yùn)行的腳本語(yǔ)言而生,Google 還專(zhuān)門(mén)在 Chrome 中內(nèi)置了 一個(gè) DartVM 引擎用來(lái)對(duì) Dart 進(jìn)行推廣 。得益于 Chrome 龐大的用戶(hù)體量,這一舉措讓 Dart 積累了規(guī)??捎^的早期用戶(hù)群體。

原以為在 Google 的保駕護(hù)航下,Dart 能夠穩(wěn)步發(fā)展并最終趕超 JavaScript。然而令 Google 沒(méi)想到的是,半路竟殺出了一個(gè) Node.js 。Node.js 是一個(gè) JavaScript 運(yùn)行環(huán)境,它讓 JavaScript 可以開(kāi)發(fā)后端程序,實(shí)現(xiàn)幾乎其他后端語(yǔ)言實(shí)現(xiàn)的所有功能,這意味著 JavaScript 可以與 PHP、Java、Python、.NET、Ruby 等后端語(yǔ)言平起平坐。從那時(shí)起,“ 凡是能用 JavaScript 寫(xiě)的應(yīng)用終將用 JavaScript 來(lái)寫(xiě) ”開(kāi)始在圈內(nèi)廣為流傳。值得一提的是,Node.js 正是基于 Google 自己的開(kāi)源 JavaScript 引擎 V8 開(kāi)發(fā)而來(lái)。V8 本來(lái)是用于 Chrome 對(duì) JavaScript 的解釋器,鬼才 Ryan Dahl 把 V8 搬到了服務(wù)器上,用來(lái)做服務(wù)器的軟件并取得了成功。在往后的幾年里,前端開(kāi)發(fā)的模式因 JavaScript 而改變,React、React-Native、Vue 等基于 JavaScript 的明星項(xiàng)目迅速崛起,Dart 逐漸被人們遺忘在角落。

然而 Google 一直沒(méi)有放棄 Dart 。2018 年,Google 對(duì) Dart 進(jìn)行了底層重構(gòu),并于 8 月推出了 Dart 2.0 版本,將其重新定義為一種同時(shí)支持 Web 和移動(dòng)客戶(hù)端開(kāi)發(fā)、具有豐富工具箱和組件的語(yǔ)言。同年 12 月,Google 發(fā)布了用 Dart 編寫(xiě)的跨平臺(tái)應(yīng)用開(kāi)發(fā)工具 Flutter,讓 Dart 能夠在服務(wù)端編寫(xiě)命令行程序,同時(shí)在前端可以編譯成 JavaScript 運(yùn)行在瀏覽器中。隨后,Google 開(kāi)始新一輪發(fā)力推廣全新的 Dart ,包括為另一個(gè)知名前端框架 Angular 推出對(duì)應(yīng)的 Dart 版本,指定 Dart 作為未來(lái)的操作系統(tǒng) Fuchsia 的官方開(kāi)發(fā)語(yǔ)言等,Dart 社區(qū)又煥發(fā)了勃勃生機(jī)。

可以說(shuō)在剛剛誕生的前幾年里,作為一門(mén)運(yùn)行在瀏覽器中的腳本語(yǔ)言,Dart 是完敗于前輩 JavaScript 的。而如今乘著“大前端”的變革浪潮,要說(shuō)超越 JavaScript 雖然也不太現(xiàn)實(shí)(畢竟“凡是能用 JavaScript 寫(xiě)的東西終將用 JavaScript 來(lái)寫(xiě)” ),但 Dart 在未來(lái)一段時(shí)間里還是一個(gè)非常有潛力的“后浪”代表。

前浪 Java(1995) VS 后浪 Kotlin (2011)

Kotlin 是 Google 公司繼 Go 之后又一力捧的新編程語(yǔ)言。Kotlin 誕生于 2010 年,出自 JetBrains,并于2012年正式開(kāi)源。Kotlin 最初的設(shè)計(jì)目的是為了創(chuàng)建一種兼容 Java 的編程語(yǔ)言,并讓它比 Java 更好。

作為一門(mén)相對(duì)比較新的 JVM 語(yǔ)言,Kotlin 得到了 Google 公司的大力支持。2017年,Google 在 I/O 開(kāi)發(fā)者大會(huì)上官宣 Kotlin 正式成為 Android 官方開(kāi)發(fā)語(yǔ)言 。兩年后的 I/O 大會(huì)上,Google 再次加碼 Kotlin,宣布其成為 Andoid 開(kāi)發(fā)官方首選語(yǔ)言。

Kotlin 的語(yǔ)法融合了 Scala、Groovy、Python、Swift 等眾多語(yǔ)言的特性,如果使用過(guò)其中任意一門(mén)語(yǔ)言,上手 Kotlin 將非常容易。與 Java 相比,Kotlin 引入了函數(shù)式編程方式,同時(shí)有各種語(yǔ)法糖簡(jiǎn)化了代碼量。但與其他試圖取代“前浪”的新語(yǔ)言不同,Kotlin 走的是一條 100% 兼容 Java 的道路(打不過(guò)就加入)。眾所周知,Java 這么多年屹立不倒的原因是因?yàn)槠浒l(fā)展多年積累的龐大生態(tài),包括豐富的函數(shù)庫(kù)、IDE、編譯器、成熟的應(yīng)用生態(tài)等等。Kotlin 則可以調(diào)用 Java 的絕大多數(shù)庫(kù),也就可以直接使用 Java 現(xiàn)有的生態(tài),因此很多開(kāi)發(fā)者選擇混用 Kotlin 與 Java。

由于采用的是與前輩和諧共生的模式,目前 Kotlin 已經(jīng)超越 Scala 和 Clojure,成為 JVM 上第二大受歡迎的語(yǔ)言,尤其是在安卓開(kāi)發(fā)領(lǐng)域得到了很多國(guó)內(nèi)外開(kāi)發(fā)者的認(rèn)可,也是一個(gè)非常有前景的優(yōu)秀“后浪”。

結(jié)語(yǔ)

這些 21 世紀(jì)以后(2010 年前后)以取代老語(yǔ)言為目的而誕生的新語(yǔ)言中,能夠順利取代“前浪”的語(yǔ)言屈指可數(shù)。有的乘著新技術(shù)的東風(fēng)在某一新興領(lǐng)域成為了行業(yè)標(biāo)桿。有的在與“前浪”的和諧共生中猥瑣發(fā)育,靜待日后的逆襲。當(dāng)然,更多的是消逝在了歷史的長(zhǎng)河里,甚至沒(méi)有泛起一絲漣漪……究其原因,如今仍然流行的語(yǔ)言諸如 C/C++、Java、Python、JavaScript 等等,雖然它們大多數(shù)誕生于上個(gè)世紀(jì),但它們一直以來(lái)也都在針對(duì)新時(shí)代的需求不斷地優(yōu)化,經(jīng)歷了數(shù)十個(gè)甚至上百個(gè)版本的更迭,很多語(yǔ)言已經(jīng)與誕生之初完全不一樣了。再加上它們數(shù)十年來(lái)積累的函數(shù)庫(kù)、IDE 、編譯器、應(yīng)用生態(tài)等自成一脈的豐富體系,讓“后浪”們難以望其項(xiàng)背。

從商業(yè)的角度來(lái)說(shuō),在行業(yè)格局沒(méi)有發(fā)生顛覆性變革的時(shí)候,現(xiàn)有的熱門(mén)語(yǔ)言依靠多年積累的龐大用戶(hù)基礎(chǔ),就足以形成壟斷。就算有更好的新語(yǔ)言出現(xiàn),它們也可以迅速吸收這些新語(yǔ)言的優(yōu)良特性,就像大企業(yè)兼并小企業(yè),或者直接照搬它們優(yōu)秀的業(yè)務(wù)功能一樣,讓自己變得更好,也更容易被大部分開(kāi)發(fā)者接受。所以要想在編程語(yǔ)言界把“前浪”們拍在沙灘上,“后浪”們要走的路還有很長(zhǎng)很長(zhǎng)。

rust開(kāi)發(fā)php擴(kuò)展,前期學(xué)習(xí)JAVA是照著寫(xiě)代碼好還是背著寫(xiě)好