Comments by "Anony Mousse" (@anon_y_mousse) on "Theo - t3․gg"
channel.
-
28
-
15
-
13
-
7
-
7
-
6
-
5
-
5
-
5
-
4
-
4
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
3
-
2
-
The only thing good about it is the concurrency because it uses BEAM. It's literally a less effective Rust. I wonder how long he had been working on it because I'm still not ready to release my language, but mine will have function overloading and allow using whatever Unicode characters you want. And I still take issue with the fake inference that modern languages have. let as a keyword to define an object, is just dumb. It's basically a weaker version of the auto keyword in C++ because now you're asking for permission. In my language you can infer by just doing foo := bar; The only reason for the : notation in setting a value in my language is to tell the compiler to create something there. It's just a way of catching mistakes, so you won't be likely to do foo = bar; and later baz = foO; and get a value or error you don't expect. It also works as a conditional guard so you don't accidentally set the value in a conditional.
I also take issue with the import systems for every modern language, even C++. If I'm importing a library I expect it to be immediately accessible. So import io; and everything in the io subsection of the library is accessible, but you can also do import io as io; and keep it in its own namespace or import io as fluffernutter; if you want. I also took the approach of inferring meaning in cases where the context tells me what you're referring to, such as enum Color { Red, Green, Blue }; Color c = Green; instead of requiring Color:Green to explicitly get at the namespace, though you can still be explicit if you want.
I did the same for switch. switch c { Red: foo(); break; Green { bar(); baz(); } Blue { print( "Green doesn't fall through because it enclosed the case in braces.\n Red does fall through because it designates a section.\n" ); } }. I also avoided the Java style keyword duplication by allowing a modifier to enclose a block or start a section. So say you want to make a group of functions public, just do public: and everything until the next section is public, and you can stack them. I still don't understand why everyone wants to copy Java and JavaScript for function syntax. No need for a keyword, just use a regular pattern.
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
Completely disagree with regards to Google vs Oracle. The chief reasons being that A) Sun opened the source for the JDK and JVM before Oracle bought Java from them, and B) Oracle didn't even create Java, they bought it from Sun, and of course C) Google didn't copy any code to make their runtime, nor did they call it Java. It has already been established with prior court precedents that you can't copyright an API. Furthermore, logically and morally speaking, copyrights, patents and trademarks should not be transferable. As for Nintendo's insecurities, I always referred to the NES as a Nintendo and the SNES as a Super Nintendo. They should've just embraced that, but they're a shit company anyway so fuck 'em. I really don't know why I bother wasting my time commenting because YouTube either deletes or shadows a good 85% of my comments, and the ones that stick just about never get read anyway.
2
-
2
-
Not that you'll read this, but I'd actually prefer we just stick with the old works-everywhere formats. PNG's and JPEG's were good enough and if you're using an older computer you probably can't update it to use the newer format because you can't update either your hardware or your software. As it turns out for me, I can't open AVIF except through the browser and AV1 encoded video plays like a slideshow. I have a few means for converting WEB/P, but it's awkward to deal with and I can't really browse my local files if they're encoded that way.
However, there are two points that need correcting. The first is that JPEG doesn't have a lossless option, because it actually does and was added to the standard back in 1993. Most tools can't work with it, but nevertheless it does exist in the standard. The second is that PNG's don't have compression because they most certainly do. I can only conclude that you meant that in a different way. If you meant to say lossy, well, there are compressors that allow you to have lossy compression with PNG files, such as `pngquant`. There are others, but it seems to be the best at it as far as I'm concerned. If you meant something else I can't think of what.
2
-
2
-
2
-
2
-
2
-
2
-
2
-
2
-
I'm sure that 99% of developers will never get what I mean by this, but this is why you use toolkits.
No one should care, or even need to care, about X or Wayland or low level primitives of the GPU, unless you're writing a game. A text editor, no matter how complex it is, shouldn't require this level of optimization, and if they weren't writing everything from scratch and doing the GPU acceleration by hand, they wouldn't have to worry about these issues. This has been, and will continue to be, my biggest complaint with regards to the rewrite everything crowd. Of course, if they were writing the toolkit, then this behavior could be overlooked because they'd need to deal with the complexity, but game developers have already solved these optimizations and if they knew anything about game development then they'd not be looking at it and going, "what is happening here".
Maybe you think this is too harsh. After all, it has taken years of learning for me to understand everything that I do and they're probably in their 20's, but it goes along with what I've been saying over and over again about not reinventing the wheel.
DRY code is better than WET code.
2
-
2
-
2
-
I think that maybe some people missed your overall point, which is a very valid point that applies no matter what language the project was written in or what language they want to move the project to.
For my own perspective on this constant RIIR mentality, I've found nearly universally that when rewrites happen, features are lost. Even if the program runs faster, if it does less, as the user of that program I don't care if it's now viewed as a "safer" program. Of course, as anyone who knows more than one systems language can tell you, there's more than one way to skin a cat and Rust isn't any safer than other languages, even C. There are plenty of tools to do analysis of your code and keep your program error free that are far better than the Rust compiler and target languages like C. You can write high quality code in nearly any language, it's just a matter of skill. One could claim all they want that "Rust forces you to do things a certain way", but if you already write your code in that way then you shouldn't have problems with C, and if you don't already write your code that way then you were using C wrongly anyhow. If you didn't already know how to correctly write code, then you probably shouldn't have been a programmer in the first place, or you should just use JavaScript.
As for the comments on async, I have always believed it's the wrong solution for the problem at hand. It's an attempt to merge the concept of a coroutine with threads and make them take less effort than threads, but it's still just threads with you having less control over what happens. True coroutines don't require separate threads, but the concept has been bastardized by everyone who keeps incorporating async garbage into languages. I look at them as being unnecessary work because it's better overall to just use the OOP method of saving state in memory somewhere, maybe even on the stack, and then just calling a function to update that state, which is more or less the generator concept. Consider that C already has that in its standard library with FILE's, where you can read some input or write some output and it's buffered. If you really want to read input in the background, then just use a separate thread, which even C has in its standard library now too.
Although, I doubt anyone will read all of this, and it's most likely that someone will see this last line and comment that they read the whole post when they didn't.
2
-
2
-
2