@@aleclowry7654Look Flash, I know you just got out of a fight with Thawne and your head is all wonky, but you can’t match the EXPLOSIVE namepower of C3. Get boomed, loser. 💥 🧨.
27:20 In case anyone needs to know: You can install NPM packages globally without root access by telling NPM to put things in your home directory. npm config set prefix "$HOME/.npm" Don't forget to put "$HOME/.npm/bin" in your path. You can use any directory you want instead of "$HOME/.npm".
Hadn't ever touched WebAssembly till watching this, had no idea it was so simple to import a module and start using the functions it exposes. Really neat.
@@KettLovahr Yeah, i've since figured out that UA-cam is A/B testing a new "feature" where keywords in comments become links that take you to the youtube search page for that word. Apparently i'm in the early test group, since i've not seen anyone else mention this. Completely useless.
I did read an interview with the creator of C3 saying that from a philosophical perspective his language is mostly similar to Odin and disimilar to others like Zig, Jai, etc.
This is such an insane time. Tsoding is truly an engineer. Figuring out how to integrate external libraries to build interfaces for webpages. Edit since someone is trying to ask if this is an AI post xD I made my statements here because I was truly impressed with what he achieved in this video. It made me feel slightly jealous, since, my brain doesn't work in quite the same way xD It could just be from my lack of experience and not knowing how to actually use Web Assembly, since, I've never played with it before, but Tsoding converted a native C-library that handles UX and a game event loop into Web Assembly and is able to use it in the webpage itself is impressive to me. I have atleast made one canvas game, Atari's Breakout, but that wasn't a difficult game to make. I think what Tsoding has shown in this video can revolutionize how developers can make web games. You can take any engine built in C3 and convert it to Web Assembly to integrate into a site's canvas element.
I just completed this video after liking your earlier trolling click bait. Very enjoyable; I hugely appreciate how you evangelise an objective and professional take on technologies, with humour and exaggerated emotion. But we can also enjoy your obvious and real delight when something turns out well. So cool that you got C3 to give you both a WASM and native exe, with minimal malarkey.
i wondered why c3 wasn't getting more attention. extended c seems like a most practical approach to make a useful generalist programming language c++ took that route a long time ago and it turned out pretty useful!
@@severgun for me, C's functionality without the crappiness of C/C++ (header files, templates, preprocessor) is a pretty good selling point. Any other language tries to pour their own little sauce over the language that in some way prevents you from doing stuff you could do in C, so a language that doesn't try to do that sounds pretty cool. (I must say though, the "anything starting with a capital letter is a type", I would consider annoying get-in-your-way sauce, so :/...)
@@markblacket8900Here are some more features from my systems-language wishlist in no particular order. Some way to express the idea of an "inline-counted" array in the type system. As in, in memory you have a value N of some int type followed by exactly N many objects of type T. Not like a slice type with fat pointers, but basically sugar for c99 flex array structs with a stored length field. Allow detailed manual control over memory layout of structs and their fields, including things like offsets, padding, alignment, and endianness. Explicit field offsets would make unions redundant - a union is just a struct with all fields at offset 0. The big usecase here would be cross platform binary file or network IO, where the format/protocol specifies a layout independent of the machine's "native" one - the language should be able to use such layout attributes to portably interpret a struct e.g. inside a mem mapped file, without me having to either (1) depend on an external library, (2) write all my types in an IDL with its own special build tool, or (3) explicitly read/fgetc and shift every individual byte. And finally, get rid of the crazy "ex falso quodlibet, anything-goes, time-traveling nasal demons" interpretation of undefined behavior that lets compilers do crazy shit like "this pointer was deref'd earlier, therefore it can't be null cuz UB, so i can 'optimize' this definitely-totally-redundant null check." (This caused an actual vulnerability in the linux kernel btw)
I went away from front end development because new shit started popping out all the time, then I moved to backend. Then backend started having a bagillion frameworks, so I moved to systems programming thinking I will be able to ride C and Rust for the end of times. Now the same shit is happening. I think I'm moving to hardware design next. Hopefully I don't get to the point of mining ore to build chips before I retire.
"Why do you even wanna code in this language? Because they said us not to." - Daily, Tsoding Don't code in C, it's "unsafe", someone says: "So, it means we need to code in C again." - Daily, Tsoding "All the useful codebases in the world is in C" - Daily, Tsoding
I think it's easy to conflate simps and genuine hype because of reduced pain. Enough time fking around building C projects and zig build system really does feel like a dream by comparison.
@@stretch8390 we all know zig is more mature and has more capabilities but not everything is a fucking competition, all of these coding projects are pretty much for fun... and we really lack that in the industry. Partially that is because some people treat programming languages like its their girlfriend and they are the white knight that needs to defend it at any opportunity. Its not a competition, sometimes one wants to code in some strange... no need to spoil it. Yes zig is this and that, but this is not a zig video, its not about it, even though he titled it very honestly people still comment about zig capabilities and why its a better choice...
@@krellin I think I get what you're saying and I dont disagree especially about projects for fun. My initial point is just that often there is some element of truth behind hype even though the hype itself is annoying. Have you got any fun projects you're trying at the moment? I'm just exiting the land of lisps after a while with Clojure.
@@stretch8390 yeah i've got a kotlin project where i experiment with zero serialization types... basically sending messages but there is no actual serialization/deserialization happening... with a special network card data lands in memory directly, gets pointed at and its ready to use and send back again... performance magic is my jam
So, I spent the afternoon trying to make the compiler work on my Ubuntu 20 machine, right after finishing the last video, but no luck with that yet (glibc version too old), so will have to settle with docker for the time being. It seems a really cool language, and pleasant to use.
@@nickelpence The link just takes you to the YT search page, so it's clearly broken. Although _now_ the links also have a search icon next to them, so it's definitely A/B testing some AI garbage. I'm seeing the same thing happen all over the place.
At first, the streams stopped officially starting, now it is not specified that they are with Mr. Zozin. What's next? Programing sessions will no longer be recreational!?
With how small it became excluding libc and stdlib makes me think C3 could be great for embedded software. I develop custom firmware and apps for Flipper Zero, and I wanna try to use C3 for flipper apps, could improve dx drastically
Same, its very C-like in syntax without all the annoyances of C and its preprocessor, it feels familiar while accomplishing the same things as those other languages. Also I love prefixed type declarations, I despise the modern language solution of forcibly declaring typed objects either implicitly or by forcing the type on the right side, (which I say is less important and trashes code review, I don't want to use an IDE just for code review jerks) usually with a left hand declaration syntax. The fn keyword solves the most vexing parse problem and keeps type info context independent.
1:08:20 Maybe it were already mentioned: it's possible to pass a Color to wasm using temporal address and casting it to Color, like this &&Color{0xFF, 0, 0, 0xFF}
You got my immediate like without watching the video, because I admire your trolling! Watching it now though..... BTW Can Zig fans say why they did not reject Zig when they saw Odin?
For me, it’s the build system. Zig’s build system is awesome, IMHO. Take a look at the video: “Zig as a Multi-OS Build System (with Loris Cro)” on the Developer Voices channel. Their goals are quite ambitious, but if they pull it off, it would be a big deal.
One big reason is Zig's comptime and a lack of any macro or compile time feature for Odin. Zig's comptime is awesome even compared to advanced compile time evaluations like Rust's macro system, C++'s templates, Javas generics etc. So it's a big plus either way, but with Odin lacking such a thing, eh, it's a big drawback. Even Go was without generics for a long time and its creators accepted it needed it after a while. It's just not feasible duplicating your data structures and related algorithms all the time.
Because you can learn only 1 language for the programming language, meta languange and build system. The syntax is not the best in the world, but WHO CARES. And plus, you can use it as build system for other languages and achieve easy cross-compilation and other shit.
@@Lorenzo1938 @Caesim9 @jc-aguilar your reasons chime with what little I know about how Zig compares to the other current "evolutions" from C. As someone who had to use C in the 80s and 90s, I appreciate learning more about the alternatives. As Ginger Bill himself says, you need to try stuff out to get a reasonable impression (I paraphrase badly); there is no shortcut.
@@000dr0g yeah, the best thing is to stick with a language and take a deep understanding. For me Zig is the C alternative, no strange behaviour, not overcomplicated things like in Rust, manual memory, full metaprogramming without macros. I like Odin too, but i need some metaprogramming features. And one "feature" of having a simple language that you can read the standard library without any issue like learn 100 traits. One drawback: it lacks interfaces, so you need to stick with vtables. But on github there is a thread opened to implement this in 1.0 language
@23:20 Want to split your compilation in your makefile? Just create a new target and split your files Want to split your compilation in Rust's Cargo? Create a new folder and Cargo.toml for each different target, configure them all over again, beware of cross dependencies. Also, can't make dependencies dynamic or Cargo refuses to compile some crates due to duplicate dependencies
Racoon Trollercoaster: Around the Bend Again You're a racoon that trying to get to grass but you're on the Social Media Rollercoaster. Can you troll and bomb your way to Logic Land and keep your spots? Sustain yourself with knowledge & avoid the low hanging fruit. Support the train until you can bail out, into your Field of Dreams. Its one big rollercoaster where the levels are the different social medias we had. Each platform is its own level. New starts when you come back to where the first one started, then the track changes.
can someone please explain to me why def Color = char[]; works for tsoding but it doesn't work for me? Meaning raylib doesn't set the correct colors. Only making Color into a struct worked. I'm coding with raylib in windows not linux could this be the reason?
lol I should have seen this video to the end, before making this question, but I was basing it on the previous video, he add the same problem as me in this one with the color!
I think when passing a vector, the compiler for some reason treated it as four arguments (in the case of color) to the function instead of just one argument, and js couldnt find the right function? Basically set_color(r,g,b,a) vs set_color(color)
Except instead of being unable to find the right function, JS silently chopped off the excess arguments because JS allows you to call any function with any number of arguments for some reason, even from wasm, so the function read the colour from address 0xFF (supposed to be a pointer, but instead is the red value), which happens to be all zeroes.
I know you are not fond of zig, can you please explain why? Genuinely interesting to hear someone whos actually a skilled developer. Is it due to zig being pre 1.0?
I think its because he has a perverse love for macros and honestly for the kind of programming that he does I kind of get it lol, also zig attempts to reduce the amount of undefined behavior as much as possible so there is some stuff that is a little more annoying to do "by default" but you can make utils to mostly solve that if thats an issue for you. so yeah thats my theory lol
He did a Zig stream where he implemented a breakout clone in Zig. To be fair, I also don't like Zig's noisy syntax, and also I don't like that it does not allow unused variables and multiline comments and so on. (Zig tries to reduce UB, haha - they made unsigned integer overflow UB whereas it is defined behaviour in C) And no if your language requires tools to be usable, your language sucks... Zig is a good cross-compiler and I do like some of its ideas around compile time execution, and some better defaults and some fixes of C (no null, no null terminated strings, no errno, pointers that know their length (slices), etc. etc.) Zig wants me to program how it wants, C gets out of my way and I configure sanitizers and warnings to suit my needs. Also Zig is useless to me, everything has a C API, and Zig is not substantially different in its scope for me to learn it, everything Zig is good for, C is good for...
@@theevilcottonball yeah the unused variable thing is annoying and kinda worrying for the future of the language BUT cross-compilation, compile time execution, optional types, slices, errors as values, tagged union, the @Vector() type, better type notation, package manager, optional runtime safety checks, methods, no header files... you know, it adds up what do you mean by zig having a noisy syntax ? is it just the casting stuff ? btw if you want defined behavior overflow you need %+
@@theevilcottonballZig does have a couple opinionated choices, such as requiring tab indentation and not allowing unused variables, but saying "Zig wants me to program how it wants" is a stretch. You can program Zig in a C-style and tell it to forego most of its safety checks if you really want. It has every bit the same openness as C, just requires more verbosity because a lot of C issues are caused by implicitly handling things. Rust is a language that forces people into a specific way of programming, Zig is not
@@johanavril1691 No, I think Zig did the right thing when it comes to unsigned integer overflow, usually you don't want wrap-around behaviour either, with undefined behaviour you get the choice to crash, saturate, wrap-around, optimize as if it does not occur, etc. You can state intent and hopefully your zig implementation let's you choose (the current variant has options for all three) The thing is, I like Zig, but I also like making fun of Zig.
--experimental-strip-types iirc. it doesn't actually compile ts but it strips type annotations from the compiled code entirely so at least typescript will "run"
1:06:00 Actually, it seems you can still use the internal vector structs as it seems to silently and magically convert a vector object to a struct object? Or am I misreading what's happening.... EDIT: Ah, I see, it was tested immediately, and didn't work. :( EDIT2: Man what a ride, saved at 1:15:00 !
I started reading up on the language then saw that they removed the const qualifier and replaced it with "contracts" which are given in a special comment above functions. Who thought that was a good idea? If you're gonna remake C why take such shortcuts?
your npm version must be old or something, npm defaults to user home directory in modern versions. Also you might want to give npx (tsx for typescript) a try. npx ships with npm for for running global commands
@@iilugs Adds complexity in the name of safety, but still leaves gaping footguns. Just bizarre takes on interfaces/vtables, error handling, lambda functions and many other features modern languages take for granted. Comptime is a fad. It's untractable and very hard for editor tooling to keep up with. It's basically a crutch for the lack of a proper type system. Ditching llvm for a bespoke backend. Yikes. People have spent decades finely crafting GCC and LLVM, but Zig has to be different of course.
"I don't like build systems" reslly gels with me- why would I learn some opaque esoteric magic when I can slap together what I need with a bit of bash!
I don't think Zig fans care. C3 is not going to take off, it makes no difference how many people try to use it. I think more people should use it to find out the hard way.
Imagine programming only in C3 when C99 exists
33 times better
so sad that first release wasn't called C69
33x betterer
Me still stuck on C17 :-(
I love the fact that 3/6 programmers have anime pfp youtube accounts and rest are closet weebs.
C4 is gonna be a banger
it's gonna be explosive!
Literally
@@tmpecho a use once language
18
this guy faks
Can't wait for the successor to the C3 language, the CCCP
💀💀💀
10,000++; social credits!
☭☭☭
Oh no 🙈
I refuse to investigate this language due to sunken cost into zig
Plus zig is a cooler name
@@aleclowry7654they should've named c3, "Shark" to beat zig.
I would investigate this and every other C successor if I was a 10x fast learning engineer. Or if I didn't have a gf
@@aleclowry7654Look Flash, I know you just got out of a fight with Thawne and your head is all wonky, but you can’t match the EXPLOSIVE namepower of C3. Get boomed, loser. 💥 🧨.
I would investigate if they would call it c69
27:20 In case anyone needs to know: You can install NPM packages globally without root access by telling NPM to put things in your home directory.
npm config set prefix "$HOME/.npm"
Don't forget to put "$HOME/.npm/bin" in your path. You can use any directory you want instead of "$HOME/.npm".
Hadn't ever touched WebAssembly till watching this, had no idea it was so simple to import a module and start using the functions it exposes. Really neat.
Why is WebAssembly a link?!
I saw some other comment has "glibc" as a link for some reason
@@chri-kI think that's just on your end!
@@KettLovahr Yeah, i've since figured out that UA-cam is A/B testing a new "feature" where keywords in comments become links that take you to the youtube search page for that word.
Apparently i'm in the early test group, since i've not seen anyone else mention this.
Completely useless.
i'ma be honest, if c3 continues being this minimal with useful features, i'ma be adding it to my tool belt
I did read an interview with the creator of C3 saying that from a philosophical perspective his language is mostly similar to Odin and disimilar to others like Zig, Jai, etc.
if odin didn't exist, i would be using c3
where do I find the interview?
This is such an insane time. Tsoding is truly an engineer. Figuring out how to integrate external libraries to build interfaces for webpages.
Edit since someone is trying to ask if this is an AI post xD
I made my statements here because I was truly impressed with what he achieved in this video. It made me feel slightly jealous, since, my brain doesn't work in quite the same way xD
It could just be from my lack of experience and not knowing how to actually use Web Assembly, since, I've never played with it before, but Tsoding converted a native C-library that handles UX and a game event loop into Web Assembly and is able to use it in the webpage itself is impressive to me. I have atleast made one canvas game, Atari's Breakout, but that wasn't a difficult game to make.
I think what Tsoding has shown in this video can revolutionize how developers can make web games. You can take any engine built in C3 and convert it to Web Assembly to integrate into a site's canvas element.
AI post?
@@satyajeetjena6758 I guess it almost reads like an AI post. lol
I just completed this video after liking your earlier trolling click bait. Very enjoyable; I hugely appreciate how you evangelise an objective and professional take on technologies, with humour and exaggerated emotion. But we can also enjoy your obvious and real delight when something turns out well. So cool that you got C3 to give you both a WASM and native exe, with minimal malarkey.
i wondered why c3 wasn't getting more attention.
extended c seems like a most practical approach to make a useful generalist programming language
c++ took that route a long time ago and it turned out pretty useful!
because it does not have any selling points. Having fn is not enough
@@severgun for me, C's functionality without the crappiness of C/C++ (header files, templates, preprocessor) is a pretty good selling point. Any other language tries to pour their own little sauce over the language that in some way prevents you from doing stuff you could do in C, so a language that doesn't try to do that sounds pretty cool.
(I must say though, the "anything starting with a capital letter is a type", I would consider annoying get-in-your-way sauce, so :/...)
@@severgun sane macros, compile-time execution, vector types, namespaces, defer.
I don't know what else a good alternative to C needs
@@markblacket8900 it needs a tribe and hype lol "rewrite it in C3 when??" so it can raise some money and keep going...
@@markblacket8900Here are some more features from my systems-language wishlist in no particular order.
Some way to express the idea of an "inline-counted" array in the type system. As in, in memory you have a value N of some int type followed by exactly N many objects of type T. Not like a slice type with fat pointers, but basically sugar for c99 flex array structs with a stored length field.
Allow detailed manual control over memory layout of structs and their fields, including things like offsets, padding, alignment, and endianness. Explicit field offsets would make unions redundant - a union is just a struct with all fields at offset 0. The big usecase here would be cross platform binary file or network IO, where the format/protocol specifies a layout independent of the machine's "native" one - the language should be able to use such layout attributes to portably interpret a struct e.g. inside a mem mapped file, without me having to either (1) depend on an external library, (2) write all my types in an IDL with its own special build tool, or (3) explicitly read/fgetc and shift every individual byte.
And finally, get rid of the crazy "ex falso quodlibet, anything-goes, time-traveling nasal demons" interpretation of undefined behavior that lets compilers do crazy shit like "this pointer was deref'd earlier, therefore it can't be null cuz UB, so i can 'optimize' this definitely-totally-redundant null check." (This caused an actual vulnerability in the linux kernel btw)
I went away from front end development because new shit started popping out all the time, then I moved to backend. Then backend started having a bagillion frameworks, so I moved to systems programming thinking I will be able to ride C and Rust for the end of times. Now the same shit is happening. I think I'm moving to hardware design next. Hopefully I don't get to the point of mining ore to build chips before I retire.
haha
The next step after HDL/FPGA/IC-Design is finally chip manufacturing, you'll need to create a process to defeat TSMC.
But there are new architectures and ISAs coming out all the time!
we have a chip designer here in 10 years, bois
what if u dont pay attention to dumb shit and just build stuff
that title is pure gold
Annoying fanboys is one of the great past times of the Internet - probably why it was invented
"Why do you even wanna code in this language? Because they said us not to." - Daily, Tsoding
Don't code in C, it's "unsafe", someone says: "So, it means we need to code in C again." - Daily, Tsoding
"All the useful codebases in the world is in C" - Daily, Tsoding
Bro's acting like daily is his last name 💀
@@anakpinguin3942I'm sorry but... Bro's sounding like he clearly didn't get the comment lol... of course this is not his name
And fortran
Twitch Chat subtitles are top tier
i hope one day people will stop simping for programming languages and just treat them as what they are
I think it's easy to conflate simps and genuine hype because of reduced pain. Enough time fking around building C projects and zig build system really does feel like a dream by comparison.
It does not work for religions, so why do you expect it to work anywhere else?
@@stretch8390 we all know zig is more mature and has more capabilities but not everything is a fucking competition, all of these coding projects are pretty much for fun... and we really lack that in the industry.
Partially that is because some people treat programming languages like its their girlfriend and they are the white knight that needs to defend it at any opportunity.
Its not a competition, sometimes one wants to code in some strange... no need to spoil it.
Yes zig is this and that, but this is not a zig video, its not about it, even though he titled it very honestly people still comment about zig capabilities and why its a better choice...
@@krellin I think I get what you're saying and I dont disagree especially about projects for fun. My initial point is just that often there is some element of truth behind hype even though the hype itself is annoying.
Have you got any fun projects you're trying at the moment? I'm just exiting the land of lisps after a while with Clojure.
@@stretch8390 yeah i've got a kotlin project where i experiment with zero serialization types... basically sending messages but there is no actual serialization/deserialization happening... with a special network card data lands in memory directly, gets pointed at and its ready to use and send back again...
performance magic is my jam
literally in love with your channel. keep it up :))
Literally in hate with your channel. Keep it down }:((
im tsodingsexual
Stream conclusion: Zig L, C3 huge W
So, I spent the afternoon trying to make the compiler work on my Ubuntu 20 machine, right after finishing the last video, but no luck with that yet (glibc version too old), so will have to settle with docker for the time being.
It seems a really cool language, and pleasant to use.
why is "glibc" getting highlighted as a link?
@@chri-k wait, what? It isn't for me, both on mobile and browser.
@@nickelpence A/B testing some AI garbage?
@@nickelpence The link just takes you to the YT search page, so it's clearly broken.
Although _now_ the links also have a search icon next to them, so it's definitely A/B testing some AI garbage.
I'm seeing the same thing happen all over the place.
@@chri-k good-old UA-cam shenanigans
"I hate magic in Software Development" - Daily, Tsoding
Me too for sure
We love some big PIC energy
Is very funny how you discover the new functionalities investigating using the compiler 👏
At first, the streams stopped officially starting, now it is not specified that they are with Mr. Zozin. What's next? Programing sessions will no longer be recreational!?
one of my favorite streams, love your approach to learn by intuition and reading source code
1:51:00 will you also create pull request with build.c3 to all their repos??
best part is the fact that they actually kept the inside out boustrophedonic C declaration syntax mess
C3 maybe the future
C99
With how small it became excluding libc and stdlib makes me think C3 could be great for embedded software. I develop custom firmware and apps for Flipper Zero, and I wanna try to use C3 for flipper apps, could improve dx drastically
I saw c3 and wondered why they would stick with the C things, but after reading the docs I am more convinced that I like it.
If we're speaking of self-touted C replacements, I much prefer C3 and Odin to Zig.
Same, its very C-like in syntax without all the annoyances of C and its preprocessor, it feels familiar while accomplishing the same things as those other languages. Also I love prefixed type declarations, I despise the modern language solution of forcibly declaring typed objects either implicitly or by forcing the type on the right side, (which I say is less important and trashes code review, I don't want to use an IDE just for code review jerks) usually with a left hand declaration syntax. The fn keyword solves the most vexing parse problem and keeps type info context independent.
brb adding build.zig to your demo in c3
Happy that vibes got restored 🎉
1:08:20 Maybe it were already mentioned: it's possible to pass a Color to wasm using temporal address and casting it to Color, like this &&Color{0xFF, 0, 0, 0xFF}
aaaaaaaaaaaaaawesome! btw target in the project json file was called web because you called your project web xD
You got my immediate like without watching the video, because I admire your trolling! Watching it now though..... BTW Can Zig fans say why they did not reject Zig when they saw Odin?
For me, it’s the build system. Zig’s build system is awesome, IMHO. Take a look at the video: “Zig as a Multi-OS Build System (with Loris Cro)” on the Developer Voices channel. Their goals are quite ambitious, but if they pull it off, it would be a big deal.
One big reason is Zig's comptime and a lack of any macro or compile time feature for Odin.
Zig's comptime is awesome even compared to advanced compile time evaluations like Rust's macro system, C++'s templates, Javas generics etc. So it's a big plus either way, but with Odin lacking such a thing, eh, it's a big drawback.
Even Go was without generics for a long time and its creators accepted it needed it after a while. It's just not feasible duplicating your data structures and related algorithms all the time.
Because you can learn only 1 language for the programming language, meta languange and build system. The syntax is not the best in the world, but WHO CARES. And plus, you can use it as build system for other languages and achieve easy cross-compilation and other shit.
@@Lorenzo1938 @Caesim9 @jc-aguilar
your reasons chime with what little I know about how Zig compares to the other current "evolutions" from C. As someone who had to use C in the 80s and 90s, I appreciate learning more about the alternatives. As Ginger Bill himself says, you need to try stuff out to get a reasonable impression (I paraphrase badly); there is no shortcut.
@@000dr0g yeah, the best thing is to stick with a language and take a deep understanding. For me Zig is the C alternative, no strange behaviour, not overcomplicated things like in Rust, manual memory, full metaprogramming without macros. I like Odin too, but i need some metaprogramming features.
And one "feature" of having a simple language that you can read the standard library without any issue like learn 100 traits.
One drawback: it lacks interfaces, so you need to stick with vtables. But on github there is a thread opened to implement this in 1.0 language
I learned a lot by watching your streams!
@Tsoding Daily, I'm curious to hear your highlights on C3 and how it differs from other languages currently in development/use?
His highlight will be basically something like: "Well my highlight is that C3 is a programming language that you can use to write software!!"
@23:20
Want to split your compilation in your makefile? Just create a new target and split your files
Want to split your compilation in Rust's Cargo? Create a new folder and Cargo.toml for each different target, configure them all over again, beware of cross dependencies. Also, can't make dependencies dynamic or Cargo refuses to compile some crates due to duplicate dependencies
Tycoon Rollercoaster v5
Racoon Trollercoaster: Around the Bend Again
You're a racoon that trying to get to grass but you're on the Social Media Rollercoaster. Can you troll and bomb your way to Logic Land and keep your spots? Sustain yourself with knowledge & avoid the low hanging fruit. Support the train until you can bail out, into your Field of Dreams.
Its one big rollercoaster where the levels are the different social medias we had. Each platform is its own level. New starts when you come back to where the first one started, then the track changes.
can someone please explain to me why def Color = char[]; works for tsoding but it doesn't work for me? Meaning raylib doesn't set the correct colors. Only making Color into a struct worked.
I'm coding with raylib in windows not linux could this be the reason?
lol I should have seen this video to the end, before making this question, but I was basing it on the previous video, he add the same problem as me in this one with the color!
Is it code, compile and crash?
I really didn’t get the issue of vectors and structs being passed - so I guess I’m part of the problem 😢
I think when passing a vector, the compiler for some reason treated it as four arguments (in the case of color) to the function instead of just one argument, and js couldnt find the right function? Basically set_color(r,g,b,a) vs set_color(color)
@@0marble8 Thanks man, I understand now.
Except instead of being unable to find the right function, JS silently chopped off the excess arguments because JS allows you to call any function with any number of arguments for some reason, even from wasm, so the function read the colour from address 0xFF (supposed to be a pointer, but instead is the red value), which happens to be all zeroes.
@@chri-k Thank you brother, sorry for being belated.
Have you tried using a different javascript runtime? Bun and Deno support typescript by default.
Just rewrite Zig and C3 in Rust. That is the ultimate goal.
Instant like /Zig sponsor
npm init 10 enters and Y in the end > npm init -y lol Mr Zozin is on fire!!!!
Great opening as always!
Would you mind to use Pharo Smalltalk on day?
the unreasonable magicity of 800 by 600
I know you are not fond of zig, can you please explain why? Genuinely interesting to hear someone whos actually a skilled developer. Is it due to zig being pre 1.0?
I think its because he has a perverse love for macros and honestly for the kind of programming that he does I kind of get it lol, also zig attempts to reduce the amount of undefined behavior as much as possible so there is some stuff that is a little more annoying to do "by default" but you can make utils to mostly solve that if thats an issue for you. so yeah thats my theory lol
He did a Zig stream where he implemented a breakout clone in Zig. To be fair, I also don't like Zig's noisy syntax, and also I don't like that it does not allow unused variables and multiline comments and so on. (Zig tries to reduce UB, haha - they made unsigned integer overflow UB whereas it is defined behaviour in C) And no if your language requires tools to be usable, your language sucks... Zig is a good cross-compiler and I do like some of its ideas around compile time execution, and some better defaults and some fixes of C (no null, no null terminated strings, no errno, pointers that know their length (slices), etc. etc.) Zig wants me to program how it wants, C gets out of my way and I configure sanitizers and warnings to suit my needs. Also Zig is useless to me, everything has a C API, and Zig is not substantially different in its scope for me to learn it, everything Zig is good for, C is good for...
@@theevilcottonball yeah the unused variable thing is annoying and kinda worrying for the future of the language BUT cross-compilation, compile time execution, optional types, slices, errors as values, tagged union, the @Vector() type, better type notation, package manager, optional runtime safety checks, methods, no header files... you know, it adds up
what do you mean by zig having a noisy syntax ? is it just the casting stuff ?
btw if you want defined behavior overflow you need %+
@@theevilcottonballZig does have a couple opinionated choices, such as requiring tab indentation and not allowing unused variables, but saying "Zig wants me to program how it wants" is a stretch.
You can program Zig in a C-style and tell it to forego most of its safety checks if you really want. It has every bit the same openness as C, just requires more verbosity because a lot of C issues are caused by implicitly handling things. Rust is a language that forces people into a specific way of programming, Zig is not
@@johanavril1691 No, I think Zig did the right thing when it comes to unsigned integer overflow, usually you don't want wrap-around behaviour either, with undefined behaviour you get the choice to crash, saturate, wrap-around, optimize as if it does not occur, etc. You can state intent and hopefully your zig implementation let's you choose (the current variant has options for all three) The thing is, I like Zig, but I also like making fun of Zig.
are they gonna add couple of "s"'s to the lang's name?
Based. I wouldn't give root to JavaScript either.
I asked ChatGPT to analyse the top 30 programming language names, and make a suggestion for a new language:
Fynx.
Latest version of Node can compile ts for you. -allow-ts i think the flag is but don’t quote me on the flag. Theo made a video about it recently
--experimental-strip-types iirc. it doesn't actually compile ts but it strips type annotations from the compiled code entirely so at least typescript will "run"
Dude, this is mostly what zig should be, give me proper compile time functions with the same feature set as zig and I am sold
27:39 that is why it is better to use NVM ;) not node packages distributed via system repos
I can't believe they missed the chance to call it C4
What is that editor and what is that theme, pls tell me I've been trying to find it for many days
That's Emacs, no idea about the theme tho
Gruber-Darker theme
@@plumcakeyGruber-Darker
23:35 👹
C3 looks like Rust and C got into bed together and made something different.
can't happen because Rust is transgender
Bro C basically married all of his successor. C++ is C and and SmallTalk. Rust is C++ successor. C3 is Rust with C++.
And java was watching from the side
@@blackt0werGo is C with Java.
@@blackt0wer zig is C with Go
1:06:00 Actually, it seems you can still use the internal vector structs as it seems to silently and magically convert a vector object to a struct object? Or am I misreading what's happening....
EDIT: Ah, I see, it was tested immediately, and didn't work. :(
EDIT2: Man what a ride, saved at 1:15:00 !
imagine programming only in assembly when C exists
It always makes me sad when the audience doesn't understand something, and instead of explaining you just call people "pathetic".
I fw zig, im a zigger tbh
ma zigga
It was just great!!!
Citroen C3 creative technology
C3PO
When are you gonna try Zig again?
@@RustIsWinning CDEEZENUTS
It's not "to un-blue-ball" but "to have an orgWASM" 😏
I started reading up on the language then saw that they removed the const qualifier and replaced it with "contracts" which are given in a special comment above functions. Who thought that was a good idea? If you're gonna remake C why take such shortcuts?
your npm version must be old or something, npm defaults to user home directory in modern versions.
Also you might want to give npx (tsx for typescript) a try. npx ships with npm for for running global commands
Upgrade from C++03 to C3.
I loved this video, instant like. Zig really feels like a regression in many ways. I like what C3 are doing. Keep the C3 content going :D Cheers!
Can you specify what ways?
@@iilugs Adds complexity in the name of safety, but still leaves gaping footguns.
Just bizarre takes on interfaces/vtables, error handling, lambda functions and many other features modern languages take for granted.
Comptime is a fad. It's untractable and very hard for editor tooling to keep up with. It's basically a crutch for the lack of a proper type system.
Ditching llvm for a bespoke backend. Yikes. People have spent decades finely crafting GCC and LLVM, but Zig has to be different of course.
ahh man programming is great ...
I am going to submit a PR with a build.zig asap
i love your videos but i also love zig, i dont know what to do, ahhhhh
Enjoy both and have your own opinions like I am :)
Can your X do that? I dont think so!
Thank God we dont have to code in cyrilic.
Hi there, bro!
W language
C69 hehehehe...
c69 when ?
nice build system
1:16:53
Lmao, none understands that it is actually c3 standard vectors
i am annoyed :p
@@RustIsWinning I was just feeding into the joke.
Fanatisism isn't productive, get over yourself.
You hate magic in programming? Try android compose. Or, I guess, any macro or annotation system.
Zig is for Zoomers.
heheh C3
its missing a fox tail
C3
Zig feels like another religion language like rust.
cuz it spreads using the same methods as rust - mostly influencer hype, which i guess also leads to very similar results
name me one language that's not a religion? I can't think of any
I can think of zealots/absolutists for every language I've thought of lol
@@FlanPoirot are there any scratch fanatic ?
Some college professors and the few "off" people that do "Making a `THIS` in Scratch" videos @@oiseauidiot
@@oiseauidiot well that's not a "serious" language lol
but I bet there's some scratch crazies out there
my only gripe with c3 is {} adding extra line so meh
what?
What? That makes no sense. It is like other C-likes…
Python programmer deteected.....
@@twenty-fifth420 well, there's Nim
@@theevilcottonball js, odin, zig
"I don't like build systems" reslly gels with me- why would I learn some opaque esoteric magic when I can slap together what I need with a bit of bash!
Cough - windows - cough
This video will not age well.
Wtf, fn int add(), that’s some ugly syntax!
zig and rust can't stop getting Ls
How old are you?
F zig😅
This video is sooo annoying, especially the part where you program in C3 and not Zig.
I don't think Zig fans care.
C3 is not going to take off, it makes no difference how many people try to use it.
I think more people should use it to find out the hard way.
@@RustIsWinning No I genuinely think everyone should try it. If it's better than Zig I'll switch. The dude is just trolling.
Fools never use odin, because they can't make embergen
I wanna be chat: raylib.c3:19 is still commented out, you are doing coloe stuff, amirite
going back to the corner of the stinky pot😓