近日,V 语言开发者在 Twitter 上发布消息,V0.1 已开源,可下载 Linux,macOS,Windows 版本或用不到一秒的时间从源代码构建它,甚至可以在 Android 上运行。

Twitter 截图据V 语言官网介绍,V 语言是一种静态编译编程语言,用于构建可维护的软件。它与 Go 类似,并受 Oberon,Rust,Swift 的影响。其操作简便,只需花费 30 分钟阅读说明即可基本学会整个语言。

目前,编程语言已经数量可观,为什么还要创建 V 语言?开发者 Alex Medvednikov 表示,因为现有语言都无法囊括以下所有功能,而 V 语言可以实现。

图源:V 语言官网

开发者提及的主要特性

快速编译

每个 CPU 核心每秒大约可编译 120 万行代码;

这一速度是通过直接的机器代码生成和强大的模块化实现的;

可在 0.3-0.6 秒内自我编译;

V 也可以发出 C,但编译速度会有所下降。

性能

和 C 一样快;

与 C 互操作无需任何成本;

分配数量最少;

没有运行时反射的内置序列化;

编译为没有任何依赖关系的本机二进制文件:一个简单的 Web 服务器只有 65 KB。

400 KB 编译器 零依赖性

整个语言及其标准库小于 400 KB。V 用 V 语言编写,人们可以在 0.4 秒内构建它。到今年年底,这个数字将会提升至约 0.15 秒。以下是各种语言的对比结果:

语言

所需空间

建立时间

Go

525MB

1 分 33 秒

Rust

30GB

45 分

GCC

8GB

50 分

Clang

90GB

25 分

Swift

70GB

90 分

V

0.4MB

0.4 秒

现在 V 编译器确实有一个依赖,那就是 C 编译器。未来,一旦 x64 代足够成熟就不需要它。

C / C ++ 翻译

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

轻松完成交叉编译

要交叉编译软件,只需运行 v -os windows . 或 v -os linux .,不需要额外的步骤,即使对于 GUI 和图形应用程序!

与其他语言的差异

与 C ++ 相比,V 要简单得多。它提供高达 400 倍的编译速度,安全性强,缺少未定义的行为,易于并发,编译时间代码生成等。

与 Python 相比,V 更快,更简单,更安全,更易于维护。

V 与 Go 非常相似,在以下方面,V 有所改进:

图源:V 语言官网V 的域与 Rust 类似,Rust 是一种复杂的语言,具有越来越多的功能和陡峭的学习曲线。V 的目标是允许构建可维护且可预测的软件,这就是 V 语言为何如此简单。它的好处在于,你可以跳进项目中的任何部分,了解正在发生的事情,它只有一种做事方式。此外,Rust 的编译速度很慢,与 C ++ 相当,而 V 每秒每个 CPU 可编译 120 万行代码。

官网显示,V 语言支持 Windows,macOS,Linux,* BSD 系统,今年晚些时候,在 Android 和 iOS 上也可以投入使用。开发者 Alex Medvednikov 表示,V1.0 将于今年年底前推出。在 V1.0 发布前,V 语言不会有太大的变化,除了可能会添加一些新功能,如 goroutines。

网友评论褒贬不一

对于这门新兴的语言,一些网友在 V 语言官网晒出支持。

图源:V 语言官网然而,6 月下旬 V0.1 开源后,质疑声纷至沓来。InfoQ 对网上观点进行了简要汇总,具体观点如下:

观点一:实际体验与开发者介绍不符

在 Reddit 上的一篇热门文章《V is for Vaporware》下,有近 350 条网友评论,可以看出,人们对这门新语言开源后的表现非常关注。文章开篇即指出,“V 语言是一种被大肆宣传的语言,(V 语言官网)提及的一些功能都是处于’正在进行中‘的状态或源存储库中完全不存在”。

在网友评论上,提及最多的便是技术实现粗糙的问题。如,翻译出来的 C 语言混乱;一些基础的数据结构都没有得到好的支持;没有二维或更高维的数组支持;Map 只是一个数组;测试用例过于简单;总共不足 50 个文件。基本上,不能称之为是一个完整的项目,离真正的语言还相距甚远。

观点二:东拼西凑的半成品语言 没有新特性

新语言的开拓离不开生态系统。V 语言能否屹立市场,很大程度上在于能否建立具有个人风格的生态系统。而整个 V 语言的开发者只有一人,虽然达到这样的完成度实属不易,但 V 语言本身没有任何新特性产生,看上去像是 Go 的翻版。此外,V 语言的开发者几乎就是把 Rust 的一些特性牵强地揉进 Go 里,造成 Go 和 Rust 都失去了自身的优点。有网友甚至认为,V 语言就目前看来就是一个翻译机,根本不能称之为语言。

观点三:站在巨人的肩膀上 夸大自身特性

开发者在介绍中表示, V 语言目前是没有 GC 的,V 的内存管理类似于 Rust 。但 Rust 中引入的所有权和生命周期的概念,在 V 语言中都还没有得到体现。那么,V 语言在内存管理方面就不得不令人存疑。V 语言的目标是不用 LLVM,直接生成机器码。而作为一个翻译到 C 语言的新语言表示自己没有依赖 LLVM 和自己的速度显得有失偏颇。

对于这个出自新手的新语言,《V is for Vaporware》的作者 Christine Dodrill 总结道,这是一款非常 alpha 的产品。

