V強い言語サミットGitHubのTOP1、Go]を押収し、交換の意思?

640?wx_fmt = GIF

これは正式に利用できる最初のバージョンをリリースし、新しい言語V移動し、錆の特性と組み合わせます。

640?wx_fmt = JPEG

仕上げ|郭ルイ

出品 | CSDN(ID:CSDNnews)

プログラマが差別やその他の問題の選択肢に直面しなければならなかったように、など、長い時間、文法、意味論と標準ライブラリの観点から、プログラミング言語については、大きく異なっています。自然淘汰の下では、古い言語(PHPはまだ、事故だった存在)と新しい言語の誕生の外に存在します。では、「ジェットブレーンズ社は、最近リリースされた2019開発者エコシステムの現状報告やJava、PythonやC / Cの、」 #、JavaScriptのテストはまだ良い開発者の心になった後の練習後や他の主流のプログラミング言語を。

Pythonは傲慢な人!そう簡単な仕事を見つけることが過払いでしょうか?

https://edu.csdn.net/topic/python115?utm_source=cxrs_bw

この記事の主人公のV言語は、待望の後、最終的には最近オープンソース化し、正式に(事前に構築されたバイナリはすぐに来て)利用できる最初のバージョンをリリースしました!一つがリリースされた、サミットは、ホット群衆の開発をリードし、強いのGitHub TOP1になります。

 

640?wx_fmt = PNG

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

 

紹介によると、Vはそれができる、新しい静的にコンパイル言語である「高速コンパイラ、およびセキュアな、およびC / C ++コンバータ」、便利な高速かつ安全なプログラミング言語やツールキットを提供し、また、うまく機能するように配置することができますブロックチェーンの技術。

 

640?wx_fmt = GIF

 

霊芝SAZAのV言語を完全に把握する公式文書に30分を参照してください、それは非常に単純な言語であると述べています。また、そのコンパイラは、サードパーティの依存関係なしで、唯一の400キロバイトです。

 

640?wx_fmt = JPEG

(ディスプレイの応用例:MacOSのデモ確立V言語)

 

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 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
    }
} 

 

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 := 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 

 

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

 

那么开发者们怎么看?

 

 

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

 

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

 

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

 

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

 

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

 

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

640?wx_fmt = PNG

CSDN 5G 沙龙来啦!

6 月 29 日,微软(中国)首席技术官韦青、北京邮电大学信息与通信工程学院多媒体技术教研中心主任/博士生导师孙松林、金山云 AIoT 事业部高级研发总监肖江、爱立信中国研发部多天线高级专家朱怀松、爱立信中国研发部主任系统工程师刘阳等行业内顶尖的领军者、资深的技术专家们共聚一堂,共同探讨 5G 在物联网中的巨大潜能。

扫描下方二维码,马上预约直播!

640?wx_fmt = JPEG

 感熱紙  を推奨 

書き込みコードが厳密ではないですが、私はプログラマであることを値しありませんか?

北京郵電大学、あなたは秒4G / 5G差を知っていると博士ワンワードテキスト通信!

プログラマはどのようにオフの単一のですか?|プログラマーの何かを言うために

5Gの時代には、Microsoftはチェスのステップを行ってきました!

LinkedInの最新レポート:需要の急成長を遂げている分野を投稿するブロック鎖、チェーン最高のを阻止するために、これらの地域の人々の願い......

バートローリング?NLPのタスクのために何XLnetの「火のリスト」を意味

血液の概要を嘔吐!100のインタビューの質問Pythonのコレクション(上)

コンテナ記事の技術的な在庫の2019年は、(A):UCloudは風と水K8Sの話を聞く|筋金入りのプログラマ評価

17歳のプログラマーがあなたのプログラミングについての7つの重要な教訓を教えて!

☞「何BATがないので!インターネットであります!」

640?wx_fmt = GIFオリジナル、ライブの予定を読むためにクリックしてください。

640?wx_fmt = PNGそれぞれ「見た目」のあなたのポイント、私は真剣に好きなように

おすすめ

転載: blog.csdn.net/csdnsevenn/article/details/93679131