I'm a bit impressed by vlang, despite some earlier controversy from years ago. Of all the new languages, I have been keeping track of this one the most. They have also been maintaining a strong development pace. Something else that I like that many don't know or notice is their connection to Oberon (a kind of successor language to Pascal). It's a nice merge between various ideas and useful qualities among Pascal/Oberon, C, and Go.
I'm referring to a more superficial and subtle influence, and V also has other influences (like C) and Go, but if you are working with it then you will notice them. Some are: 1) Uses modules 2) Declarations made at the top (no headers, so more like the Pascal family) 3) Types are indicated after, not before like in the Pascal family as oppose to C (fn foo(a int, b string)). 4) ":=" uses the walrus (visitor := ['Tom', 'Jake', 'Harry']) 5) Use of .. for subrange, etc...
It's debatably enough for those that know Oberon/Pascal to feel more comfortable. You can see the purposeful blending of various qualities of the languages.
Been keeping an eye on vlang since its initial post here (and the subsequent flame war) on HN. The initial language feature list was pretty ambitious.
Seems like they're taking a batteries included approach in trying to bring in as many use cases as possible using libraries written in V.
How are they progressing towards their promises for vlang in terms of base language features as a systems language ? I remember reading they still had some unsafe stuff going on that needed fixing
>> V UI is licensed under GPL3. A commercial license will be available. Open-source projects will have access to the commercial license for free. Every single feature will be open-sourced right away and available under both licenses. At some point in the future the library will be relicensed under MIT.
We are talking about a cross platform UI with no dependencies, that was made to integrate from its early stages. This is partly why V is distinguishing itself from the pack.
Yeah, I find the initial choice of license on V UI to be a bit weird. Not understanding the logic behind it, when the main and other parts are MIT, as a GPL UI is a definite way to go down the road of massive headaches, drama, and confusion. GPL can give an unfriendly impression to those they probably could use help or support from.
It's still the early stages of the library and the language, so maybe it won't turn into some kind of mess. Possibly, they may have to do some rewrites of existing libraries. Still, it is a curious choice not to at least go LGPL, like many other projects have done who went down that GNU path. Seems like LGPL would have been the right balance to prevent sending mixed or "warning" signals.
There is also VIUP (https://github.com/kjlaw89/viup), which is a port of IUP. So, it's not like more adventurous types can't go play with that. That's under the friendlier MIT license.
All can compile to C and I find it somewhat important as would be very happy to share same code base with microcontrollers (SDCC), Android, Linux, Windows and web wasm. Unfortunately (to my knowledge) not all offer optional or selective garbage collection, some look immature and so on :-(
Nim works great on microcontrollers. I'm using it with a goal of sharing codebases on embedded and not. It's awesome to be able to write some POSIX network code test it on Linux and get it running on an MCU.
The new ARC garbage collector fits the domain well. The non-atomic reference counting makes it predictable and deterministic. Though, it's possible to write Nim without using the GC or turn it off completely.
NIM looks really amazing, and I mean it. Only thing that stops me from using it is that indentation hell. Can't understand regime enforced on devs to format code in only small number of predefined ways.
Mentioned earlier, NIM looks very mature and I like it in sense of what you can already do with it. Unfortunately indentation based scopes is something that I can't stand in programming language
I did and hated every minute of it. Automatic formatting is fine but if you don't indent while working it can get ambiguous and format your code wrongly. Also it's harder to visually parse.
So yes I did and no, your subjective tastes aren't an objective reality. What's your point?
> And if you don't write braces in a language that uses braces, it will also get ambiguous. What's your point?
Not when they are mandatory, which they are in a number of languages (also the "do" / "end" blocks). You have no choice but to write valid code. I prefer it that way. Zero ambiguity.
> a { b { c; d { e } } f }
Whoever writes such code should be shot. There are newlines for a reason. And I am glad we have format-on-save these days. Less bikeshedding, exactly of the kind we're doing right now.
> easier to parse than this:
It's not for me, and not for one big chunk of the programmers. ¯\_(ツ)_/¯
> You shouldn't disregard a language just for superficial syntax features.
Daily productivity that is taking a nose dive due to constant fight with a system my brain doesn't want to work with is not superficial. That's like trying to tighten screws with two sticks -- it can likely be made to work, but it can take a long time and will be unproductive.
>Whoever writes such code should be shot. There are newlines for a reason. And I am glad we have format-on-save these days. Less bikeshedding, exactly of the kind we're doing right now.
So do you use indentation or braces to read code? If the former, what are you complaining about? If the latter, why would you use a tool that adds indentation when you already have braces?
I am not "complaining" about anything. I am expressing preferences.
There were online examples where people don't indent Python code as they go and then saving the file invokes LSP's auto-format which severely botched the code logic (and it was hard to spot). Seeing one such occurrence immediately triggers my alarms: I want to write code and be productive and not squint at whether I am at the right indentation level all the time.
I understand and respect that you may like that style, but also understand and respect that others don't. It's partially about preference. "Different strokes, for different folks".
> It's not for me, and not for one big chunk of the programmers. ¯\_(ツ)_/¯
Agreed.
> Daily productivity that is taking a nose dive due to constant fight with a system my brain doesn't want to work with is not superficial.
Truth. That's just the reality of how a lot of folks feel about it.
I thought of that solution, but the problem is that when you have 8bit microcontroller and all your operations from webassembly are translated to 32 bit operations then you gonna end up doing 8 bit math on 32 bit emulated math operations aligned back to 8 bit. :(
Not try to discount your goals, but chasing 8 bits is anachronistic, an ESP32-C3 is a single core 160Mhz risc-v chip with 400KB of on chip ram for $1 qty 1.
This is what spooks me out most for now: https://github.com/vlang/v/issues
It looks like a lot of non trivial issues. Other than that I like the concept of V. Maybe except one small thing ":=" ;-)
Is there a version of the language spec of this? It seems to me that to ensure continued evolution and development of the language, it would be good to get some of the basics set up ..