0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一款最新推出的語言:V

DPVg_AI_era ? 來源:lq ? 2019-06-29 07:47 ? 次閱讀

V是最新出現(xiàn)的一種靜態(tài)編譯型語言,用于構(gòu)建可維護的軟件。它與Go類似,也受到Oberon、Rust、Swift的影響。

開發(fā)者從來就不缺新語言。今天新智元為大家?guī)淼?,是一款最新推出的語言:V。目前處于很早期的階段,暫時還沒有在維基百科上擁有姓名。

V是一種靜態(tài)編譯型語言,用于構(gòu)建可維護的軟件。它與Go類似,也受到Oberon、Rust、Swift的影響。

作者號稱V是一種非常簡單的語言,看官方文檔半個小時就能完全掌握。盡管很簡單,但功能一點都不弱,其它語言可以做的事情V也可以。

作者嘗試使編譯器和vlib的代碼盡可能簡單易讀。用hello world舉例。你可以寫的跟C一樣:

fn main() { //fn是函數(shù)(function) println('hello world')}

也可以寫的像Python

println('hello world')

下面看一段代碼示例:

fn add(x int, y int) int { return x + y}fn sub(x, y int) int { return x - y}

就像在Go和C中一樣,函數(shù)不能重載。這簡化了代碼并提高了可維護性和可讀性。

函數(shù)可以在聲明之前使用:add和sub在main之后聲明,但仍然可以從main調(diào)用。對于V中的所有聲明都是如此,并且不需要頭文件或考慮文件和聲明的順序。

V的目標(biāo)之一是向具有不同編譯器開發(fā)經(jīng)驗的開發(fā)人員開放。作者希望編譯器不再是讓人捉摸不透、只有極少數(shù)人才能理解的黑盒子。

編譯器介紹

在編譯器目錄下,有8個文件,未來有望減少到7個。分別是:

入口函數(shù):main.v

main.v用于V計算出構(gòu)建模式、構(gòu)造編譯器對象(struct V)

創(chuàng)建需要解析的.v文件列表、為每個文件創(chuàng)建一個解析器對象并運行parse()。

出于性能原因,解析器直接發(fā)出C或x64代碼,沒有AST或匯編代碼生成。如果解析成功,則通過合并解析器的輸出并仔細排列所有定義來生成單個C文件。

最后,調(diào)用C編譯器來編譯此C文件并生成可執(zhí)行文件或庫。

parser.v

這是編譯器的核心。parse()方法請求掃描程序為其需要解析的文件生成令牌列表,然后逐個遍歷所有的標(biāo)記即可。

在V中,可以在聲明之前使用對象,因此有2次傳遞。在第一次傳遞期間,它只查看聲明并跳過函數(shù)體。它記憶所有函數(shù)簽名、類型、常數(shù)等;在第二次傳遞期間,它查看函數(shù)體并生成C例如cgen('if($ expr){')或機器代碼例如gen.mov(EDI,1)。

Formatter嵌入在解析器中,在解析時會發(fā)出格式正確的標(biāo)記,可以簡化編譯器并避免重復(fù),但會犧牲速度。

在將來,這將通過構(gòu)建標(biāo)志和單獨的二進制文件來修復(fù),用于C生成,機器代碼生成和格式化,這樣就不會有不必要的分支和函數(shù)調(diào)用。

scanner.v

scanner的工作是解析字符列表并將其轉(zhuǎn)換為令牌。它還負(fù)責(zé)字符串插值,目前這塊還比較混亂。

token.v

只是所有標(biāo)記的簡單列表,包括一些字符串值以及一些輔助函數(shù)。

table.v

V創(chuàng)建一個由所有解析器共享的表對象。它包含所有類型、常數(shù)和函數(shù),以及按名稱搜索對象、注冊新對象、修改類型字段等的幾個幫助器。

cgen.v

Cgen結(jié)構(gòu)有助于生成C代碼,所有解析器也共享它。它有一些函數(shù)可以返回并設(shè)置以前未知的東西(比如:= 0 => int a = 0;)。這塊還需要進一步優(yōu)化和改進。

fn.v

處理聲明和調(diào)用普通和異步函數(shù)和方法。大約有1000行代碼,并且有一些復(fù)雜的邏輯,這塊還需要一些簡化和整理。

json.v

定義json代碼生成。一旦V支持生成comptime代碼,該文件將被刪除,并且可以使用該語言的工具執(zhí)行此操作。

x64/

包含所有機器代碼生成邏輯的目錄,將于7月初完成。顯然,這是編譯器中最復(fù)雜的部分。它定義了一組將匯編指令轉(zhuǎn)換為機器代碼的函數(shù);逐字節(jié)地從頭開始構(gòu)建復(fù)雜的二進制文件;手動構(gòu)建所有header、segment、section,symtable,重定位等。

V的功能及表現(xiàn)

整個語言及其標(biāo)準(zhǔn)庫小于400KB。V就是用V語言攜程的,你可以在0.4秒內(nèi)構(gòu)建它,到今年年底,這個數(shù)字將下降到≈0.15秒。

請看對比:

現(xiàn)在V編譯器確實有一個依賴:C編譯器。但是無論如何都需要引導(dǎo)語言,如果你正在從事開發(fā),顯然已經(jīng)是安裝了C編譯器。這是一個小的依賴,一旦x64 generation足夠成熟就不需要了。

V可以轉(zhuǎn)換整個C或C ++項目,提供安全性,簡單性和高達400倍的編譯速度。

無需重新編譯即可立即獲取更改,每次編譯后也無需進入正在處理的狀態(tài),因此可以節(jié)省大量寶貴的開發(fā)時間。

基于GDI+/Cocoa Drawing構(gòu)建的跨平臺繪圖庫,以及基于OpenGL的圖形庫,用于更復(fù)雜的2D/3D應(yīng)用程序。

V有一個使用本機GUI工具包的ui模塊:Windows上的WinAPI/GDI+,macOS上的Cocoa。在Linux上使用自定義繪圖。

交叉編譯也很簡單,只需運行v -os windows或v -os linux。即使對于GUI和圖形應(yīng)用程序,也無需額外的步驟!

其他更多特性可以去官網(wǎng)閱讀開發(fā)文檔。

最終表現(xiàn)如何呢?根據(jù)作者介紹,V和C一樣快;C interop無需任何成本;分配數(shù)量最少;沒有運行時反射的內(nèi)置序列化;編譯本地二進制文件不需要任何依賴:一個簡單的Web服務(wù)器只有65KB。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 語言
    +關(guān)注

    關(guān)注

    1

    文章

    97

    瀏覽量

    24242
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62618
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1634

    瀏覽量

    49130

原文標(biāo)題:V,新編程語言來襲!與Go類似,跟C一樣快

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Linear推出一款60V的DC/DC控制器LT3761

    凌力爾特公司 (Linear Technology Corporation) 推出一款 60V DC/DC 控制器 LT3761,該控制器以作為恒定電流源和恒定電壓穩(wěn)壓器工作而設(shè)計。
    發(fā)表于 12-04 14:42 ?2224次閱讀
    Linear<b class='flag-5'>推出</b><b class='flag-5'>一款</b>60<b class='flag-5'>V</b>的DC/DC控制器LT3761

    求助一款變壓器?

    現(xiàn)在想把頻率為1MHz,峰峰值為12V的方波升壓到200V左右,沒有找到一款合適的變壓器,有沒有哪位高手熟悉變壓器型號的,給推薦一款。之前用中周升壓過40KHz的,但是中周帶寬有限,不
    發(fā)表于 03-10 11:00

    俄羅斯科技巨頭Yandex推出一款智能音箱 售價160美元

      導(dǎo)讀:5月30日據(jù)國外媒體報道,俄羅斯搜索巨頭Yandex剛剛推出一款家庭語音助理智能揚聲器,希望能夠與亞馬遜Echo和谷歌Google Home等公司的產(chǎn)品直接競爭。 [img][/img
    發(fā)表于 06-05 09:27

    東芝推出一款800萬像素的CMOS圖像傳感器

    支持以相當(dāng)于240fps錄制高速高清視頻東京—東芝公司(TOKYO:6502)推出一款800萬像素的BSI [1] CMOS圖像傳感器“T4KA3”,該傳感器使智能手機和平板電腦能夠以業(yè)界最高的[2]幀率,即相當(dāng)于240幀/秒(fps),錄制高清(HD)視頻。樣品出貨即日
    發(fā)表于 04-27 06:44

    如何用C語言實現(xiàn)一款猜數(shù)字游戲

    如何用C語言實現(xiàn)一款猜數(shù)字游戲
    發(fā)表于 01-06 07:10

    華為海思已推出一款RISC-V開發(fā)板

    ` 本帖最后由 我芯永恒9 于 2021-5-29 01:58 編輯 為了幫助推廣鴻蒙系統(tǒng),華為海思推出一款名為Hi3861開發(fā)板。雖然華為海思并沒有具體透露這個開發(fā)板使用的主芯片是什么架構(gòu)
    發(fā)表于 05-29 01:44

    一款24V轉(zhuǎn)12V穩(wěn)壓電路

    求大佬推薦一款DC24V轉(zhuǎn)12V穩(wěn)壓電路,給15寸顯示器供電,功耗大概6~11W,類似于這種,推薦一款合適的芯片。
    發(fā)表于 05-06 18:16

    TI宣布推出一款完整LED照明驅(qū)動器參考板

    TI宣布推出一款完整LED照明驅(qū)動器參考板    德州儀器 (TI) 聯(lián)合 Lemnis Lighting 宣布推出一款完整 LED照明驅(qū)動器參考板,幫助解決成
    發(fā)表于 04-15 09:35 ?613次閱讀

    Cree推出一款LED LMH6 模組

    LED照明領(lǐng)域的市場領(lǐng)先者Cree 公司 (Nasdaq: CREE) 宣布推出一款LED LMH6 模組,這是一款旨在進步簡化照明設(shè)計、降低整體成本并加速產(chǎn)品上市進程的高流明 LE
    發(fā)表于 04-14 09:34 ?1340次閱讀

    日本公司推出一款“雨傘無人機”,又一款然并卵的發(fā)明

    說到那些然并卵的發(fā)明,日本人民絕對擁有發(fā)言權(quán)。這不,日本家公司就推出一款“雨傘無人機”,著實讓人大開眼界。
    的頭像 發(fā)表于 06-04 15:44 ?4005次閱讀

    蘋果將推出一款名為 AirTag 的新產(chǎn)品

    據(jù)外媒 報道,此前有消息稱蘋果將推出一款名為 AirTag 的新產(chǎn)品,使用戶可以通過 “查找我的網(wǎng)絡(luò)”跟蹤任何對象。
    的頭像 發(fā)表于 11-10 15:46 ?1765次閱讀
    蘋果將<b class='flag-5'>推出</b><b class='flag-5'>一款</b>名為 AirTag 的新產(chǎn)品

    推薦一款基于RISC-V MCU的開源SoC平臺

    無劍100是阿里旗下芯片公司平頭哥(T-Head)推出一款基于RISC-V MCU的開源SoC平臺。
    的頭像 發(fā)表于 10-24 09:36 ?3841次閱讀

    介紹一款輕量級的RISC-V解釋型模擬器

    XEMU 是一款輕量級的 RISC-V 解釋型模擬器,基于 C 語言實現(xiàn),支持 RV32IM 指令集,支持簡單外設(shè)模擬
    的頭像 發(fā)表于 07-22 14:25 ?1958次閱讀
    介紹<b class='flag-5'>一款</b>輕量級的RISC-<b class='flag-5'>V</b>解釋型模擬器

    Meta發(fā)布一款可以使用文本提示生成代碼的大型語言模型Code Llama

    今天,Meta發(fā)布了Code Llama,一款可以使用文本提示生成代碼的大型語言模型(LLM)。
    的頭像 發(fā)表于 08-25 09:06 ?1501次閱讀
    Meta發(fā)布<b class='flag-5'>一款</b>可以使用文本提示生成代碼的大型<b class='flag-5'>語言</b>模型Code Llama

    英飛凌聯(lián)手日本歐姆龍推出一款集成GaN技術(shù)的V2X充電樁

    近日,英飛凌聯(lián)手日本歐姆龍推出一款集成GaN技術(shù)的V2X 充電樁。
    的頭像 發(fā)表于 01-19 10:23 ?1160次閱讀
    英飛凌聯(lián)手日本歐姆龍<b class='flag-5'>推出</b>了<b class='flag-5'>一款</b>集成GaN技術(shù)的<b class='flag-5'>V</b>2X充電樁