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

    文章

    96

    浏览量

    24214
  • 函数
    +关注

    关注

    3

    文章

    4276

    浏览量

    62303
  • 编译器
    +关注

    关注

    1

    文章

    1615

    浏览量

    49007

原文标题:V,新编程语言来袭!与Go类似,跟C一样快

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

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

    凌力尔特公司 (Linear Technology Corporation) 推出一款 60V DC/DC 控制器 LT3761,该控制器以作为恒定电流源和恒定电压稳压器工作而设计。
    发表于 12-04 14:42 2190次阅读
    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

    一款12V转5V低功耗的电压芯片

    一款12V转5V的电压芯片,空载情况下,尽可能的电流小,因为是用电池做电源,要求低功耗,我现在用的LM2842,静态功耗为1.5mA。大家能不能推荐一款这样的芯片,静态电流最好比1.
    发表于 05-21 00:40

    东芝推出一款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

    Cree推出一款LED LMH6 模组

    LED照明领域的市场领先者Cree 公司 (Nasdaq: CREE) 宣布推出一款LED LMH6 模组,这是一款旨在进步简化照明设计、降低整体成本并加速产品上市进程的高流明 LE
    发表于 04-14 09:34 1284次阅读

    日本公司推出一款“雨伞无人机”,又一款然并卵的发明

    说到那些然并卵的发明,日本人民绝对拥有发言权。这不,日本家公司就推出一款“雨伞无人机”,着实让人大开眼界。
    的头像 发表于 06-04 15:44 3962次阅读

    苹果将推出一款名为 AirTag 的新产品

    据外媒 报道,此前有消息称苹果将推出一款名为 AirTag 的新产品,使用户可以通过 “查找我的网络”跟踪任何对象。
    的头像 发表于 11-10 15:46 1729次阅读
    苹果将<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 3645次阅读

    介绍一款轻量级的RISC-V解释型模拟器

    XEMU 是一款轻量级的 RISC-V 解释型模拟器,基于 C 语言实现,支持 RV32IM 指令集,支持简单外设模拟
    的头像 发表于 07-22 14:25 1802次阅读
    介绍<b class='flag-5'>一款</b>轻量级的RISC-<b class='flag-5'>V</b>解释型模拟器

    Meta发布一款可以使用文本提示生成代码的大型语言模型Code Llama

    今天,Meta发布了Code Llama,一款可以使用文本提示生成代码的大型语言模型(LLM)。
    的头像 发表于 08-25 09:06 1394次阅读
    Meta发布<b class='flag-5'>一款</b>可以使用文本提示生成代码的大型<b class='flag-5'>语言</b>模型Code Llama

    英飞凌联手日本欧姆龙推出一款集成GaN技术的V2X充电桩

    近日,英飞凌联手日本欧姆龙推出一款集成GaN技术的V2X 充电桩。
    的头像 发表于 01-19 10:23 1068次阅读
    英飞凌联手日本欧姆龙<b class='flag-5'>推出</b>了<b class='flag-5'>一款</b>集成GaN技术的<b class='flag-5'>V</b>2X充电桩