3 ms·
I created a new language [0] that is very similar to Go, but it fixes many things people often complain about, including all of the points in this article (exce
by amedvednikov 7y ago
I created a new language [0] that is very similar to Go, but it fixes many things people often complain about, including all of the points in this article (except #2, but I don't think it's a drawback, really).
It got lots of attention in a couple of months since the public release, and I often hear people say that they feel like this is "Go done right".
It'll be open sourced by June 20.
[0]: https://vlang.io https://vlang.io
- Aeolun 7y agoThis looks interesting. I might give it a go.
- AH2mdte8kPnJS 7y agoThis looks really cool!
- baby 7y agoOptions :) But generics :( I'm really hopping that Golang finds a way to either not add generics, or add them in contrained ways. Your example code for generics are very hard to read for example. Rust somehow tackles that with associated types, but since generics are still allowed it's not great imo.
- amedvednikov 7y agoAlways interested in feedback, thanks. Why do you find them unreadable, because of the angle brackets? I've considered using struct Repo ⟨T⟩ { db DB } Instead of struct Repo <T> { db DB } The conversion would be done automatically by vfmt.
- baby 7y agoBecause they are too general. The ultimate test is to read someone else's code and try to figure out what is the actual struct being used in place. You will see that you often have to jump through many many files in order to get a sense of what is actually used in place. This problem becomes even harder when people start nesting generics. Take a look at associated types in Rust. I think it is a better way to do generics because it forces you to specify the type early. It also prevents nested types that are hard to read like <T<A, Cat<B>>> (and this is nothing)
- amedvednikov 7y agoI see, thanks. Right now V supports generics with only one type T anyway :)
- jsjolen 7y agoIf the size of a struct is changed through hot-code reloading then how does the runtime react?
- amedvednikov 7y agoOnly function bodies can changed. I don't think it's possible to modify structs on the fly. Maybe it is, I need to think about it/do research.
- jsjolen 7y agoDon't worry, it pretty much isn't possible to do so without semantics which will basically make your program "drift" during run-time away from what a newly compiled program would do. EDIT: Assuming inlining and call-by-value struct is a possibility.