Go language vs V Language

· · 572 words · 3 minute read

Go and V are two programming languages that have been gaining traction in recent years. Both languages are designed to be simple, fast, and efficient, but they have some key differences that make them suitable for different types of projects. In this article, we’ll compare Go and V to help you decide which language is best for your project.

Go is a statically-typed language created by Google in 2009. It was designed to be a fast and efficient language for developing large-scale applications. Go is a compiled language, meaning it compiles code into an executable binary before running it. This makes Go programs faster than interpreted languages like Python or JavaScript. Go also has a garbage collector which helps manage memory usage and reduce the amount of code needed to manage memory manually.

V is a relatively new programming language created by the team at V Lang in 2020. It was designed to be an expressive, easy-to-use, simple, fast, safe, compiled language for developing web applications quickly and efficiently. V is compiled language like Go.

You can learn the entire language by going through the documentation over a weekend, and in most cases there’s only one way to do something.

This results in simple, readable, and maintainable code.

Despite being simple, V gives a lot of power to the developer and can be used in pretty much every field, including systems programming, webdev, gamedev, GUI, mobile, science, embedded, tooling, etc.

V is very similar to Go. If you know Go, you already know ≈80% of V. Things V improves on Go:

  • No err != nil checks (replaced by result types)
  • No undefined values
  • No variable shadowing
  • Immutability by default
  • Enums
  • Sum types (type Expr = IfExpr | StringLiteral | IntLiteral | …)
  • String interpolation: println('$foo: $bar.baz')
  • If and match expressions (including sum type matches)
  • No global state (globals can be enabled for low level applications like kernels via a command line flag)
  • A simple way to check whether an array contains an element: if elem in arr {.
  • Only one declaration style: a := 0
  • Warnings for unused imports and vars for quicker development without annoying interruptions. But only in development/debugging mode. Making a production build still requires fixing all of them, thus enforcing clean code.
  • Much smaller runtime
  • Much smaller binaries (a simple web server written in V is 65 KB vs 7 MB in Go)
  • Zero cost C interop
  • GC is optional
  • Much faster serialization using codegen and no runtime reflection
  • Precompiled text and HTML templates unlike Go’s html/templates that have to be parsed on every request
  • Fearless concurrency (no data race guarantee at compilation) wip (work-in-progress)
  • No null (null is only allowed in unsafe code)
  • Stricter vfmt to ensure one coding style
  • Centralized package manager: <vpm.vlang.io> (v install …)
  • Much simpler and less verbose testing, assert.
  • Primitive types can have methods resulting in less verbose code: strings.Replace(strings.Replace(s, "a", "A", -1), "b", "B", -1) => s.replace('a', 'A').replace('b', 'B')

When comparing Go vs V, the key difference that should be considered when deciding which language is best for your project is that V is beta now and not released yet. So, if you want to create professional software, use ready language (Go in the case). But if you have a hobby project, you can choose V for fun and learning.

Ultimately, the decision of which language to use comes down to personal preference and the type of project you’re working on.