自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Google終于開始革C++的命了!

開發(fā) 前端
看著Google以及其他國外大廠孜孜不倦地折騰新語言,新系統(tǒng),不由得聯(lián)想到國內(nèi)的大廠,能不能也學(xué)學(xué)人家,投入資源,做一點兒底層的東西,對IT界做點兒貢獻(xiàn)了?別老是在應(yīng)用層琢磨商業(yè)模式了。

微軟通過TypeScript 革了JavaScript的命。

圖片

蘋果用Swift革了Objective-C的命。

圖片

JetBrains 用Kotlin 革了Java的命。

圖片

現(xiàn)在,Google終于要拿C++開刀了。

圖片

這個黑色圓圈中的C可不是C語言,而是叫做:

Carbon

為啥Google要搞一個Carbon呢?C++不是Google的五大語言之一嗎?

C++,Java,Python,JavaScript,Go

長期以來,C++是構(gòu)建性能關(guān)鍵型應(yīng)用程序員的主要語言,也積累了大量的項目和類庫。

但是C++本身非常復(fù)雜,數(shù)十年下來,這些項目和類庫慢慢變成了技術(shù)債務(wù)。

C++雖然也在努力發(fā)展,但是受到了官僚委員會流程的阻礙,這個流程以標(biāo)準(zhǔn)化而不是設(shè)計為導(dǎo)向,添加新功能很困難,一個特別委員會可能需要數(shù)年的瀑布流程才能做出重要決定。

可以想象,當(dāng)Google的人面對著海量C++代碼的系統(tǒng),想改進C++又很難的時候,那種無奈的心情。

既然如此,那就重啟爐灶,用碳(Carbon)去燃燒C++吧!

為什么不直接用Rust? 

可能很多人有這個疑問,Rust也面向系統(tǒng)級編程,并且被Mozilla設(shè)計成內(nèi)存安全的語言,用來替代C語言。

圖片

Google認(rèn)為,對于新項目來說,用Rust很合適,但是問題在于:

它不像 Java 和 Kotlin 那樣具有“雙向互操作性”,C++的生態(tài)遷移到Rust是很困難的。

而Carbon的目標(biāo)是C++的后繼,是圍繞與C++的互操作性以及遷移現(xiàn)有C++代碼庫而設(shè)計的。 

不得不說,生態(tài)的威力再一次展現(xiàn),當(dāng)你想讓別人搬家的時候,最好能把他手頭的財產(chǎn)一并都搬走,否則每個人都會戀戀不舍。

Carbon的設(shè)計目標(biāo)是這樣的:

  • 性能要和C++相媲美,要不然就沒有吸引力了
  • 和C++無縫的,雙向的互操作
  • 代碼應(yīng)該容易編寫、閱讀
  • 有著實用的安全和測試機制
  • 要有一個溫和的學(xué)習(xí)曲線,別把人都嚇跑了
  • 支持現(xiàn)有的軟件設(shè)計和架構(gòu)

開發(fā)團隊還將著手創(chuàng)建一個內(nèi)置的包管理器,這幾乎是每個語言必備的工具了。

這樣,Carbon就可以像TypeScript和Kotlin那樣,基于現(xiàn)有C++的生態(tài)系統(tǒng),吸引開發(fā)人員,保護現(xiàn)有投資。 

看下Carbon的代碼吧:

import Console;


// Prints the Fibonacci numbers less than `limit`.
fn Fibonacci(limit: i64) {
var (a: i64, b: i64) = (0, 1);
while (a < limit) {
Console.Print(a, " ");
let next: i64 = a + b;
a = b;
b = next;
}
Console.Print("\n");
}

用fn來定義函數(shù),用var 來聲明變量,變量類型后置,有Go語言的影子。

用大括號定義函數(shù)體和代碼塊,用分號來分割語句,while 關(guān)鍵字, 有C語言的感覺。

Console.Print(...),有點C#的味道。

總之,雖然號稱是C++的后繼,但一點兒也不像C++。

語言特性

我瀏覽了一下,感興趣的特性有這些:

指針

指針號稱是C語言和C++的精華,可以直接操作內(nèi)存,強大又靈活。

