c语言和vc的区别_c++是c语言的升级版吗

c语言和vc的区别_c++是c语言的升级版吗returnx+y}fnsub(x,yint)int{returnx-y}就像在Go和C中一样,函数不能重载。这简化了代码并提高了可维护性和可读性。函数可以在声明之前使用:add和sub在main之后声明,但仍然可以从main调用。对于V中的所有声明都是如此,并且不需要头文件或考虑文件和声明的顺序。V的目标之一是向具有不同编译器开发经验的开发人员开放。作者希望编译器不再是让人捉摸不透、只…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

returnx+ y

}

fn sub(x, yint) int{

returnx- y

}

就像在Go和C中一样,函数不能重载。这简化了代码并提高了可维护性和可读性。

函数可以在声明之前使用:add和sub在main之后声明,但仍然可以从main调用。对于V中的所有声明都是如此,并且不需要头文件或考虑文件和声明的顺序。

V的目标之一是向具有不同编译器开发经验的开发人员开放。作者希望编译器不再是让人捉摸不透、只有极少数人才能理解的黑盒子。

07fb11aad294b201bfd3d53801bfa608.gif

编译器介绍

在编译器目录下,有8个文件,未来有望减少到7个。分别是:

1

入口函数:main.v

main.v用于V计算出构建模式、构造编译器对象(struct V)

创建需要解析的.v文件列表、为每个文件创建一个解析器对象并运行parse。

出于性能原因,解析器直接发出C或x64代码,没有AST或汇编代码生成。如果解析成功,则通过合并解析器的输出并仔细排列所有定义来生成单个C文件。

最后,调用C编译器来编译此C文件并生成可执行文件或库。

2

parser.v

这是编译器的核心。parse方法请求扫描程序为其需要解析的文件生成令牌列表,然后逐个遍历所有的标记即可。

