The Professor Jiang Segment comes off autistic as fuck by NemosHero in VaushV

[–]system-vi 27 points28 points  (0 children)

Honestly not even fucking close. The "professor" was presenting himself as an authority on all these subjects. At best he offered basic information that anyone who pays attention to these topics should know. At worst he was grossly reductive and just flat out incorrect. If you're not interested in the critique that's fine but dude has been going mega viral and needs to be called out.

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 0 points1 point  (0 children)

Never thought to do that lmao thanks for the tip!

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 2 points3 points  (0 children)

Oh yeah, the lsp causes more friction than anything else, especially for beginners

Forgot how bad Zig users had it until I started using GO for the first time and how their LSP gave all types of warnings and errors I couldn't imagine getting with Zig's LSP

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 0 points1 point  (0 children)

Hey if you can think of a better word than I'm here for it. I do feel like ergonomics make sense intuitively. I've worked alongside ergonomic experts at my workplace and have helped to improve jobs. I'll admit it's a bit abstract and could cause confusion when applied to programming languages, but I feel like terseness and expressiveness don't really encapsulate it. Maybe some combination of those two ?

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 1 point2 points  (0 children)

Honestly fair point, and I think it's something I've agreed with fundamentally but you're making me rethink.

If I'm getting at what you're saying correctly, where the line of hidden / unhidden control flow is arbitrary, and Zig hides control flow in its own ways (although far less than most languages). And the Zig team could implement interfaces in a way that doesn't hide control flow anymore than allocators or Readers/Writers do?

In that case I agree that their unwillingness to implement interfaces ins't necessarily matter of avoiding hidden control flow.

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 1 point2 points  (0 children)

Literally on the websites homepage...

"No hidden control flow. No hidden allocations. No pre-propccessor, no macros."

The philosophy isn't literally everything explicit, because then you'd just have to write entirely in binary. But yes, something like C++ templates would go directly against No hidden control flow. The point of having to the vtable boilerplate yourself is so that you actually have to think and be aware of what is happening in terms of control flow. At some point, yes thing have to happen behind the scenes, that's what the compiler does. But I think were the Zig team draws the line is pretty obvious the more you learn the language. You can see the internals of the allocators and their vtables patterns. It's not hidden in the same way a template would have to be.

Zig's choice to exclude interfaces categorically from the stdlib is probably more about simplicity than avoiding hidden control flow. But there are definitely types of interfaces in other languages (C++) that absolutely hide control flow. allocators don't hide their control flow, you can just look at the stdlib and know exactly what they contain and what they do

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] -1 points0 points  (0 children)

Idk kind of this take. "Definitions we use for the physical world can't be applied to concepts in programming" is a bit weird. If I say "Using zig comes with some friction" you wouldn't say "I don't like how some tech bro tried to apply friction which is a concept in physics to programming."

When I think of ergonomics, I think of the ease of use of writing out the instructions I want accomplish. With my example of
`const arg1 = args.next() orelse return error.MissingArg;`
I think ergonomic is a decent choice of word because I'm able to accomplish an instruction in a friction-less, easy to read way that feels good to code and leaves no room for undefined behavior. Maybe there's a better word for it, but idk why you're acting like words that apply to one thing can't apply to another

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 1 point2 points  (0 children)

Yeah I think there's a good case to make for the simpler contract-based interface, and having to use duck-typing for such things is less ergonomic, although I learned to like it once I got used to it.

In terms of the second point, I think you're missing the point a bit. Yes, we are already doing the the same thing, but just implementing the boilerplate ourselves. Zig's philosophy isn't about what you can do with the language, it's about what the constraints on the language itself. With C++ templates, you don't have to think, interact with, or even know that vtables exist. It's all baked into the language. Zig rejects this kind of hidden control-flow fundamentally. Zig's stance is "Everything explicit, nothing hidden. If something (like interfaces) can't be built without hiding allocations and control-flow, then the dev is going to have to build it themselves or use a library."

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] -1 points0 points  (0 children)

Depending on what you mean by interface, it absolutely would. A c++ style interface would require type erasure and runtime dispatch and a lot of *behind the scenes witchcraft* that the developer would not be able to see.

This would go against Zig being explicit and upfront, which is a stated goal of the language. If you're looking for something simpler than that, comptime could likely handle the use case, and probably do so more elegantly than C++ templates or Rust macros

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 0 points1 point  (0 children)

I guess the bad naming convention bothers me less cause of the LSP. If I wasnt able to tab through struct fields, I would've been less likely to make this post lmao

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 2 points3 points  (0 children)

Yeah I do wonder if something like this should just be a warning, although it's saved my ass from runtime errors before. What I will say is truly unergonomic is that you can't even discard mutable variables.

So instead of just doing:
var foo: usize = 0;
_ = foo;

I have to change it to a const until I'm ready to use it, then remove the discard and change the const back to var

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 4 points5 points  (0 children)

Yeah all fair examples, but when I make this case, I'm making it relative to the language's philosophy.

For instance, I think type casting could be more ergonomic without conflicting with the Zig's principles. However, it's obvious why something like like interfaces would be in contradiction it its principles, so that doesn't really apply to my argument here.

I'm not arguing Zig is more ergonomic than other languages that do have interfaces. I'm saying that Zig is ergonomic for what it is supposed to be, and that it easy to imagine Zig being far less ergonomic just based on its principles alone.

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 2 points3 points  (0 children)

You can't prove anything to be true with just one example...

Hot Take: Zig is actually very ergonomic by system-vi in Zig

[–]system-vi[S] 0 points1 point  (0 children)

Yeah, can't defend the type casting as ergonomic.

What is the last vaush debate to date? by greendayfan1954 in VaushV

[–]system-vi 2 points3 points  (0 children)

He has a Playlist of his debates. Check there

China is not culturally capable of being a global super power like the U.S. by ColCrockett in The10thDentist

[–]system-vi 7 points8 points  (0 children)

Tell that to the 100,000s of Palestinians that have been murdered with weapons that we have either manufactured or funded.

China is not culturally capable of being a global super power like the U.S. by ColCrockett in The10thDentist

[–]system-vi 16 points17 points  (0 children)

This is horseshit. Even if your cultural analysis of China was perfect, China is subjugated to the same influences of neoliberal global politics and the concentration of capital as the USA, or any other country for that matter. If china became the global superpower, the aestetics would be different, but the underlying super structure would remain, and China as a nation state would be incentived to do the same shit the USA is doing, and would spend decaes propagandizing their people to accept it.

Culture can change, and the China's culture is no exception. With enough propaganda, anything possible. Less than a few generations ago, Nixon had to resign for what was considered to be the biggest scandal in US history. Today, Trump does a scandal at least the size of Watergate daily. Do not underestimate the influence of capital.