Closed gingerBill closed 2 years ago
How entitled do you have to be to scream at someone that his language isn't ready enough for you yet? Why is this a github issue?
Yeah I get it, it just disheartens me to see such harsh rebuke, especially because he's repeatedly said it's a pre-alpha language and a lot of goals haven't been implemented yet. Seems to me like the playground was put out early because everyone was clamoring for it and his reward? A github issue decrying him as a scam artist. Like jeez folks, it's not like he stole your money or that much of your time.
Hi,
Like the disclaimer says, the language is in the pre-alpha stage. I've been developing it in parallel with Volt, what works for me, a single developer, is certainly not going to work for thousands. There are major things missing/broken that I've just been avoiding (for example, you can't do foo[i].bar
).
All arrays are dynamic println Threads with go Synchronization of threads with runtime.wait() Automatic memory management
All of these things are implemented and they do not require runtime with the way I implemented them. Threads right now are simple OS threads, runtime.wait()
just joins them. Automatic memory management means the language inserts free()
calls at compile time. Why do dynamic arrays require runtime? Same with println
. The language looks at the type of the println
argument and generates a call to str()
during compilation.
The playground was crashing frequently
Of course it was, this is a pre-alpha release, being tested thousands of times in a span of one hour.
The playground is extremely insecure
Please file a report. I already found and fixed an issue with import
s.
how could you have made any software in this language other than basic things?
Volt (volt-app.com) and Vid editor, my primary editor for the last 1.5 years (github.com/medvednikov/vid) are written 100% in V. That's more than 100,000 lines of code.
The compiler itself is written in V. The C/C++ translator is written in V. I think these are pretty complex applications.
How would you handle pointers?! In your documentation, you demonstrate that pointers exist. This means that no null is false.
No it doesn't. You can't have a null pointer in V, since they are required to be initialized by the compiler: a := &b
. If you have a struct field with a pointer, and it's not initialized during creation, the compiler will automatically allocate memory for it.
V can work with C code, of course C has null pointers, so you can get null bugs there, just like in any language calling C code.
It [vmt] was also failing quite often even on basic code in the playground.
Report, and I will fix it.
Several other issues you mention (like "name lookups do not respect nested scopes") need literally a couple of lines of code. Do you really think I'm not going to fix those for a non pre-alpha build? :)
Software built in V isn't Software I would like to build in V.
See above. It actually is built in V.
I see you are the creator of Odin. Very strange to see a post from you with so many wrong accusations.
@medvednikov Well handled!
Also, thanks for your efforts on V. Very much looking forward to seeing it grow.
I don't think the problem is that the language isn't finished. As you stated, it's in pre-alpha, and it's unreasonable to expect the language to be completely bug free. I think it's even conceivable to write software like Volt in V if you use mostly simpler features; people often underestimate how much you can do with just functions and if statements.
The problem is that you claim that the language can do incredible things that only a very mature compiler should be able to do. Compiling the entirety of doom 3 in 0.5 seconds is the most offensive of these, but several others like hot code reloading and C++ translation are just as hard to believe. A compiler which can do these things should not also fail on basic examples.
Making this all even harder to believe is that everything is closed source. If you provided the source for doom3.v and other complex programs this would be a lot easier to believe, but right now it looks like you're making impossible promises and hiding it all behind, "coming in X months."
Overall, I don't believe you are straight up lying for traffic, but the disconnect between the way you are presenting V and what we can actually see makes me and many others extremely suspicious of what you are doing, especially when you have an active Patreon that you are directing people towards.
If you want people to believe you, unify your presentation with our view, either by presenting the language as it is (not how it could be), or by showing us a working implementation for these complex programs. We are not your enemy -- we want V to be everything you present it as and more -- but it is difficult trust you with the current state of the language.
Edit: deleting criticism is extremely suspicious as well.
Best regards.
like hot code reloading ... are just as hard to believe.
the home page literally has a link to a demo: https://volt-app.com/img/lang.webm
Compiling the entirety of doom 3 in 0.5 seconds is the most offensive of these
an article on translating Doom will be up in a couple of days
If you provided the source for doom3.v
I will, in the article mentioned above
deleting criticism is extremely suspicious as well.
I deleted 2 posts that were repeating the same points and contained misinformation. Now that I posted a response and addressed most of the claims, no more posts will be deleted.
Excuse you? In no way did my comments contain misinformation. And if the main thing that was wrong with them according to you was that they repeated things, you could've left them up.
Apart from which, speech tends to be countered by speech, not censorship.
Jeroen, you repeat the same misinformation over and over again:
Not only that, software purported to have been written in this language or transpiled to it, far exceeds the complexity of even the simple things that failed in the playground. It's another to state complex software has already been written in this language Software built in V isn't Software I would like to build in V
I've given multiple examples of complex applications written in V: V itself, Volt, Vid, C/C++ translator. I even have a freaking OpenGL video player for Twitch (part of Volt).
Or do you think I'm lying and writing them all in C? So what's the plan? Earn $200 by scamming and ruin my reputation for ever in April?
Language features requiring an AST and runtime are claimed to be part of the language but at the same time it's claimed the language requires no runtime and doesn't use an AST.
This is again a repeat of the same misinformation. There's no AST, there's no runtime, yet things work.
Do you have a response to my earlier post addressing everything other than a thumbs down?
Asking for proof of questionable claims by you is not misinformation.
You keep claiming - yet again right now - that there are examples of complex applications written in V. Just stating that you've written a piece of software in this language doesn't constitute proof. Even so everyone here is supposed to believe that in the current state of the compiler, you cannot address a member of a struct in an array, but Doom3 can be transpiled to it and works?
Your hot reloading video has a conspicuous pause between saving the file and the color changing. It changes always when it hits a border, not in response to saving the file.
Is it also misinformation that you claim all these features and compare them against other languages as if they were already implemented? No, because that is what you do. You didn't call it a roadmap, did you?
And to address your remark to Bill, I see you are the creator of Odin. Very strange to see a post from you with so many wrong accusations.
Yes, it's almost as if they're not wrong?
You keep claiming - yet again right now - that there are examples of complex applications written in V. Just stating that you've written a piece of software in this language doesn't constitute proof.
OK, again let's say I lie and I didn't write it in V. What's the plan, can you tell me?
Is it also misinformation that you claim all these features and compare them against other languages as if they were already implemented?
What features I compare against are not implemented? Point{x,y}
syntax?
Yes, it's almost as if they're not wrong?
Yes, almost every single sentence is wrong, misinformation, or an outright lie (like 90% of features missing, AST being required, println requiring runtime (??), dynamic arrays requiring runtime (??), etc)
It also says
If most of these extremely basic features are broken, how could you have made any software in this language other than basic things?
Indeed, how could I implement everything without automatic imports and enums?
Your hot reloading video has a conspicuous pause between saving the file and the color changing. It changes always when it hits a border, not in response to saving the file.
I recorded it a year ago. I don't remember the issue, but indeed I couldn't make the file watcher work correctly, and somehow forced the reload when it reached the edge.
I haven't been using hot reloading when developing Volt, because it's harder to make it work with GUI apps, but it's possible and I will fix it.
This is pre-alpha software, things aren't 100% stable, this is normal.
Asking for proof of questionable claims by you is not misinformation.
You aren't asking for proof. You are making strong claims that are simply not true.
I can't give you proof right now: Volt is closed source, V and Vid will be released in June.
So you either believe me or you don't, we'll see who is right in June. But please don't call me a liar, scammer and spread misinformation.
you cannot address a member of a struct in an array, but Doom3 can be transpiled to it and works?
V temporarily allows to insert C code with #
. I hate this feature and have been slowly cleaning up all C code. The released version of V will not have #
at all.
For missing/broken features I simply use #
for now.
Asking for proof of questionable claims by you is not misinformation.
You aren't asking for proof. You are making strong claims that are simply not true.
I can't give you proof right now: Volt is closed source, V and Vid will be released in June.
So you either believe me or you don't, we'll see who is right in June. But please don't call me a liar, scammer and spread misinformation.
And you'll note that I didn't call you a liar or scammer. I questioned why you make such strong claims about the current state of the language all over the website instead of addressing which of the features are aspirational. I question why you think it makes sense to benchmark an incomplete compiler against compilers that have actually been released and make it appear that V is better than them in both size-on-disk, compilation speed and features. Either those features you say outstrip other languages exist, or they don't. But if they're going to be available in the future, please don't make it out to be as if V already beats Go, Swift, et al.
I admit you list a number of features that are currently broken and that the package manager and V's own optimiser are future work, but that doesn't make all the other claims of V's competence you make any less strong. I asked that you update the website to reflect what is currently implemented and which parts of it are future work. This is not exactly a controversial thing to ask, I think.
Yet another example of how you make it appear V is ready for use is the website's footer reading Are you using V to build your product or library? Have it added to this list.
I'm not saying you didn't write this language, but you have to admit that at every turn you keep putting the cart before the horse.
And you'll note that I didn't call you a liar or scammer.
You keep saying that I didn't write all this software in V, than means I'm a liar.
I question why you think it makes sense to benchmark an incomplete compiler against compilers that have actually been released and make it appear that V is better than them in both size-on-disk, compilation speed and features
I benchmarked only compilation speed by calling println(a)
200 000 times. I explicitly mentioned that this is not a great test, but it can give a general picture. V can compile a program that calls println
.
Regarding the size comparison. This is a good point. In the original HTML version of the site I had a side note reference saying that this isn't a very fair comparison, because the set of V's features is much smaller, but the size is still unlikely to be more than 1 MB. I'll bring that note back.
I asked that you update the website to reflect what is currently implemented and which parts of it are current work.
The site contains correct information. Please point me to the things that are not implemented.
Are you using V to build your product or library? Have it added to this list.
I added this for the future, just like the initial "install V by running gcc -o v v.c". Good point, I'll remove it as well.
The only major feature missing is the scheduler/green threads. But they are not mentioned anywhere on the website.
The site contains correct information. Please point me to the things that are not implemented.
cd doom3/
wc -l doom3.v # 458 713
time v doom3.v # 0.5s
Is this information correct? What is being timed at 0.5s in this example, the translation to C? If so, it might be good to add that information otherwise people assume it is about generating object code as the speed benchmark currently suggests.
Is this information correct? What is being timed at 0.5s in this example, the translation to C?
No, this is x64 machine code generation. In 0.5s you'll get a binary. At this stage it's not going to work with such a complex application like Doom 3, so I'll change it to a simpler app.
May I ask, what do you consider a runtime to be, @medvednikov?
No, this is x64 machine code generation. In 0.5s you'll get a binary.
But just compiling is not meaning "compiling correct" and "run correct". Could we see (download) this binary?
At no point did I say that you didn't write all this software. I reference your claims that you have written all of this software in V while simultaneously some very basic language features are said to be missing or broken. Asking you to address this is isn't exactly the same as calling you a liar, methinks.
I do hope V will turn out to be all you say it will be. We could use more good programming languages, and indeed I'm looking forward to Jon Blow's JAI.
I'll check back in June to see where V is at. I'd love nothing more than to see a language that lives up to this hype. I don't feel like the main concerns have been meaningfully addressed, but I have actual work to do, and I'll leave you to get back to improving the compiler as well. :)
At no point did I say that you didn't write all this software.
Please read what I wrote. I don't claim you claimed I didn't write all this software. You claimed I didn't write this software in V.
This is false. All of this software is written 100% in V.
But just compiling is not "compiling correct" and "run correct". Could we see (download) this binary?
In a couple of days I will release an article on translating Doom 1 to V. It will have the resulting .v code and the binary.
I will add more info to the doom3 example, explain what's going, and at what stage the C++ translator and x64 generation are.
very basic language features are said to be missing or broken
What basic features are broken other than accessing fields of array elements? Please be specific. I debunked all false claims and I'm still getting these vague basic broken features from you.
At no point did I say that you didn't write all this software.
Please read what I wrote. I don't claim you claimed I didn't write all this software. You claimed I didn't write this software in V.
This is false. All of this software is written 100% in V.
I made no such claim at all, and I have screenshots of the posts you deleted to back this up. I said:
"Let's be clear, the way thing(sic) have been phrased so far evoke a compiler much farther along in development than the demo confirms. It is one thing to make aspirational claims. It's another to state complex software has already been written in this language, make comparisons against compilers that have actually been released and claim superiority over them in every sense."
Nowhere does that say you didn't do so. It strongly questions whether the way the language is presented on the website matches the its current state. You're familiar with "extraordinary claims require extraordinary evidence?"
What basic features are broken other than accessing fields of array elements? Please be specific. I debunked all false claims and I'm still getting these vague basic broken features from you.
Honestly? You listed a raft of broken features on the playground and call a reference to broken features vague? You wrote that list yourself.
All of these were written by you:
Not only that, software purported to have been written in this language or transpiled to it, far exceeds the complexity of even the simple things that failed in the playground. It's another to state complex software has already been written in this language Software built in V isn't Software I would like to build in V
All of these were written by you:
Not only that, software purported to have been written in this language or transpiled to it, far exceeds the complexity of even the simple things that failed in the playground. It's another to state complex software has already been written in this language Software built in V isn't Software I would like to build in V
Indeed. And since when is calling out questionable claims made without evidence and asking for that evidence the same as calling someone a liar?
Honestly? You listed a raft of broken features on the playground and call a reference to broken features vague? You wrote that list yourself.
So again, you say that automatic imports is a basic feature, without which complex apps can't be written?
Or enums? Which I have in Volt, they were using an older syntax.
Or maybe lock{}, which is just syntax sugar for mu.lock()/mu.unlock()
Which one, please tell me.
May I ask, what do you consider a runtime to be, @medvednikov?
@Kelimion
Ok, let's say you didn't claim I didn't write it in V, you are only questioning how I could write it in V with so many basic features missing.
So let me ask for the third time, what basic features are missing? Name them, please. I'll do my best to address every single one and explain how I managed to write everything in V.
I already mentioned the #
hack.
@gingerBill what do you consider a runtime to be, where calling println
requires it?
@medvednikov I asked you what do you consider a runtime to be.
And I replied. Not something that's needed for calling a function.
compiler-rt also runtime. It doesn't matter how you legalize this: generate call from standard library or generate set of instructions in compile time =)
And I replied. Not something that's needed for calling a function.
@medvednikov A language that does not require a runtime means that features within the language do not require any libraries in order to function.
A runtime is short for a runtime library.
Features that are classed as part of the runtime:
malloc
and free
(this includes your features where all arrays are dynamic which requires automatic memory managment)go
threads use pthreads
which means that the language requires a runtime library to functionprintln
if it is built-in, requires calling to the operating system to print, this means it requires a runtime library in order to workA runtime (library) can be made by the creator of the language or calling another language's runtime library but that is still a runtime.
Runtimes are nothing to be ashamed of. The vast majority of implementations for C require a runtime. Many embedded versions of C do not require a runtime library because they are usually one step above assembly language.
You are advertising a language with no runtime and you have repeatedly stated that numerous times within this issue however, many of the features that I have stated above explicitly require one.
This got fairly out of hand so I just want to clarify, I don't think anyone here is motivated by some animus against you. Anyone who made the sort of claims you have about V without providing ample evidence to support it, especially when what little evidence there is is questionable, would be subject to intense scrutiny. It's nothing personal. Many of the claims that you've made are highly dubious on their face, and some people are concerned that there is either flawed judgement or malicious intent at play. Again, it's not personal to you as nobody knows you. It's just an interpretation of the claims you've made about V versus what evidence we have to judge those claims by, and when you factor in the fact that you're accepting donations for this product you have to understand that people are going to be motivated to verify any claims that seem exaggerated, distorted, or outright fabricated as a protective instinct toward the people choosing to lend their money to your cause.
If indeed your claims turn out to be correct, people will be very excited to have V as an influencing factor in the language market. According to your claims it would be both an extremely valuable tool in its own right and a competitive force to drive better results from competing languages. However, and there are various non-malicious explanations for this as well, a lot of your claims just don't add up given experience with language design and an understanding of software systems. For example, the ability to serialize data structures without reflection. That's just not possible by any definition unless there is a universal serialization format built into the compiler itself and the serialization code is generated statically at compile time, and even then it's debatable whether that can be called reflection. In my opinion the charitable view is that you're mistaken on the meaning of many things you've claimed about V, such as what constitutes reflection or a runtime.
I hope to be proven wrong. But this is a serious case of "too good to be true" coupled with insufficient evidence to the contrary, and lashing out at people for questioning a project which is accepting funding based on incredibly lofty claims with little to no verification available seems at once immature and unreasonable. Surely you can see why people are skeptical, even if everything you say is 100% on the level.
vlang-io deleted a comment from Kelimion
This is a shame. I read the comments as they came in and they seemed well considered. They weren't abusive.
I'm interested to see what the language is like, if it doesn't live up the features promised I think that's still perfectly okay; one can have a functioning language that people hopefully can use and then gauge interest, which probably will help adding some of the features that were promised.
I agree that it's fine if it doesn't live up to the hype @mayadapples, the problem though is that the claims have been worded as though the language is already living up to these things, and the creator is accepting donations. As @Kelimion pointed out, if these are aspirational goals that's fine, but in that case it should be clear. If they're objective claims (as they are written) and they're not true, then it's fraudulent to accept money on that basis.
I'm not claiming that they aren't true, but I am highly skeptical because some of the claims are hard to believe, and seem to have been watered down as compared to the original ones made at the time of V's announcement. Some of the claims are contradictory, which is why if the author is well-intentioned I hope that he will look into topics such as what defines a runtime, what defines reflection, and correct those claims. For example, there is no way to serialize data structures at runtime without some kind of runtime type information, the use of which is definitionally a form of reflection. So the claim that the language features reflectionless serialization, with an example that shows the use of runtime utilities, is objectively false. This is just the most obvious example that jumps out at me from looking at the website, there are others that have been brought up as well. It's my hope that this is a misunderstanding or misuse of terminology and not an intentionally misleading attempt to draw undeserved attention to the language in order to raise money on Patreon, but it's definitely important for these issues to be addressed because whether intentionally or by accident they are misleading.
@bpunsky
For example, there is no way to serialize data structures at runtime without some kind of runtime type information, the use of which is definitionally a form of reflection. So the claim that the language features reflectionless serialization, with an example that shows the use of runtime utilities, is objectively false.
Please link to an example where serialization uses runtime information.
This is just the most obvious example that jumps out at me from looking at the website, there are others that have been brought up as well.
Please name at least one.
@medvednikov Not trying to be aggressive here, but what is the design aim or purpose of not having a runtime library? Also I'm sorry if this question was already asked.
@bpunsky @Kelimion
You write walls of text with misinformation, but when I ask you to give one actual example, you disappear.
They assert that they can compile Doom to x86 in 0.5 seconds. This claim alone should invalidate the rest.
If you say so.
@medvednikov This may be an issue of semantics. If you're compiling from V to C code, this is transpilation, similar to Coffeescript or TypeScript. You mention runtime.join a bunch of places so it must be that you are doing something like this.
The only other thing I can imagine is that you maybe are compiling to naiive hand-written x86. This is a nightmare for sure.
I didn't disappear. I said that you hadn't actually addressed the meat of my concerns and that I had real work to do, so I'd check back when the compiler is actually released.
But again with calling legitimate technical concerns misinformation. Or is it the disparities in the description of the language other than that? I called out examples and you said you'd correct them. Clearly you must've felt those weren't misinformation.
One of the things I kept saying was that what you presented didn't match the demo. You've now closed the playground and show this message: Due to inconsitencies between the documentation and this pre-alpha build, the playground has been disabled until a more stable release and an updated documentation.
So I was right then that the state of the compiler didn't match the information given.
In your answer to @eterps you say this: No, this is x64 machine code generation. In 0.5s you'll get a binary. At this stage it's not going to work with such a complex application like Doom 3, so I'll change it to a simpler app.
Giving a timing example for Doom 3 (at the time) and admitting it doesn't even work "at this stage", but people calling out disparities we see are peddling misinformation, even when you then later address some of them on the website. Right, so it's not misinformation to make up a timing example from whole cloth, but when people complain that a lot of information on the website just doesn't make sense that is misinformation. I see.
You've also still not addressed @gingerBill's point about the runtime, I see.
I can only speak for myself, but I do see others who also have no beef with you and want to see the language live up to its stated goals. Calling everything misinformation but at the same time updating the website to address some of those very concerns is honestly disappointing.
And I do have actual work to do, so forgive me if I don't go through the website with a fine-toothed comb and point out every single thing that appears to me to be wrong or misleading. It occurred to me that as someone who had written both the language and the website, you'd know in full detail which parts of it were wrong - like the Doom3 timings and the inconsistency between the playground and documentation - and which were correct.
@Kelimion I asked you a simple thing 4 times, 30 messages later you still haven't answered.
You claimed that it's not possible to write complex software in V because it's missing basic features. For the 5th time: please give me an example of one missing basic feature that makes you confident it's not possible to use V to write complex software.
Are you seriously using this runtime argument? This definition of runtime is absolutely useless, because this way every single compiled language has one. So complaining that V uses runtimes is like complaining it uses RAM or electricity.
I think it's pretty obvious that I compare it to languages with a heavy runtime like JavaScript, C#, Java, Python, arguably Go.
I'm not calling everything misinformation. I'm calling claims like
Not only that, software purported to have been written in this language or transpiled to it, far exceeds the complexity of even the simple things that failed in the playground. It's another to state complex software has already been written in this language Software built in V isn't Software I would like to build in V
or
For example, there is no way to serialize data structures at runtime without some kind of runtime type information, the use of which is definitionally a form of reflection. So the claim that the language features reflectionless serialization, with an example that shows the use of runtime utilities, is objectively false.
or
This language does not do over 90% of what is advertised.
misinformation, which it clearly is.
@medvednikov
Are you seriously using this runtime argument? This definition of runtime is absolutely useless, because this way every single compiled language has one. So complaining that V uses runtimes is like complaining it uses RAM or electricity. I think it's pretty obvious that I compare it to languages with a heavy runtime like JavaScript, C#, Java, Python, arguably Go.
Well then you should probably advertise your language as having a lightweight runtime, instead of saying it has no runtime.
This language is not as advertised
This language does not do over 90% of what is advertised. Most of what is advertised is not coherent with most of the claims you have stated. With the new release of the playground, most of the examples in the docs fail, even many of the extremely basic ones.
You have previously claimed that the V compiler uses no AST. However, most of the features that you claim would require a form of AST to even work, including generics and interfaces. An AST is an abstract syntax tree, which means that it just stores data about the syntax that is in a tree-like format. It's pretty much impossible to not have unless you have a very basic language or doing naïve transformations into another similar language.
You claim that the language has no runtime but the following require a runtime:
println
go
runtime.wait()
Why was the playground lacking a lot of basic functionality? If most of these extremely basic features are broken, how could you have made any software in this language other than basic things? -- e.g. Fibonacci examples.
Software claimed to be built in V:
Claimed C/C++ Translations into V:
Claims from your "compare" page:
How would you handle pointers?! In your documentation, you demonstrate that pointers exist. This means that
no null
is false. Pointers also crashed the playground.And when you mean stricter, what does that mean? It was also failing quite often even on basic code in the playground.
So how do they work? Is it just static dispatch?
What you have promised does not even come close to what is delivered.