不過指針也是萬惡之源,把指針指向不該指向的地方,程序馬上崩潰。

Carbon中也有指針:T* p , 但是為了安全,并不支持指針的算術(shù)運算如 p++

Carbon中沒有空指針,要指向一個無效的對象,需要使用Optional(T*)

既然有指針,還要和C++互操作,那垃圾收集之類的技術(shù)肯定是沒法用了,自己小心地管理內(nèi)存吧。

只提供一種方法來做事情

對于一件事情,Perl語言提供了很多方式來做,在非常靈活的同時也讓代碼維護者非常困擾。

C++也是這樣,例如可以用 "&&" 或者 "and"來表示邏輯運算,可以用struct 和class 來封裝數(shù)據(jù)??梢杂?xaa和0xAA表示十六進制。

為了提高代碼的可讀性和可維護性,促進團隊協(xié)作,Carbon決定向Python學(xué)習(xí):應(yīng)該只有一種最好的,最明顯的方式來做事情。

安全

Carbon 對軟件的考量是這樣的:

內(nèi)存安全:不允許越界訪問,取消null指針,取消未初始化的指針,禁止訪問已經(jīng)釋放的地址

類型安全:不允許用不正確的類型來訪問有效的內(nèi)存

數(shù)據(jù)競爭安全:防止多個線程在沒有“同步”的情況下對內(nèi)存地址進行讀寫

其他的特性例如泛型、類.....我這里就不一一贅述了,感興趣的可以到GitHub上去看看:https://github.com/carbon-language/carbon-lang

開發(fā)方式

Carbon 是Google內(nèi)部發(fā)起的,但是Carbon團隊認(rèn)為為了未來取得成功,未來需要獨立的、開放的社區(qū)來主導(dǎo)。

不能像C++委員會那樣,雖然保證了國家和公司的代表性,但是限制太多,成本高昂,不出席會議就沒有發(fā)言權(quán),只有現(xiàn)場人員的投票才能決定。

這和現(xiàn)在的主流開源方式大相徑庭,所以Carbon不走“ISO流程”,要擁抱開源,將來由軟件基金會和志愿者領(lǐng)導(dǎo)。

一點兒想法

看著Google以及其他國外大廠孜孜不倦地折騰新語言,新系統(tǒng),不由得聯(lián)想到國內(nèi)的大廠,能不能也學(xué)學(xué)人家,投入資源,做一點兒底層的東西,對IT界做點兒貢獻(xiàn)了?別老是在應(yīng)用層琢磨商業(yè)模式了。

我相信,經(jīng)過20多年的發(fā)展,國內(nèi)絕對有人有能力做類似事情,就看有沒有環(huán)境去做了。

對了,順便說一句,我們公司在招聘Carbon程序員,年薪大概是12萬美元~16萬美元,歡迎投簡歷!

要求:有10年Carbon開發(fā)經(jīng)驗。

圖片

責(zé)任編輯:武曉燕 來源: 碼農(nóng)翻身
相關(guān)推薦

2019-03-04 08:48:23

Spring WebFJavaIO

2023-10-17 20:21:25

百度AI原生思維

2011-10-10 08:54:09

Siri蘋果語音識別

2015-10-16 09:35:23

支付寶更新微信

2023-09-26 07:22:20

2013-01-18 09:25:48

微信移動應(yīng)用YY

2019-05-15 10:55:07

機器學(xué)習(xí)數(shù)據(jù)庫索引

2018-08-07 14:55:37

2015-08-10 13:32:43

運維公有云自動化運維

2016-07-25 14:31:04

辦公I(xiàn)T環(huán)境

2015-08-19 10:29:50

無線通信藍(lán)牙

2013-08-20 09:49:43

2011-12-06 10:18:31

QQ通訊錄VOIP

2023-07-25 12:21:27

AI相機

2017-08-14 15:47:32

人工智能Human Dx診斷

2018-07-23 14:57:12

2017-12-12 11:18:03

微信語音聊天

2015-07-27 18:23:13

google

2015-12-15 10:32:44

chromecss開發(fā)

2013-06-06 15:16:28

點贊
收藏

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