
V Programming Language - rayascott
https://vlang.io/
======
andr
I love looking at new languages. People invent really creative stuff. However,
my exploration usually ends with "this is great, but there are no libraries
for it, so I probably won't use it".

If you are building a language, starting from scratch is the epitome of Not
Invented Here syndrome. Build it on top of an existing ecosystem. Look at
Elixir and how it builds on Erlang and interoperates with it just perfectly.
Or look Groovy, Scala and Clojure to see what kind of range you can get from a
single platform. With the exception of Go, every language that has become
popular in the past 10 years, built on something else.

~~~
mstade
> With the exception of Go, every language that has become popular in the past
> 10 years, built on something else.

And Go probably wouldn't have half the range it enjoys today without the
massive reach and coffers of Google. That's not a snark, or a critique even,
just a reflection of the difficulty of breaking through in this space and
indeed a comment to support your assertion that in order to succeed in this
space today you probably have to build on or successfully interoperate with an
already established platform.

If Go didn't have the backing of Google, I doubt it'd have half the audience
it enjoys today; Rob Pike notwithstanding. Case in point: Plan 9.

~~~
login102939
Not everyone is motivated by success. Grigori Perelman?

IMO people interested in success should be suspect. It’s weird to me that
people would go through life seeking attention for invention that will not
last much beyond their death.

If anyone here believes their efforts at even a Google size company are
forever: 80% of the companies listed as Fortune 500 firms do not exist
anymore.

Other than a few key discoveries, for a variety of reasons, none of the work
at those firms is considered of value.

~~~
coldtea
> _IMO people interested in success should be suspect. It’s weird to me that
> people would go through life seeking attention for invention that will not
> last much beyond their death._

Err, the attention and success can help them get money, funding for their
projects, and other niceties much before their death, so there's that.

------
atombender
My friendly advice for the author of this project:

Release the code on Github. Just release anything, even if it's not finished.
Make the code work first, _then_ build a slick website where you brag about
its features and benchmarks.

Creating the website first, before there's even anything to try out, is
disingeous at best, and at worst it's leaching productivity away from time
better spent programming. I remember how, as a junior developer, it was a lot
more fun talking about how great my project was going to be, than doing the
actual, hard work. But it does take hard work to bring something to
completion.

You're doing the exact same thing with your chat app, Volt. You spent years
talking about how great it was going to be. You promised features and release
dates, then changed the release dates once you weren't able to deliver. Your
current alpha release barely works and barely has any of the features. You
clearly need some helping hands to implement all the features you've been
promising over the years.

I'm sure there are lots of developers here who would love to hack on a new
programming language or a chat app.

------
FrankDixon
I‘m not sure this will ever reach the light of day. It follows the same
patterns as Eul did, another creation if the same inventor: \- plenty of empty
links on the website that lead to something ‚coming in march/april/june/...‘
\- lots of nice ideas, but nothing to show for it

I wish the creator all the best, but Eul promised a lot, long long ago, and
never delivered

~~~
mattbreeden
[https://volt-app.com/](https://volt-app.com/) it's currently released in beta
for mac and windows

~~~
bartl
I can't help but wonder why Volt on Mac is 300kB and on Windows it's 2.1MB.

~~~
amedvednikov
It explains it if you click it :)

Temporary libcurl dependency

------
plainOldText
Creating and evolving programming languages is a difficult task. It also takes
considerable time to write a decent set of libraries and iron out most of the
wrinkles before it can be used in production.

As more people move into programming, we're bound to see more languages on the
horizon. I wonder what the most popular languages will be, say, 10 years from
now?