在V中,可以在声明之前使用对象,因此有2次传递。在第一次传递期间,它只查看声明并跳过函数体。它记忆所有函数签名、类型、常数等;在第二次传递期间,它查看函数体并生成C例如cgen(‘if($ expr){‘)或机器代码例如gen.mov(EDI,1)。

Formatter嵌入在解析器中,在解析时会发出格式正确的标记,可以简化编译器并避免重复,但会牺牲速度。

在将来,这将通过构建标志和单独的二进制文件来修复,用于C生成,机器代码生成和格式化,这样就不会有不必要的分支和函数调用。

3

scanner.v

scanner的工作是解析字符列表并将其转换为令牌。它还负责字符串插值,目前这块还比较混乱。

4

token.v

只是所有标记的简单列表,包括一些字符串值以及一些辅助函数。

5

table.v

V创建一个由所有解析器共享的表对象。它包含所有类型、常数和函数,以及按名称搜索对象、注册新对象、修改类型字段等的几个帮助器。

6

cgen.v

Cgen结构有助于生成C代码,所有解析器也共享它。它有一些函数可以返回并设置以前未知的东西(比如:= 0 => int a = 0;)。这块还需要进一步优化和改进。

7

fn.v

处理声明和调用普通和异步函数和方法。大约有1000行代码,并且有一些复杂的逻辑,这块还需要一些简化和整理。

8

json.v

定义json代码生成。一旦V支持生成comptime代码,该文件将被删除,并且可以使用该语言的工具执行此操作。

9

x64/

包含所有机器代码生成逻辑的目录,将于7月初完成。显然,这是编译器中最复杂的部分。它定义了一组将汇编指令转换为机器代码的函数;逐字节地从头开始构建复杂的二进制文件;手动构建所有header、segment、section,symtable,重定位等。

V的功能及表现

整个语言及其标准库小于400KB。V就是用V语言携程的,你可以在0.4秒内构建它,到今年年底,这个数字将下降到≈0.15秒。

2b0fdd9a29f197f7e198b6499ecf1f89.png

18da92dc54259f6bd4b57009d2a8b6dd.png

现在V编译器确实有一个依赖:C编译器。但是无论如何都需要引导语言,如果你正在从事开发,显然已经是安装了C编译器。这是一个小的依赖,一旦x64 generation足够成熟就不需要了。

V可以转换整个C或C ++项目,提供安全性,简单性和高达400倍的编译速度。

无需重新编译即可立即获取更改,每次编译后也无需进入正在处理的状态,因此可以节省大量宝贵的开发时间。

基于GDI+/Cocoa Drawing构建的跨平台绘图库,以及基于OpenGL的图形库,用于更复杂的2D/3D应用程序。

V有一个使用本机GUI工具包的ui模块:Windows上的WinAPI/GDI+,macOS上的Cocoa。在Linux上使用自定义绘图。

f3e9f784df7ae00337a2d6d64f40fd89.png

交叉编译也很简单,只需运行v -os windows或v -os linux。即使对于GUI和图形应用程序,也无需额外的步骤!

最终表现如何呢?根据作者介绍,V和C一样快;C interop无需任何成本;分配数量最少;没有运行时反射的内置序列化;编译本地二进制文件不需要任何依赖:一个简单的Web服务器只有65KB。

参考链接:https://github.com/vlang/v(点击“阅读原文”可查看)

来源:github,新智元(版权归原作者及刊载媒体所有)

编辑 / 卜玺 审核/裴家珍 李发东返回搜狐,查看更多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170081.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月12日 上午6:36
下一篇 2022年8月12日 上午6:36


相关推荐

  • JS判断数据类型的方法有哪些_c语言数据类型

    JS判断数据类型的方法有哪些_c语言数据类型javascript判断数据类型的方法

    2025年9月17日
    8
  • 数据中心网络架构 — 网络带宽的收敛比

    数据中心网络架构 — 网络带宽的收敛比目录文章目录目录什么是带宽收敛比 交换机非线速导致的收敛网络设计导致的收敛什么是带宽收敛比 带宽收敛 是指数据报文在数据中心网络架构的转发过程中 由于网络架构 网络设备等非故障原因而不能实现 线速无丢包 即 无阻塞交换 的数据报文转发 在带宽收敛时 网络设备会有部分端口会被拥塞 进而丢弃部分报文 而带宽收敛比 则是用于描述不同的收敛成都的一个数值 通常的 使用一个网络架构中的所有南向 下行 接口的总带宽比上所有北向 上行 接口的总带宽来表示 例如 假设有 10 台服务器 每台服务器通过 10

    2026年3月19日
    2
  • Java遍历Map效率对比

    Java遍历Map效率对比Java中Map容器的遍历有多种方式,但是不同的方式效率会大有不同,以前没有注意这些细节,随意使用遍历方式在本地可能没有什么影响,但是在项目在高频使用需要特别注意,尽量使用高效的方式。首先,Map.Entry<K,V>是可以包含了Key和Value的,keySet包含了所有的Key,再使用get方法可以拿到对应的Value;所以包含Key和Value内容…

    2022年4月7日
    69
  • 跨域,同源策略

    跨域,同源策略跨域问题涉及到 WEB 网页安全性问题 使用不当会造成用户隐私泄露风险 但有时业务上又需要进行跨域请求 如何正确的使用跨域功能 既能满足业务需求 又能够满足安全性要求 显得尤为重要 1 1 同源策略协议相同 域名相同 端口相同同源策略限制内容有 Cookie LocalStorage IndexedDB 等存储性内容 DOM 节点 AJAX 请求发送后 结果被浏览器拦截了同源政策的目的 是为了保证用户信息的安全 防止恶意的网站窃取数据 1 2 为什么要有跨域限制 Ajax 的同源策

    2026年3月17日
    1
  • html中table美化,漂亮的css table样式「建议收藏」

    html中table美化,漂亮的css table样式「建议收藏」工作中发邮件通知人员样式总是一个麻烦事,工作的严肃性不能让邮件样式太花哨,但是又不能太简陋,所以找了下面的table样式和大家分享。效果如下图所示:漂亮CSSTables-幸凡学习网body{font:normal11pxauto”TrebuchetMS”,Verdana,Arial,Helvetica,sans-serif;color:#4f6b72;backgroun…

    2026年2月2日
    5
  • 怎样才算得上是全栈程序员?

    与其他互联网热词一样,”全栈“程序员也是英译过来的,英文全文是:Full-Stack Developer,你想啊,中国人民怎么会用客栈的栈、堆栈的栈来形容工程师呢? 谈论一个概念,…

    2020年10月17日
    4.1K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号