吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一款最新推出的語言:V

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

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

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

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

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

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

fn main() { //fn是函數(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中一樣,函數不能重載。這簡化了代碼并提高了可維護性和可讀性。

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

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

編譯器介紹

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

入口函數:main.v

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

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

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

最后,調用C編譯器來編譯此C文件并生成可執行文件或庫。

parser.v

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

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

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

在將來,這將通過構建標志和單獨的二進制文件來修復,用于C生成,機器代碼生成和格式化,這樣就不會有不必要的分支和函數調用。

scanner.v

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

token.v

只是所有標記的簡單列表,包括一些字符串值以及一些輔助函數。

table.v

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

cgen.v

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

fn.v

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

json.v

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

x64/

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

V的功能及表現

整個語言及其標準庫小于400KB。V就是用V語言攜程的,你可以在0.4秒內構建它,到今年年底,這個數字將下降到≈0.15秒。

請看對比:

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

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

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

基于GDI+/Cocoa Drawing構建的跨平臺繪圖庫,以及基于OpenGL的圖形庫,用于更復雜的2D/3D應用程序。

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

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

其他更多特性可以去官網閱讀開發文檔。

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 語言
    +關注

    關注

    1

    文章

    97

    瀏覽量

    24290
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62968
  • 編譯器
    +關注

    關注

    1

    文章

    1642

    瀏覽量

    49283

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

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

收藏 人收藏

    評論

    相關推薦

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

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

    求助一款變壓器?

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

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

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

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

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

    如何用C語言實現一款猜數字游戲

    如何用C語言實現一款猜數字游戲
    發表于 01-06 07:10

    華為海思已推出一款RISC-V開發板

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

    一款24V轉12V穩壓電路

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

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

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

    Cree推出一款LED LMH6 模組

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

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

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

    蘋果將推出一款名為 AirTag 的新產品

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

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

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

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

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

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

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

    英飛凌聯手日本歐姆龍推出一款集成GaN技術的V2X充電樁

    近日,英飛凌聯手日本歐姆龍推出一款集成GaN技術的V2X 充電樁。
    的頭像 發表于 01-19 10:23 ?1243次閱讀
    英飛凌聯手日本歐姆龍<b class='flag-5'>推出</b>了<b class='flag-5'>一款</b>集成GaN技術的<b class='flag-5'>V</b>2X充電樁
    大发888的微博| 大发888娱乐场网页| tt娱乐城官方网站| 百家乐官网怎么会赢| 七胜百家乐官网娱乐城总统网上娱乐城大都会娱乐城赌场 | 博E百百家乐官网的玩法技巧和规则 | bet365 体育在线uo| 百家乐官网注册开户送彩金| 百家乐官网扑克牌手机壳| 百家乐大| 逊克县| 肯博百家乐游戏| 水果机破解| 百家乐官网真人游戏网上投注 | 新时代百家乐官网的玩法技巧和规则 | 青河县| 百家乐官网必胜打| 星河百家乐的玩法技巧和规则| 迭部县| 百家乐官网软件代理打| 威尼斯人娱乐城网络百家乐| 博久百家乐官网论坛| 百家乐神仙道礼包| bet365进不去| 百家乐官网国际赌场娱乐网规则 | 百家乐赌王有哪些| 皇冠娱乐场| 百家乐官网77scs| 新花园百家乐的玩法技巧和规则 | 阴宅风水24山分房| 顶级赌场是真的吗| 老虎百家乐官网的玩法技巧和规则| 宝龙百家乐的玩法技巧和规则 | 24山向什么最好| bet365提款| 百家乐官网又称为什么| 大发888娱乐场下载yguard| 百家乐官网增值公式| 百家乐庄闲和各是多少| 奉新县| 百家乐翻牌规则|