这个结合了 Go 和 Rust 特性的新语言 V,正式发布了首个可用版本。

整理 | 郭芮

出品 | CSDN(ID:CSDNnews)

长久以来,编程语言在语法、语义和标准库等方面都存在着千差万别,使得程序员在选择时不得不面临着差异化等难题。自然选择下,就会有旧语言的淘汰(PHP 是个意外,至今还存在)和新语言的诞生。在 JetBrains 最新发布的《2019 开发人员生态系统现状》报告中,Java、Python、C/C#、JavaScript 等主流的编程语言在历经实践考验后依然是开发者们的心头好。

而本文的主角 V 语言,在千呼万唤之后,终于于近日开源了,并正式发布了首个可用版本(预构建的二进制文件也即将推出)!其一经发布,便强势登顶 GitHub TOP1,引来开发者们的热议围观。

(https://github.com/vlang/v/releases/tag/v0.0.12)

根据介绍,V 是一种新型的静态编译型语言,可以“快速编译、安全且和 C/C++ 转换”,其提供了方便、快捷、安全的编程语言和工具包,还能够很好地服务于区块链技术。

V 语言作者 Reishi Saza 就表示,它是一种非常简单的语言,看官方文档 30 分钟就能完全掌握。而且,其编译器只有 400KB,无任何第三方依赖。

(作者展示的应用示例:V 语言建立的 macOS Demo)

V 的核心 CPU 每秒可以编译大约 120 万行代码,这种速度是通过生成的机器代码和强大的模块化来实现的,但是目前仅支持 x64/Mach-O,预计到今年年底才能足够稳定。而在性能表现上,V 可以做到和 C 一样快,且能够翻译整个 C 或 C++ 项目,实现高达 400x 的编译速度。

std::vector<std::string> s;s.push_back("V is ");s.push_back("awesome");std::cout << s.size();mut s := []s << 'V is 's << 'awesome'println(s.len)
s.push_back("V is ");
s.push_back("awesome");
std::cout << s.size();mut s := []
s << 'V is '
s << 'awesome'
println(s.len)

目前,整个 V 语言及其标准库小于 400 KB,开发者在 0.4 秒内就可以构建它。并且到今年年底,这个数字还将下降到大约 0.15 秒。

此外,开发者们还在官网上放出了部分示例代码。更多编译器函数介绍可参见官方网站:https://vlang.io/。

1、数据库访问:

struct User { /* ... */ }struct Post { /* ... */ }struct DB   { /* ... */ }struct Repo <T> {    db DB}fn new_repo<T>(db DB) Repo {    return Repo<T>{db: db}}fn (r Repo) find_by_id(id int) T? { // `?` means the function returns an optional    table_name := T.name // in this example getting the name of the type gives us the table name    return r.db.query_one<T>('select * from $table_name where id = ?', id)}fn main() {    db := new_db()    users_repo := new_repo<User>(db)    posts_repo := new_repo<Post>(db)    user := users_repo.find_by_id(1) or {        eprintln('User not found')        return    }    post := posts_repo.find_by_id(1) or {        eprintln('Post not found')        return    }} /* ... */ }
struct Post { /* ... */ }
struct DB   { /* ... */ }struct Repo <T> {db DB
}fn new_repo<T>(db DB) Repo {return Repo<T>{db: db}
}fn (r Repo) find_by_id(id int) T? { // `?` means the function returns an optionaltable_name := T.name // in this example getting the name of the type gives us the table namereturn r.db.query_one<T>('select * from $table_name where id = ?', id)
}fn main() {db := new_db()users_repo := new_repo<User>(db)posts_repo := new_repo<Post>(db)user := users_repo.find_by_id(1) or {eprintln('User not found')return}post := posts_repo.find_by_id(1) or {eprintln('Post not found')return}
}

2、网络开发:

struct Story {    title string}// Fetches top HN stories in 8 coroutines fn main() {    resp := http.get('https://hacker-news.firebaseio.com/v0/topstories.json')?    ids := json.decode([]int, resp.body)?    mut cursor := 0    for _ in 0..8 {        go fn() {            for  {                lock { // Without this lock the program will not compile                     if cursor >= ids.len {                        break                    }                    id := ids[cursor]                    cursor++                }                resp := http.get('https://hacker-news.firebaseio.com/v0/item/$id.json')?                 story := json.decode(Story, resp.body)?                println(story.title)            }        }()    }    runtime.wait() // Waits for all coroutines to finish } title string
}// Fetches top HN stories in 8 coroutines
fn main() {resp := http.get('https://hacker-news.firebaseio.com/v0/topstories.json')?ids := json.decode([]int, resp.body)?mut cursor := 0for _ in 0..8 {go fn() {for  {lock { // Without this lock the program will not compile if cursor >= ids.len {break}id := ids[cursor]cursor++}resp := http.get('https://hacker-news.firebaseio.com/v0/item/$id.json')? story := json.decode(Story, resp.body)?println(story.title)}}()}runtime.wait() // Waits for all coroutines to finish
}

当然,目前V 语言的开发仍处于早期阶段,很多方面还不够完善,尤其是内存管理上还面临着与 Go 和 Rust 同样繁琐的生命期管理问题,但对比 C++ 等手动和半自动的管理方式还是更省心一些的。

那么开发者们怎么看?

@三川走刀口:还是要得到开发者认可,但是对于安卓开发好像没用?

@淡定的龙哥:Go语言同父异母的弟弟?

@Heisenber哥:语言特性只是一方面,生态也很重要。

@王的凝视:这个新语言提出来是为了解决什么问题?每种语言都有适合场景,如果没有合适场景迟早也要被淘汰。

@楚小欢:执行效率比C高应该不可能,C现在都被认为是汇编语言,本身语义也十分接近汇编。别的语言只要有高级点的特性,效率就不可能超过C。

25岁转行人工智能靠谱吗?

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

总之,这个新生的 V 语言还是需要不断的发展,得到开发者的广泛应用才能焕发生机,也才能有望助力程序员做到真正的“人剑合一”。

【END】

 热 文 推 荐 

☞小程序技术演进史

☞5G 兴起,物联网安全危机四伏

☞写代码不严谨,我就不配当程序员?

☞华为最强自研 NPU 问世,麒麟 810 “抛弃”寒武纪

☞LinkedIn最新报告: 区块链成职位需求增长最快领域, 这些地区对区块链人才渴求度最高……

☞中文NLP的分词真有必要吗?李纪为团队四项任务评测一探究竟 | ACL 2019

☞6月技术福利限时免费领

☞搞不懂SDN?那是因为你没看这个小故事…

☞她说:程序员离开电脑就是 “废物” !

点击阅读原文,输入关键词,搜索CSDN文章。

你点的每个“在看”,我都认真当成了喜欢

V 语言强势登顶 GitHub TOP1,欲取 Go 而代之?相关推荐

  1. 登月源码登顶 GitHub Top1,37000 Star 致敬人类登月 50 周年!

    作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 封图 | CSDN下载于视觉中国 1969 年 7 月 20 日,"阿波罗 11 号"飞船登月,宇航员尼尔·阿姆斯特 ...

  2. 最强国产开源电子表格-Luckysheet,强势登顶Github trending第一名!

    背景 现在web技术蓬勃发展,办公应用特别是excel都搬到了线上,比较流行的有腾讯文档,金山文档,石墨文档,google doc,属于企业服务.但是小型企业或者团队,如果想自己搭建一套在线表格系统呢 ...

  3. 隐身术?登顶 GitHub Top1:200 行 JS 代码让画面人物瞬间消失!

    整理 | 夕颜 出品 | CSDN(ID:CSDNnews) 今天,一个名为 Real-Time-Person-Removal(实时人物去除)项目在GitHub上火了,登上近日GitHub Trend ...

  4. 诞生一年来,V 语言还好吗?

    问题在于,V语言真的这么好吗?好到足以每个月赚915美元? 作者 | Robin Martijn 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 去年2月, ...

  5. GITHUB排行榜C位出道-手把手教你玩转V语言版的俄罗斯方块

    最近 V 语言-一个GO语言最吸晴的项目,在千呼万唤之后,终于迎来开源,并正式发布了首个可用版本,其一经推出,便强势登顶 GitHub的榜首,引来各方热议.目前V已经可以实现自我编译迭代,笔者大致了解 ...

  6. 【GitHub探索】v语言上手,用vlang写一个聊天应用

    前言 vlang(v语言)自从6月份突然炒热起来,不知不觉到了11月,正式版就要出来了,在11月的GitHub Trending榜中依然排在前10.这着实令人好奇,因此笔者决定试用一下vlang,写一 ...

  7. 持续排名GITHUB榜首的V语言竟是C++的孪生兄弟-V版毁灭战士值得点赞

    最近V语言持续在GITHUB上霸屏,而笔者在上周介绍了V语言的一些基础,详见:GITHUB排行榜C位出道-手把手教你玩转V语言版的俄罗斯方块,而这周我也持续关注了V语言的动态,这次带大家玩一下V语言版 ...

  8. delphi windows编程_2020年值得关注的新编程V语言Vlang,对标Golang、Rust、Swift

    编程语言的世界总是能搞出新花样,虽然基本原理都是万变不离其宗,但是对我们个人而言,选择好一个语言的确可以事半功倍,何乐而不为呢? 要说目前2020年比较新奇的语言,就得说说V语言Vlang了,MIT开 ...

  9. V语言环境部署教程-linux

    在linux系统上,目前有两种搭建V语言环境的方法: 一:git 下载源码并编译出可执行文件,然后创建软链接 二:直接下载别人编译好的可执行文件v  ,然后改权限为可执行文件,再创建软链接 下面用ub ...

最新文章

  1. 微信JS-SDK之图像接口开发详解
  2. Logistic Regression 之基础知识准备
  3. 对象key值为数字时的处理
  4. 多伦多大学好吗_多伦多大学好毕业吗
  5. sonarqube没有html插件,spring-boot – 找不到id为’org.sonarqube’的插件
  6. 從零開始學 ReactJS:最完整的 React 生態系入門教程
  7. vue使用a标签下载文件_Vue a标签实现点击下载,下载图片、txt文件,不是直接打开的方式...
  8. tf卡可以自己裁剪成nm卡_手头这多卡—到底哪款TF卡才值得购买?
  9. xingtai -飞机大战2。0
  10. 计算机组成原理-存储器的层次结构
  11. KWS_关键词命名+识别率和误识别率
  12. zlib压缩解压缩文件
  13. 信息收集之通过JS拓展信息面
  14. AssertionError: ‘.../best.pt‘ acceptable suffix is [‘.pt‘]和ValueError: loaded state dict contains...
  15. 如何利用番茄工作法提高学习和工作的效率
  16. 43、DNS域名系统(应用层)
  17. 记录一个设备旁挂ikuai后收不到回包TTL为1的问题
  18. 层次分析法AHP——清风老师
  19. CATIA V5R21 Win10 64bit安装教程
  20. A Blockchain-based Decentralized Federated Learning Framework wth Committee Consensus

热门文章

  1. Gmail地址图片注册...
  2. Gitbook 常用命令
  3. [SSH] 为 GitLab 帐号添加 SSH keys
  4. blob类型_MySQL:创建表时如何选择合适的字段类型
  5. python ioc框架_轻松理解 Spring 中的 IOC
  6. 项目管理excel_项目管理甘特图是什么?怎么做才能更高效?(EXCEL制作甘特图详细步骤)...
  7. Docker集群的创建与管理
  8. Dart入门—库、泛型与异常
  9. “开发者有奖大调查”第二批中奖名单公布,还有更多好礼等你来拿~
  10. 创业者应该了解的五大无服务器AWS服务