I'm personally looking forward seeing one language reach maturity – Pony –
[https://www.ponylang.io/](https://www.ponylang.io/) It seems that it brings
some novel concepts to the table, one being the combo: statically compiled +
actor model + high performance + capabilities secure.

~~~
jb3689
Pony's memory sharing model used with Actors is really interesting. When I was
writing in Elixir the overhead of deep cloning any message (or almost any - I
realize large binaries are an exception) between actors seemed like a big
limitation. I think Pony offers an interesting solution

I remember coming across some big systematic gotcha with Pony when I was
learning though. It's been a year or two since I've even thought about it
though and my brain is foggy. I think it'll take more adoption of both
Erlang/Elixir and Rust for people to really see the benefits of what Pony
offers. It's a really ambitious language for sure

~~~
plainOldText
Although it comes at the expense of better performance, not having shared
memory between actors in Erlang was a deliberate decision, as it offers a few
advantages over the shared model:

* More robust failure recovery, as actors can be restarted truly independently in case of faults

* Better distribution out of the box as actors on different machines can't share memory anyway

On the other hand, Pony does promise to catch certain types of errors at
compile time, but this is hardly foolproof, as long running programs will
still encounter hardware and runtime errors. But since these classes of errors
are less common, one can choose to live with them.

Ultimately, one must learn to compromise one way or another. For now, I'm
happy I can extend Elixir via Rust.

------
audunw
Looks very similar to Zig in terms of goals. I'm rooting for both, but it
seems that Zig is ahead in terms of community. Would V have any benefits over
Zig?

I think a "better C" is the biggest hole in the programming language world
today. Rust doesn't do it to me, because what makes C great is that it's so
simple, and easy to write a compiler for. Rust is a different class.

~~~
Y_Y
Walter Bright will probably show up in a minute and tell you D is a better C.
He's probably right too. But being the best isn't why people pick C these
days.

I also object to the idea that it's easy to write a C compiler. A toy compiler
might be easy, but a good one takes UINT_MAX man-hours at least.

~~~
vips7L
From what I've seen D looks like an amazing language. I've been particularly
interested in the -betterC flag.

------
coldtea
Github of compiler (not examples) or it didn't happen.

~~~
nielsbot
The site says open source will happen this year

~~~
foxhill
perhaps, but it’s all conjecture until it’s out there. i hope it’s real,
though!

------
orbital223
Comparing the compilation speed of a non-optimizing compiler against
optimizing compilers is very dishonest.

~~~
stabbles
I repeated the experiment with 200 000 lines of code, where each line contains
an assigment (just a constant) followed by a print statement (printf /
std::cout). Results on my Macbook Air are similar:

    
    
        $ time g++ cpp.cpp
        real 2m28,454s
        $ time gcc c.c
        real 0m7,112s
    

Compilers are indeed really slow.

------
muricula
The authors talk a lot about how fast the compiler is. It doesn't matter if
the compiler is fast if the generated code is slow.

~~~
dan-robertson
Imagine the simplest “compiler” for python or perl or JavaScript that doesn’t
compile anything but just interprets it. There’s a lot of advantages to not
having to wait for compilation. One can write a large and useful program with
reasonable speed ups just from stupid compilation as many programs don’t need
to be particularly fast.

One can imagine modifying the compiler to output llvm bitcode. You now can
throw plenty of optimisation at it for free (but you are now slower to
compile). This may be useful for prod but I claim a lot of the time it’s still
useful for dev to have a simple very very fast compiler. Think less about the
time to build one file and more of the time to rebuild your entire tree (or
just a file which many things depend on)

~~~
bartl
> One can imagine modifying the compiler to output llvm bitcode. You now can
> throw plenty of optimisation at it for free (but you are now slower to
> compile).

If you look at the FAQ, you'll see they can do exactly that but using
gcc/Clang, not LLVM.

~~~
K2L8M11N2
Isn't Clang LLVM?

------
wronex
I'm curious. Why the short names such as .len instead of .length? Also,
ui.WindowCfg instead of ui.WindowConfig? I think this would make we hesitate
all the time. Was it .new_textbox or .new_txtbox? Short keywords are one thing
(Lua's local and function are no fun) but abbreviated library functions and
types are another.

~~~
jxy
Why is this such a big deal? Is there really so much difference among
ui.WindowCfg, ui.WindowConfig, and ui.WindowConfiguration?

As long as everything is consistently named within a framework/language, I
don't see any problem.

~~~
krainboltgreene
Yes. The latter are words, cfg is not a word. Words are easy to google, say,
pronounce. "shortenings" are up to interpretation, have no translation.

~~~
jxy
[https://www.merriam-webster.com/dictionary/config](https://www.merriam-
webster.com/dictionary/config)

> “config”

> The word you've entered isn't in the dictionary. Click on a spelling
> suggestion below or try again using the search bar above.

~~~
krainboltgreene
Hey, I prefer configuration, so you'll get no argument from me on that, but
it's definitely more of a word than cfg.

------
jhawk28
It looks like a nice little language. It looks like Go influenced the syntax
(in a good way). Based on the "concurrent" example, can we assume that it does
coroutines instead of green threads?

Have you tried converting the C impl of the Computer Language Benchmarks Game
to compare runtime performance against other languages?

------
miki123211
well, I don't know why this doesn't have more upvotes. It deserves them. This
is literally the first time I've fallen in love with a programming language.
It does all the things I'd want it to. Has all the positives of go without
most of the shortcomings, is minimal and understandable, disallows 10.days.ago
style magic without being overly limiting, compiles fast and makes small apps,
something I really want in the age of bundling Chromium and Node with every
hello world, and has a native GUI, so huge potential for accessibility. The
only thing unnerving me is that Volt, the only publicly available app written
in V, doesn't seem to be accessible which might indicate the GUI is not native
after all.

~~~
dagmx
How can you fall in love with something you've only seen described to you in
platitudes?

------
zephyrfalcon
There used to be a stack-based language called V as well...
[https://code.google.com/archive/p/v-language/](https://code.google.com/archive/p/v-language/)

------
ouki
Which license will be chosen when it will be open sourced?

~~~
amedvednikov
Not sure yet. I'm considering GPLv3 with the linking exception.

~~~
sansnomme
Apache/MIT would be more sustainable as it will be easier to get companies to
donate money and use the technology.

~~~
AsyncAwait
It would certainly be easier for companies to take it and not give anything
back, that's for sure.

------
reggieband
I know it is "yet another language" but I at least like the examples I saw.
Very golang inspired obviously (even has the go keyword) but with some
niceties (e.g optionals). Maybe when I get around to writing my Z language
I'll use this as a basis.

------
snowAbstraction
Why not leverage LLVM for doing stuff with SIMD?

Will the output to readable C always be available in the future?

~~~
amedvednikov
> Will the output to readable C always be available in the future?

Yes

------
openbasic
Curious about the GUI parts: Is it talking to X11 directly? What about
widgets? Cairo, Skia?

~~~
amedvednikov
Indeed it uses Cocoa/Win32/GTK+, and if you need drawing, there's a small
library called gg. It used OpenGL, but in the future will also support DirectX
and Metal backends.

~~~
openbasic
GTK is super slow. Do you have any intentions of using raw X11 or Wayland?

------
thefounder
Looks very similar to Go(which is a good thing) but to catch up it needs a
great std lib and great tools like Go has. I wish it would keep the upper-
case/lower-case convention as well for private/public identifiers

------
sdinsn
V for vaporware?

------
hestefisk
I think this looks extremely promising. Out of curiosity, is there any support
for lambdas / functional programming? Can I pass a function as a reference?

~~~
amedvednikov
I haven't figured what I want to do with this yet.

Most like something like `users.filter(_.name.starts_with('A'))`

~~~
hestefisk
Closures?

------
bvinc
This seems pretty amazing. I'm really curious how it manages to avoid data
races. It doesn't seem to mention anything complicated like rust lifetimes.

Also, what happens when unsafe C++ is converted to v, for example, code with
iterator invalidation?

There are so many unanswered questions.

------
purplezooey
If you are a V programmer do you have to go around at night and spray paint V
on garbage cans?

~~~
amedvednikov
Not required, but recommended :)

------
theredbox
I dont believe this is real. Sorry but maybe someone can decompile the volt
app to see if this is any legit.

I mean if you are releasing such vaporware you should at least do it
anonymously not openly like you do.

~~~
snowAbstraction
We'll see but anyhow it seems that some people like the language's features.
Pony exists so why not this?

[https://www.ponylang.io/](https://www.ponylang.io/)

~~~
rubiquity
Can you explain the connection you're trying to draw between Pony, a language
used in production, and this one? I don't want your comment to be
misinterpreted.

~~~
snowAbstraction
Sorry I wasn't clear and the connection is not clear. The connection is only
that Pony is as far I know a less common language that implements a unique set
of somewhat similar features so it should be feasible for V to be built. I was
thinking that not only can Google create Go or Mozilla create Rust but smaller
groups or maybe an individual can create an useful programming language.

Writing this caused me to look at [1] to see if I was completely off. I do see
some similarities but also a big difference, at this point of time, in terms
of Pony's greater professionalism and claim's to rigour.

[1] [https://www.ponylang.io/discover/#what-is-
pony](https://www.ponylang.io/discover/#what-is-pony)

------
sesteel
If it works as advertised, it looks to be a boon. I hope we can commit to a
full security audit of the compiler, runtime, and std libs. My trust is
lacking lately.

------
gigatexal
This sounds like the best thing since sliced bread language.

------
isacikgoz
The 400K compiler is interesting. But, does it help to solve any of my
problems today? I would like to hear more about the reason of its development.

------
revskill
How to download the compiler ?

~~~
NikkiA
You can't.

"Open source release in June 2019."

At this point it's just vaporware tease.

~~~
adamnemecek
I don’t think it is.

------
squarefoot
Interesting! Any chances to see an ARM port in the future?

~~~
amedvednikov
Yes!

But of course you can already compile for ARM by emitting C.

------
choeger
Come on guys. I get it that everyone and their cat invent new languages
nowadays. And that is a cool thing, do not get me wrong. But as a professional
in that field, is it too much to ask to give just a little overview over the
/interesting/ parts of the language? What is its type discipline? What data
structures are supported? What is the execution/evaluation strategy? How about
concurrency? Coroutines? Macros? Modules? The language design space has been
mapped thoroughly in the last decades. Is it so hard to give a tiny X on that
map?

~~~
andolanra
The Comparison page is pretty illustrative here: this language appears to be
an effort to build up a lower-level-ish Go (e.g. no runtime, no GC) with some
extra features (e.g. nullable types, generics) and some extra safety
properties (e.g. no global state, immutable-data-by-default.)

c.f. [https://vlang.io/compare](https://vlang.io/compare)

------
root670
>> C/C++ translation

This is huge.

~~~
mhh__
C maybe, but translating from (or even to) C++ is a genuinely company-sized
effort.

~~~
UncleEntity
Yeah, I'm kind of wondering if it does template instantiation or the C++ it
reads is basically C with class methods?

------
sctb
Recent discussion:
[https://news.ycombinator.com/item?id=19086712](https://news.ycombinator.com/item?id=19086712).

~~~
amedvednikov
Hey

Last time it was posted, it was a small page with some basic information about
the language.

Now there's documentation, examples, comparisons, and lots of extra details. I
guess that's why people started discussing it and posting on different
platforms.

I know about the no dups rule, just thought it would be interesting for people
to discuss.

~~~
sctb
OK! We've un-duped it.

~~~
amedvednikov
Thanks :)

Moved from #7 to #74 for some reason.

~~~
sctb
It tripped the overheated discussion detector, which we've just turned off.

~~~
AnimalMuppet
Good thing - V looks hot.

Right, I'll show myself out...

------
sonnyblarney
Well cheers to someone making a compiled language that is like a simplified
C/C++. Rust is great but it's a paradigm shift, and Go is great but it (edit
here:) has a runtime which we don't have implicit control over.

This is a promising C-ish language without the cruft and easy foot-shot
triggers.

Can't wait for the rules regarding packages/modules, how they are distributed,
the clean and simple build systems, documentation constructs, and clean
integration into VSCode ... and of course all of the key/default libraries we
need to be productive.

Good start folks, looking forward to the next rev.

~~~
sesteel
Out of curiosity, what makes you think Go is not compiled?

~~~
sonnyblarney
It's my fault. Go is compiled, of course, but it has a 'not yet very well
optimized' runtime which I don't immediately associate with compiled
languages. I should have been more clear. My bad.

~~~
petre
Have you even used it? According to my tests Go is quite well optimized. It
beats most languages at prime number crunching/array push/map set.

~~~
coldtea
Anytime I did any text work with it it was awful (including JSON etc).

------
kyberias
What does [dupe] mean?

~~~
snowAbstraction
I think the intention is to mark this story as a duplicate of

[https://news.ycombinator.com/item?id=19086712](https://news.ycombinator.com/item?id=19086712).

------
dboreham
For lizard people.