在评论中可以明显看到,一些网友往往会联想到近期颇为火爆的 Go,称其为 Go 的孪生兄弟,甚至是山寨版,并且把 V 语言在传播层面的成功归结为一种盲目的跟风、炒作,同样遭受质疑的还有官网中提到的“30 分钟掌握一门语言“的言论。对于这样一门毁誉参半的新语言,你怎么看?

c v开发语言,被质疑的 V 语言相关推荐

  1. Go 语言的%d,%p,%v等占位符的使用

    Go语言的%d,%p,%v等占位符的使用 1.首先需要了解哪些占位符分别代表什么 这些是死知识,把常用的记住,不常用的直接查表就行了 golang 的fmt 包实现了格式化I/O函数,类似于C的 pr ...

  2. 在Livemedia的基础上开发自己的流媒体客户端 V 0.01

    在Livemedia的基础上开发自己的流媒体客户端 V 0.01 桂堂东 xiaoguizi@gmail.com 2004-10 2004-12 友情申明: 本文档适合已经从事流媒体传输工作或者对网络 ...

  3. Go语言开发(九)、Go语言并发编程

    Go语言开发(九).Go语言并发编程 一.goroutine简介 1.并发与并行简介 并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行. 并发(concurrency):指在同 ...

  4. Gox语言——支持跨平台原生GUI开发的轻量级全功能脚本语言 - GX1

    Gox语言是以Go语言(Golang)为基础的解释型/脚本语言,它除了具有一般脚本语言所具有的编写快捷.语言简洁.易于理解等特点外,还支持其他语言所不具备的跨平台原生图形界面(GUI)开发,并且代码写 ...

  5. python基于什么语言-一种基于Python语言的EDA开发平台及其使用方法与流程

    本发明涉及EDA开发的技术领域,尤其是指一种基于Python语言的EDA开发平台及其使用方法. 背景技术: 目前,主流的EDA设计语言Verilog HDL能实现完整的芯片硬件逻辑电路开发,但是其代码 ...

  6. oracle v$sql last_load_time,Oracle 等待事件V$视图

    等待事件V$视图 本节包含一些显示等待事件的V$ 脚本.从个人角度来说,我更喜欢使用STATSPACK 报表.AWR 报表或企业管理器来查找等待事件.也就是说,有些很好的视图可以查看等待事件. Ora ...

  7. 学会c语言开发出很多,学会了C语言可以开发出很多东西吗?

    C语言相比其他高级语言,就像内功和剑法一样.只会C语言可能并不能写出一个看起来就很厉害的程序,但C语言是你学好其他一切语言的基础.有了C语言的底子,再学别的语言就很容易上手了. 你能想到的,C语言都能 ...

  8. 前端开发最基本的3个语言

    做软件开发,是从事编程开发工作,必须先从语法基础开始学习,通过语法组成产品效果. 前端开发的基础语法,由HTML+CSS+JavaScript组成,这是前端开发最基本的3个语言. 网页布局基础:HTM ...

  9. 【链块技术10期】区块链基础语言(二)——GO语言开发环境搭建

    ‍原文链接:区块链基础语言(二)--Go语言开发环境搭建 一.操作系统位数的查询方法‍ 在安装前首先要了解个人的电脑系统位数是32位还是64位. 1.1Windows系统查询方法 右击"计算 ...

最新文章

  1. Google Test(GTest)使用方法和源码解析——自定义输出技术的分析和应用
  2. Java帝国对Python的渗透能成功吗?
  3. ubuntu phpinfo mysql_Ubuntu 16.04 apache+php+mysql环境搭建
  4. 技术实践 | 网易云信 QUIC 加速服务架构与实践
  5. Java的agent机制简述
  6. 利用有名管道实现进程间的通信
  7. Java中implies_boolean implies(Permission p)
  8. java 学习笔记_java学习笔记
  9. mysql 无法创建用户_mysql不能创建用户
  10. pandas 下的 one hot encoder 及 pd.get_dummies() 与 sklearn.preprocessing 下的 OneHotEncoder 的区别
  11. 安装SQL2000时弹出“以前的某个程序安装已在安装计算机上创建挂起的文件操作、、、”...
  12. json rpgmv 加密_【RPG Maker MV插件编程】【实例教程6】存档的加密解密与保护
  13. 2019\National _C_C++_A\试题 A: 三升序列
  14. 小程序实现6位数密码框
  15. redis 8.Redis持久化之RDB (如何触发RDB快照;rdb备份恢复)
  16. ubuntu清理缓存
  17. 电子政务网络智慧运维方案
  18. NVMe系列专题之二:队列(Queue)管理
  19. jadx 支持 Windows、Linux、 macOS,能够帮我们打开.apk, .dex, .jar,.zip等格式的文件
  20. CSP 202012-5 星际旅行(60分)

热门文章

  1. 编译报错unable to initialize decompress status for section .debug_info
  2. 听课感悟——信息与信息特征
  3. ROS机器人建模与仿真(一)——URDF模型的建立和改进
  4. linux内存占用过高问题解决方法
  5. 5g宣传方案_活动创意策划方案要向“5G时代”看齐
  6. 54. Java序列化三连问,是什么?为什么需要?如何实现?
  7. JavaScript笔记(狂神说)
  8. ElementUI表格中显示图片,悬浮显示放大图片
  9. [TIM] 微信登录TIM生产QQ号【并独立使用】
  10. Unity3d中的走路动画