the TRUTH about this NEW Language (BETTER Than Rust and C++?)

  Рет қаралды 331,864

Low Level Learning

Low Level Learning

Күн бұрын

When I first heard about the Zig Programming Language, I was skeptical. Did we really need to invent a new language in the System Programming space? But, after thinking about it for a while and messing around with the language, I think there is a very special spot in the systems programming world for this new language.
Check out the language!: ziglang.org
🏫 COURSES 🏫 Check out my new courses at lowlevel.academy
🙌 SUPPORT THE CHANNEL 🙌 Become a Low Level Associate and support the channel at / lowlevellearning
🔥🔥🔥 SOCIALS 🔥🔥🔥
Low Level Merch!: www.linktr.ee/lowlevellearning
Follow me on Twitter: / lowleveltweets
Follow me on Twitch: / lowlevellearning
Join me on Discord!: / discord

Пікірлер: 827
@vanweapon
@vanweapon Жыл бұрын
As a JS dev by trade hearing people calling C bloated will never not be hilarious to me
@thisistraightgarbage
@thisistraightgarbage Жыл бұрын
Except that JavaScript traditionally *was* a really bare bones language. That's the entire reason why things like 8 billion npm packages per project and `left-pad` are jokes that ring true-cuz JavaScript used to come with an insanely minimal internal API, and people had to keep writing the same basic utility functions for each new project. But yeah, you're right. C isn't bloated. Its compiler does do some truly magical shit, sometimes, though-especially w/r/t undefined behavior
@dinoscheidt
@dinoscheidt Жыл бұрын
JS is not bloated today. You are confusing libraries / frameworks with the language. Look at Java, or worse, PHP (yuk) with thousands of standard methods.
@mattsadventureswithart5764
@mattsadventureswithart5764 Жыл бұрын
When he said c is bloated because it links in standard library, then said zig does the same. By the time it gets to full release, the standard library will very likely be much bigger than it is now. The same as c standard lib is much bigger now than it used to be.
@Andrew90046zero
@Andrew90046zero Жыл бұрын
Well computers are bloat, we should just be using an abacus at this point XP
@SheelByTorn
@SheelByTorn Жыл бұрын
huh? I have never heard something like that before, you mean C++?
@chbrules
@chbrules 7 ай бұрын
"C has a lot of bloat" is something I didn't think I'd ever hear in a serious conversation with anyone that wasn't interested in just asm programming.
@bobweiram6321
@bobweiram6321 Ай бұрын
The concept of a linker is way over his head. Unused functions are stripped out of the final binaries.
@hannes7695
@hannes7695 27 күн бұрын
@@bobweiram6321 He is right. libc is really, really bloated. Especially standard ones like glibc. And wrong, normally its dynamically linked, meaning, the whole thing will be in memory when you run your binary. The unused stuff is not stripped. Note that you don’t need to use standard libc though. You can compile without it, so its not really a fair criticism of C.
@stysner4580
@stysner4580 25 күн бұрын
@bobweiram6321 the point is hidden control flow.
@absalomdraconis
@absalomdraconis 12 күн бұрын
​@@stysner4580: That's not an innate language feature, that's a compiler feature. Same with hidden allocations.
@stysner4580
@stysner4580 12 күн бұрын
@@absalomdraconis Hidden control flow is a compiler feature yet has nothing to do with the language?! That's like saying phrasing isn't part of speaking.
@luisz0339
@luisz0339 Жыл бұрын
I was on there discord for a while, they are a good community and try their best to help anyone that ask. I’m personally waiting for 1.0 but is good that you give it a try!
@andrewdunbar828
@andrewdunbar828 Жыл бұрын
I find the Zig and Rust communities on Discord are both great. Swift is a bit behind probably due to fewer users but still good.
@mastermati773
@mastermati773 Жыл бұрын
In my head, I keep them in matrix: Zig being an alternative for C and Rust for C++.
@nibbletrinnal2289
@nibbletrinnal2289 Жыл бұрын
This is how I've always viewed it too, which makes him comparing Zig to Rust instead of C a bit painful to watch
@JimBalter
@JimBalter 4 күн бұрын
@@nibbletrinnal2289 They're all close to the metal systems programming languages, with C++ being fruther from the metal.
@n0tjak
@n0tjak Күн бұрын
makes sense
@avi123
@avi123 Жыл бұрын
I like that you are covering zig, but you didn't mention some of best selling points: comptime, the build system, the interoperability with existing c code, and error handling.
@encapsulatio
@encapsulatio Жыл бұрын
Because he does not seem that great of a low level programmer to begin with. So of course he won't go into the kind of depth, low level programmers would expect from him. Yet another programming channel that makes subpar content.
@31redorange08
@31redorange08 Жыл бұрын
The comptime seemed really bad.
@stms999
@stms999 Жыл бұрын
@@encapsulatio You judge his skills just because of ONE video? I bet you can't code for shit for how conceited you are.
@encapsulatio
@encapsulatio Жыл бұрын
@@stms999 No, all his videos are just "pump and dump more content hardly any quality" type videos.
@-TheBugLord
@-TheBugLord Жыл бұрын
@@31redorange08 Yeah it seemed to take a while to compile a simple script. Kinda makes me nervous to use it.
@mechwarrior83
@mechwarrior83 Жыл бұрын
Exciting times we stand in where there are some genuine alternatives to C. They don't have the same pedigree and standing at crossroads is never fun but I am genuinely excited to see where this goes.
@dieSpinnt
@dieSpinnt Жыл бұрын
WTF are you talking about. Have you slept since C99? Is here some mass delusion going on? There are enough "alternatives" through time and space already here. Which doesn't impress systems or embedded programmers very much ... because THEY KNOW THEIR BUSINESS and don't need fancy BS, but RESULTS. Sorry for the arrogant reply, which you deserved (you are obviously blind???). At least we share the love for the Mechwarrior-Universe:) But not for the history (and facts) about BCPL and Algol based computer programming languages ... which is a little bit sad.
@deNudge
@deNudge Жыл бұрын
True, and I guess languages like Zig, Rust, Go or Carbon are just temporary experiments. Currently we are only finding out how we can overcome design flaws of C/C++, and how to build a language that is (thread) safe and bounds checked, of consistent syntax, easy to parse, read and learn and which brings package management, testing and so forth with it. But I guess there will come even more languages after them, that will combine the individual strenghts of today's new languages, each of which will probably hit its limit at a certain point of complexity we don't know yet.
@mgord9518
@mgord9518 Жыл бұрын
@You Tube C isn't going anywhere anytime soon, but especially as far as new code goes, it's getting less and less common to write it in C. There will be a time where jobs involving C will be almost entirely maintaining legacy code -- similar to COBOL today. C is no longer the only realistic option for the embedded space, and some new low-level languages offer just as much freedom with safer code, better syntax and a lot of the time, faster runtime. Linux will be one of few reasons for anyone to write C in coming decades.
@linkernick5379
@linkernick5379 Жыл бұрын
@@deNudge Rust solves the problems that C even doesn't try to solve, namely: - safe low level memory access - user defined safe abstractions - type safe error handling - safe multithreading and async - complete CI and development toolchain - cross-platform and C-interop ^^^ all this at the same time. So Rust is the unique technology right now, the only serious problem it has is the steep learning curve, because safety cannot be simple in principle.
@asandax6
@asandax6 Жыл бұрын
@@linkernick5379 Rust is great but I wish it's syntax was more like Go or V. Instead it has unnecessary elements that make it feel bloated
@kabochaVA
@kabochaVA Жыл бұрын
3:11 "All your (code)base are belong to us" I love that reference to the game Zero Wing, in which the space fighter craft you control is called... ZIG.
@enderger5308
@enderger5308 Жыл бұрын
Yeah, Zig’s great usually. It just shows it’s pre 1.0 status a good bit (I’ve reported a few internal compiler errors and dealt with some annoying problems while writing my Scheme implementation).
@mgord9518
@mgord9518 Жыл бұрын
Definitely still needs work, but each patch it gets a little (or a lot) better. I'm just glad it isn't one of those languages that rushes 1.0, then also has to rush a 2.0 and 3.0 to clean up
@uturumint8755
@uturumint8755 Жыл бұрын
I tried it and really liked how it felt like c but better. Also I was blown away by the comptime feature and how it's used. And meta programmjng is nice too
@mgord9518
@mgord9518 Жыл бұрын
I don't fanboy over much but Zig is pretty exciting. After weeks of frustration with debugging C, dealing with UB, etc. I thought that was just a part of lower-level programming. Coming from Python and Go, Zig was a little frustrating at first but I literally had it down in a couple days.
@sunitjoshi3573
@sunitjoshi3573 Жыл бұрын
@@mgord9518 Good to know. Same Python/Go/C# exp here and I think I’ll give it a try :)
@jondoe6608
@jondoe6608 Жыл бұрын
The tests in Zig remind me of the built in tests in Dlang, its a lovely feature, im glad to see it included in the Zig compiler :^)
@thedrunknmunky6571
@thedrunknmunky6571 Жыл бұрын
I love the simplicity of C, and the fact that Rust is so complex is a deal-breaker to me. Zig on the other hand might be something worth learning, as its simple and avoids making binaries that are massive in size. Its almost perfect for embedded.
@adammontgomery7980
@adammontgomery7980 11 ай бұрын
C is my go-to, but I want something with some modern conveniences: no header files, better types, package management. Rust is complex, but I do like the way you handle iterators with high-order functions. I've been trying to learn some Zig as it says "A Simple Language" on the tin. It isn't simple, and there isn't much in the way of learning the idiomatic way to do things. I think I'll hold off for a while or just try banging my head against Rust some more, at least the compiler messages are understandable.
@thanosfisherman
@thanosfisherman 7 ай бұрын
How is Zig less complex than Rust?
@airman122469
@airman122469 5 ай бұрын
Zig the language is cool. But I find its build system to be really annoying. But maybe that’s because I’m used to cargo and cmake? Dunno. But I wasn’t a fan.
@saltablt5161
@saltablt5161 4 ай бұрын
Rust complex? Not complex for me. Im not the best programmer out there but once you get the handle of the borrowing system and some smart pointers its fairly easy to do stuff. What is true is that it's annoying the fact that you have the compiler all the time complaining about stuff, but for me is a love hate relationship. And although I hate the compiler sometimes, in the end the truth is I love Rust.
@s991514
@s991514 4 ай бұрын
Rust is memory safe; Zig has bounds checking but doesn’t prevent use-after-free or other types of temporal safety violations as far as I know.
@MRL8770
@MRL8770 Жыл бұрын
I feel like out of all these new system languages, Zig is the closest in spirit to the good old C, but with some reasonable modernizations. It doesn't try to revolutionize too much about the way people program, like Rust does, instead it sticks to the good old structural, imperative programming with manual memory management, while bringing a lot of convinient features. I think this might be the future language for a lot of embedded development and quite possibly the best alternative to C for kernel development.
@etodemerzel2627
@etodemerzel2627 Жыл бұрын
Well said.
@ygypt
@ygypt Жыл бұрын
embedded is the perfect environment for zig, but for kernel development on x64 or arm, rust's ridiculous obsession with safety is pretty key.
@MRL8770
@MRL8770 Жыл бұрын
@@ygypt I see your point. In my experience, Rust gets really awkward when you need to do a lot of unsafe stuff. And you need to do a lot of unsafe stuff in kernel development. I know it's possible to use Rust to create a kernel, but despite my love for that language, Zig would probably be my choice for this sort of thing. Although, all my kernel development experience is in C, which is closer to Zig, so maybe I'm biased a bit.
@hypnoz7871
@hypnoz7871 8 ай бұрын
As a complex language Rust also has BIG drawbacks for Kernel development. Linux kernel team is very careful about Rust for this very reason. Kernels need simple, minimalist language to avoid being clutered later.@@ygypt
@shrin210
@shrin210 6 ай бұрын
why can't it be used for Web development and Backend services??
@DylanFalconer
@DylanFalconer Жыл бұрын
Zig is pretty cool! Learning about memory allocators opened up a whole new world for me.
@icemojo
@icemojo 11 ай бұрын
I'd love to know your thoughts on Odin too. Both Zig and Odin set off with the same goal, a better C alternative systems language, without trying to be a memory safe language like Rust. But they both have entirely different philosophies. I explored both of them a little bit a while ago, now sorta settled in with Odin. This may just be my personal taste, but I'm enjoying Odin a lot more than Zig, especially for game programming.
@icemojo
@icemojo 4 ай бұрын
@@quelkun Odin is a lot more simpler, and feels like it's more specialized for game dev and graphical programming. Zig shines more on the C interop and its drop in compiler. Ultimately, it's just a personal taste. There's nothing more to it. You gotta try both to know more about both.
@ender5023
@ender5023 4 ай бұрын
This is actually really exciting! Can't wait to learn this! Hopefully it catches on with more programmers
@Silverdagger258
@Silverdagger258 Жыл бұрын
Honorable mentions in the systems space "Nim", " Beef"
@culi7068
@culi7068 Жыл бұрын
vala, v, odin, red, pony
@k0rnburn
@k0rnburn Жыл бұрын
D
@Trequetrum8
@Trequetrum8 Жыл бұрын
"One level above assembly, one level below c" is perhaps the strangest way I've seen Zig described to date. Apparently not loading a std library puts it below C (is C a level below itself when you don't load std library?), but what puts it above assembly? It's abstracted over the hardware, but no more or less than C is? What does it all mean!? :P But Zig is pretty dope, so onward!
@stolenlaptop
@stolenlaptop Жыл бұрын
Imo he misses the mark here. I didn't watch it all but it uses llvm so it translates to a virtual machine not assembly. So that's your one level above assembly. His statement one level below c is just flat out wrong. Any language like c that'll let you sneak assembly instructions into it is pretty damned low level. Regarding bloat you can address that in c real easy so that statement is complete nonsense.
@ibrahemtaha8177
@ibrahemtaha8177 Жыл бұрын
AMAZING Video brother!!!! plz more videos & tutorials like that Thank you soooo much!!
@leekuncoins6347
@leekuncoins6347 Жыл бұрын
Love it at the moment you said once above assembly and once below C. I definitely try it 🎉
@esra_erimez
@esra_erimez Жыл бұрын
I forgot about this language. It's really interesting. As someone who has an immense dislike for C++ and loves C, Rust and Go, I find Zig really interesting.
@_slier
@_slier Жыл бұрын
if only Jai publicly available, it will smoke all of these language out of the water.. maybe u can try Odin too
@verified_tinker1818
@verified_tinker1818 Жыл бұрын
@@_slier I don't know about C or Zig, but Jai won't "smoke" Rust or Go "out of the water" because it's not intended to replace them. They're each intended to do different things, and differently.
@saulius2
@saulius2 Жыл бұрын
Welcome from the same boat!
@billigerfusel
@billigerfusel Жыл бұрын
As someone who loves C, I can't keep up with all those hipster languages that nobody in the industry uses.
@SomeRandomPiggo
@SomeRandomPiggo Жыл бұрын
@@billigerfusel Exactly!
@cmilkau
@cmilkau Жыл бұрын
Ooh I very much like what I'm seeing already after reading the first few bullet points. I've missed this in new languages for quite a while.
@Speykious
@Speykious Жыл бұрын
As a Rust programmer who learned C, maybe I should learn Zig to see if it's a better fit to teach the basics of low-level programming (compared to C).
@matheusschlosser8799
@matheusschlosser8799 Жыл бұрын
Great content! What about ada/spark? I see a lot of applications in mission critical systems...
@notvoidz
@notvoidz Жыл бұрын
man i just love the way you explain.
@EmbeddedSorcery
@EmbeddedSorcery Жыл бұрын
One of the reasons C++ has taken such a chunk of the embedded space is that it can provide *more* safety than C, and code maintainability and readability is usually much better. OOP can be dangerous, but in my work we use it sparingly. We also enjoy compile time templated code that's not possible with C... at least without a huge mess of macros. I'd be curious to see why Zig might be a better alternative to "C+", C++ without heap or too much bloat.
@sprytnychomik
@sprytnychomik Жыл бұрын
Ah, yes, C++'s "code maintainability and readability is usually much better". Usually, when only C99 features + vectors and strings are being used. Recently (when I was tinkering with deleting copy constructors) I've received compiler error message that was COMPLETELY USELESS in finding error and if it wasn't for git diff I'd NEVER figured it out and I've seen a lot templated hell messages. Seriously, C++ has so many pitfalls, rakes hidden in grass, invisible banana peels laying all around, surprise mechanics that I'm baffled why would anyone still want to learn it.
@smnomad9276
@smnomad9276 Жыл бұрын
@@sprytnychomik Had a similar experience using C++ that's why i switched to Rust. Have you tried Zig yet and would you recommend it?
@shadamethyst1258
@shadamethyst1258 Жыл бұрын
@@smnomad9276 I've used rust and C a lot, and I've delved into Zig a bit. I think Zig stands as a great replacement for C, because you get the same low-level control (malloc, free), but you are given tools to make your code more scalable and more robust than plain C. On the other hand, it does not suffer from the same complexity as C++ does
@sprytnychomik
@sprytnychomik Жыл бұрын
@@smnomad9276 I haven't try Zig yet, but it's on my watchlist.
@meanmole3212
@meanmole3212 Жыл бұрын
@@sprytnychomik Honestly this. "But C++ is the industry standard!!!" I'd rather quit than work with C++. Hopefully we can establish new standards asap.
@SharpBritannia
@SharpBritannia Жыл бұрын
That "also subscribe" was really smooth. Take me a second to realise the video's over. Subscribed!
@blenderpanzi
@blenderpanzi 5 ай бұрын
Rust also has integrated tests (even runs code snippets in doc comments when testing) and Rust also can do cross compilation. However, it has certain cross compilation limits. It is really difficult to cross compile to macOS in general because of all the macOS standard libraries you have to link and how to get them, but I heard Zig is doing that for you (increasing the download size of Zig, of course). So Zig is better in cross compilation, but if all you do is to cross compile to either other Linux hardware versions or to Windows then Rust (and C/C++) can do it easily.
@tru2thastyle
@tru2thastyle 10 ай бұрын
C doesn't have to do "do a bunch of stuff you're unaware of". This is especially true in embedded programming.
@jongeduard
@jongeduard Жыл бұрын
Hmm, at least good to know about it. But so many new programming languages are continuously popping up, that my current choice isto look at what is currently worth learning when it comes to the combination of popularity and maturity of the language. And I believe Rust is just reaching the point where it is finally really taking over the world (it has started to the enter the Linux kernel). So Rust is what I am currently very actively learning (but yep I cannot deny that it's definitely not my first language that I am learning, being a developer in many languages for about 20 years, I can see that the difficulty and learning curve of Rust can be a drawback to the newbies). When you have already seen everything about C#, a ton of C and C++ and also Java and JS, things are very different.
@raylopez99
@raylopez99 Жыл бұрын
A drawback is also a benefit, keeps out noobs from competing for the same projects as you. Speaking as a retired non-coder who is also learning Rust (I know C, C++, Pascal, C#, Silverlight, ASP and SQL)
@kayakMike1000
@kayakMike1000 Жыл бұрын
I recommend that people start with C BECAUSE you need to be aware of how memory works. Avoiding it because beginner developers might write unsafe code just delays the inevitablity of using a linter to identify where there's a security issue.
@airman122469
@airman122469 5 ай бұрын
I agree. Everyone should learn C, and probably at least try Rust.
@callyral
@callyral 5 ай бұрын
Learning C made me better at Rust because it made me understand memory
@phee3D
@phee3D 5 ай бұрын
That's where I'm at too, I'm learning C before learning languages that attempt to solve the problems with C
@adamkoxxl
@adamkoxxl Жыл бұрын
Nice vid! Can you do a video about Nim lang as well please?
@morgan0
@morgan0 Жыл бұрын
you should do a video on nim. it’s on its second major version iirc, and has been out for a while and does the same sorta thing (except there’s a pretty powerful macro system, which has been used to make a python compiler and a cli interface generator among many many many things)
@ambuj.k
@ambuj.k Жыл бұрын
As a javascript soy dev and someone who is learning rust, I'd really like to see where V language takes us with it's automatic memory management without garbage collection.
@NathanHedglin
@NathanHedglin Жыл бұрын
Vale is really interesting too! It uses generational references instead of reference counting.
@nic37ry
@nic37ry Жыл бұрын
But V is way behind, has a lot, really A LOT of bugs, and isn't well implemented yet. I think it is far from the 1.0.0 release
@awwastor
@awwastor Жыл бұрын
it has garbage collection for some objects (via reference counting)
@gamcd
@gamcd Жыл бұрын
V Lang doesn’t have automatic memory management yet. When you compile a v file to a C file it shows that it uses the most common garbage collector
@gamcd
@gamcd Жыл бұрын
@@awwastorpretty sure it just uses the standard Boehm GC, not ARC
@walrusbyte263
@walrusbyte263 Жыл бұрын
1:47 Man actually called C bloated 💀
@AlessandroBottoni
@AlessandroBottoni Жыл бұрын
Very interesting language! Thanks for having signalled it to us. I'll try it ASAP.
@alienm00sehunter
@alienm00sehunter 4 ай бұрын
I used zig after using Rust for years and the thing that made me stop learning zig was the error messages. I found them really unhelpful. I understand that making good error messages is really hard but I think that it is the most important part of any new language. I also think it is very important when considering what language to learn first.
@pranaypallavtripathi2460
@pranaypallavtripathi2460 Жыл бұрын
Please make a video on other new systems programming languages like Nim and V and how they compare with rust.
@Rukkus333
@Rukkus333 Жыл бұрын
I heard about this language for the first time about a week ago on Dave's Garage where it won the Code Drag Race (prime number sieve) against something like 100 other languages. It won by a massive margin.
@taragnor
@taragnor 5 ай бұрын
From what I've seen that was largely because they cheated and did a lot of stuff during compile time instead of actually having the Zig program calculate it at run time. You really can't beat C and Rust by that much without cheating, because both are extremely close to the metal. It was basically similar to doing a constexpr in C++.
@philiphanhurst2655
@philiphanhurst2655 Жыл бұрын
While it would probably be my perfect language in another world, many of the things it tries to do are just done better by other languages. Nim in particular comes to mind, since I feel it does things like c interop and compile-time evaluation much better, though it has much more hidden control flow and is very heavy on macros. Really hope Zig matures though, it absolutely has a place in this world.
@weiSane
@weiSane Жыл бұрын
How will it mature when you have already dismissed it from the get go
@climatechangedoesntbargain9140
@climatechangedoesntbargain9140 Жыл бұрын
@@weiSane there are people developing the language, aren't there?
@morgan0
@morgan0 Жыл бұрын
yeah and calling nim new would be wrong, it’s like 15 years old or something. it’s had the time to be refined and had bugs fixed and packages written
@twenty-fifth420
@twenty-fifth420 Жыл бұрын
@@morgan0 Well nim is relatively new compared to C or C++ which made me shout at the video author when he only mentioned them with Rust and, one language that may or may not exist in the future??? But also, Nim is also older then Rust, so not sure how long that history is, so the point stands. My first language was older then both me and Nim (Ruby). So yeah, no this is just semantics.
@KManAbout
@KManAbout Жыл бұрын
@@twenty-fifth420 nim is older than rust but not that much older.
@HyperFocusMarshmallow
@HyperFocusMarshmallow Жыл бұрын
A use case I saw mentioned previously is that zig supposedly is a very good compiler of already existing c code. Haven’t looked into it so I could be way off, but that alone could make it worth while to check it out.
@mithrandirthegrey7644
@mithrandirthegrey7644 9 ай бұрын
It does great with regular C code but can’t really handle macros sadly.
@shrin210
@shrin210 6 ай бұрын
​@@mithrandirthegrey7644How about writing a c code with macros and importing it in zig file???
@r.faj.5636
@r.faj.5636 5 ай бұрын
@@mithrandirthegrey7644 oof. Every C code base ever laughing the corner with all the evil macros. Personally I can't do rust but zig looks interesting, however I think I'll hold off till a 1.0.0 release
@MFM88832
@MFM88832 9 ай бұрын
Thanks for the awesome educational video! Please do similar videos for more languages.
@hamzakhiar3636
@hamzakhiar3636 Жыл бұрын
By that , I understand that linking the stdio header to a c program to just use printf is considered bloated but, I can just include the functions you'll be using that's all, I'm a new programmer ( JS Dev ) I'm trying to up my programming skills and my problem solving skills by going to the metal , do u suggest learning C/C++ or should I just go to zig
@lucasgerosa4177
@lucasgerosa4177 Жыл бұрын
I've been putting off learning C in depth for a while because of the crazy errors it gives. I hope this language doesn't make you suffer for just trying to format strings.
@maninalift
@maninalift Жыл бұрын
I'm skeptical about languages that try to avoid strong abstractions, macros and reflection. In the end programmers will always want to do metaprogramming. If you don't think about how that will fit into your language from the start, then it probably won't fit well and you will end up with something like tools that half-arse-parse your language and generate code or abusing other features (like c++ template programming).
@MrEnsiferum77
@MrEnsiferum77 Жыл бұрын
I still prefer after 10 years, when go back to some code to know what exactly that function doing, instead User.findById monkey patching on the fly.
@vojtastruhar8950
@vojtastruhar8950 Жыл бұрын
You really tried to sneak in reflections lol
@maninalift
@maninalift Жыл бұрын
@@vojtastruhar8950 it seems to me that reflection is a part of macros and metaprogramming. No?
@vojtastruhar8950
@vojtastruhar8950 Жыл бұрын
@@maninalift Yes, definitely yes. I just think that reflection is to be avoided at all times at all cost. It's not something I can imagine anyone to be happy about.
@davidjohnston4240
@davidjohnston4240 Жыл бұрын
I'm skeptical about C replacement languages that employ strong abstractions. Part of the appeal of Zig is that it does not.
@_orangutan
@_orangutan Жыл бұрын
Rust, Zig, and Elixir are my main programming languages. Rust and Elixir for the job market. Zig for my personal operating system research. Of course, I first try to build a prototype in Rust, then port it to Zig in order to pad my resume/github.
@michaeltse321
@michaeltse321 Жыл бұрын
Zig is positioned as an alternative to C and C++, it's not higher or lower than them, it provides a different set of trade-offs and design choices.
@michaelzomsuv3631
@michaelzomsuv3631 Жыл бұрын
Huuu.. it's certainly lower level than C++. C++ is full of high level abstractions which Zig has none of.
@nibbletrinnal2289
@nibbletrinnal2289 Жыл бұрын
To me, Zig *feels* higher level than C(it's far easier to program in), but its actually able to do a lot more than C can, making it lower-level. I've seen a few examples of kernels written entirely in Zig, without any handwritten assembly code. You simply can't write a kernel in C without handwriting at least a *few* lines of assembly, and a kernel in C++ requires even more non-C++ work to do. That's why he says its lower-level than C; Zig being advertised as a C alternative doesn't change the fact that Zig *is* lower level than C.
@Antyelektronika
@Antyelektronika Жыл бұрын
Is there any list for languages which support programming on ARM cortex M microcotrnollers?
@9SMTM6
@9SMTM6 Жыл бұрын
To be honest I kindof hope Carbon fails. Difficult to describe it, it's just a lot of small things that don't fit right for me, and make me think it's not going to be good for us but will rather increase fragmentation without close to enough payoff. As I said in my other comment Zig is nice and I believe and hope it has a niche.
@enderger5308
@enderger5308 Жыл бұрын
Yeah, given the reliance on interoperating with all of C++ and it being a Google language I can only see it just having the C++ problem relative to C++ (being locked to whatever can work with it to avoid foreign interop limitations).
@MRL8770
@MRL8770 Жыл бұрын
Yup. Carbon sounds to me like an attempt to make already overhelming C++ codebases reach new depths of hell.
@r.pizzamonkey7379
@r.pizzamonkey7379 Жыл бұрын
I haven't looked _too_ deeply into, but it very much feels like a different dialect rather than a different language.
@skyeplus
@skyeplus Жыл бұрын
I don't like its coding style conventions. Should've stuck with ANSI C++.
@DrunkenUFOPilot
@DrunkenUFOPilot 2 ай бұрын
I've never heard a *good* reason for Carbon to be developed. We already have D, and it's already in use. Good enough for me! And we also have Crystal, Zig (work in progress but already practical), Odin (maybe only for physicists and 3D graphics geeks), Vala, Rust and others providing more or less all the good features of C++ but safer, incorporating other modern ideas, and cleaner code. What can Carbon provide to be better then any of these languages?
@wtfxyandzee
@wtfxyandzee Жыл бұрын
Before watching the video, I was asking myself where the name zig came from, but thankfully I think you managed to answer that. FOR GREAT JUSTICE!
@luis54ization
@luis54ization Жыл бұрын
Could you make another video but using Nim ?
@piqueras_
@piqueras_ Жыл бұрын
Came to ask this 🤣
@ulrichspencer
@ulrichspencer Жыл бұрын
Recently started experimenting with Nim for embedded. It's really nice and elegant, actually! Much prefer it to C/C++ for doing anything complex.
@olokelo
@olokelo Жыл бұрын
Surprisingly one of the most unique features of Zig is the lack of "bloatness" compared to other languages. You can make a very tiny, portable, statically linked executable that does just what's meant to do and you don't have to do dirty hacks (like unsafe or nostdlib) just for it to be small or fast. Rust and C++ can't do that because of their huge standard libraries embedded in every application.
@-TheBugLord
@-TheBugLord Жыл бұрын
Yeah it definitely would fill a good niche.
@tonysofla
@tonysofla Жыл бұрын
Why is the full library included in final compile? the compiler should notice that calls are not made to these functions and not included it. I use IAR Workbench free limited and pretty sure it does just that.
@MrAnandml
@MrAnandml Жыл бұрын
Rust can do it with no_std development..pal
@AshtonSnapp
@AshtonSnapp Жыл бұрын
Doesn’t the Rust compiler automatically remove unused code from the output binary though?
@SomeRandomPiggo
@SomeRandomPiggo Жыл бұрын
You can get a Hello World! executable on Linux with C in 17KB easily
@googleisbad
@googleisbad Жыл бұрын
Great video !
@LowLevelLearning
@LowLevelLearning Жыл бұрын
Glad you enjoyed it
@iIO_OIi
@iIO_OIi 11 ай бұрын
I'm currently learning Rust on the side while I learn Java... probably not the best choice, but it kind of helps me understand how things can be done differently in another programming language.
@4115steve
@4115steve Жыл бұрын
Maybe a zig or rust structured playlist for complete beginners?
@JanuszKrysztofiak
@JanuszKrysztofiak Жыл бұрын
Neither C nor C++ require stlib/run-time, not even a dynamic memory allocation. You can program 8-bit AVRs with 2 kB of RAM (or less) without an OS of any kind in C or C++.
@DavidSpry
@DavidSpry Жыл бұрын
My favourite features are comptime and types-as-values. Elegant and easy to use.
@silverharloe
@silverharloe 4 ай бұрын
6:22 "why Zig?" For Great Justice!
@qm3ster
@qm3ster 10 ай бұрын
internal consistency of the language by implementing most features via comptime is the best thing about Zig.
@BlackRose-ex4pk
@BlackRose-ex4pk Жыл бұрын
Zig is awesome, pleaase make more videos about it!
@thewelder3538
@thewelder3538 4 ай бұрын
I think you have to be careful about mentioning the standard library with C/C++. If you write Win32 code and use that API and the provided functionality, you don't need the standard library. Also the bootstrap code that you need before entering main/WinMain is really an operating system thing rather than a language thing. For some of the 4k demos I do, I've got my own startup code which is just the bare minimum of what you need to start a PE executable, which is greatly simplified if you understand what the startup code does and work without object orientation.
@k0rnburn
@k0rnburn Жыл бұрын
Zig is still young and not 1.0. Will see what it have in a couple of years. Currently much easier to use is D. Fast write and fast run. Love it
@yokulen545
@yokulen545 Жыл бұрын
except nobody uses it, D lost from the start cuz of selfish developers made it closed source now it is too late , bye bye D
@gio5969
@gio5969 Ай бұрын
Can zig do multiple compilations in the same folder? For example I will write a zig program for Arduino (i.e. avr). I would like to use GTest or the zig equivalent for unit testing. And then Python (or ruby) to run automated tests against the Arduino. Does the "zig menu" thing intrude on this? Note CMake can't handle this. And C/C++ has it's own little twists e.g. what's an int (arduino vs UT)? and so on .
@bellissimo4520
@bellissimo4520 7 ай бұрын
Hm.... you repeatedly mention "libc" as an example of a library that makes a C program "bloated" and may do stuff I'm not aware of.... but the first line in the example Zig program is an import of the Zig standard library. How is that any different from using the C standard library? How do I know what the Zig standard library does?
@toby9999
@toby9999 5 ай бұрын
C is not bloated.
@guilherme5094
@guilherme5094 Жыл бұрын
It's really nice, it's full of potential.
@ajaysailopal1096
@ajaysailopal1096 11 ай бұрын
Why do you say the C linking with libc on its own is a bad thing ? Is it because the resulting binary is comparatively large ? Or possibly because we cant use certain variable names ?
@lis6502
@lis6502 Жыл бұрын
at 3:56 i've realized that most useful feature of Zig, even a base for me is explicit use of semicolons and parentheses. Last night i though that even simple transpiler from normal syntax (with visible blocks) to crippled Python's indentations would be cool and useful. But i digress ;d
@joseg.solano1891
@joseg.solano1891 Жыл бұрын
Thought*
@circuit10
@circuit10 Жыл бұрын
@@joseg.solano1891 What's wrong with Python's way of doing it? I think it's quite elegant
@joseg.solano1891
@joseg.solano1891 Жыл бұрын
@@circuit10 I didn't say anything about Python
@circuit10
@circuit10 Жыл бұрын
@@joseg.solano1891I didn't mean to reply to you
@lis6502
@lis6502 Жыл бұрын
@@joseg.solano1891 indeed, thank you!
@kevintanudjaja8893
@kevintanudjaja8893 Жыл бұрын
Does it have goroutine for concurrentcy built in ?
@arimill1045
@arimill1045 Ай бұрын
I sorta wish Zig stopped at being C's new Cargo utility, maybe bake in some safety passes for C. Language is great, but we're reaching the point where there's a new language every 3 months again and I'd rather stop learning syntax and do some real work
@Maraus92
@Maraus92 Жыл бұрын
It's still in beta and after trying to write game engine on top of SDL2 with Zig bindings and receiving illegal instructions error I gave up. It is still not mature enough, remember that.
@heitormbonfim4053
@heitormbonfim4053 Жыл бұрын
Is there any reason besides "I like it" using this colors in your terminal, such as "Doesn't hurt my eyes", etc?
@powerranger3889
@powerranger3889 6 ай бұрын
I really like your terminal theme. Can you put a link to it in your video?
@sebsefyu
@sebsefyu 7 ай бұрын
LLL, Can you do a review of V programming language on your channel and how it would compare to Rust, Zig and C? Syntax is similar to Go. Thank you.
@RetoonHD
@RetoonHD Жыл бұрын
Idk, i really, and i mean REALLY like rust macros. You can recursively expand them in your editor with rust-analyzer so to me theres barely any hidden code. I suppose if you dislike macros zig could be useful but stuff like sqlx query macros that validate types for your queries at compile time (you can even do it without a dev database now using a optional feature) are really fucking neat.
@uturumint8755
@uturumint8755 Жыл бұрын
idk about macro, but if you want to do something in compile time this can be easily done with comptime and std.meta. For example you can look at case study section of comptime in zig's doc
@thierrybeaulieu4403
@thierrybeaulieu4403 Жыл бұрын
Ouf, I'm not sur that I like Zig at all because of the absence of macro. Macros can be used to to gain performance in certain case in critical components depending on some hardware configurations. It would be crazy not not use a preprocessor at this point 😅
@phazechange3345
@phazechange3345 Жыл бұрын
comptime enables you to do most things that macros are used for, but it gets handled safely. as a primitive example, you aren't forced in zig to use void pointers for ADT keys/values/elements. You use comptime and pass the type in, so you get the compile time checks and the performance benefits of having typed containers. As an added benefit, comptime gives you powerful reflection capabilities as well, making lots of things essentially trivial in zig that would be complex or impossible in C macros (see MultiArrayList for example).
@disdroid
@disdroid Жыл бұрын
What about concurrency? I would like a close-to-the-metal compiler with the async and await (and promise) from JS.
@carstenrasmussen1159
@carstenrasmussen1159 Жыл бұрын
Just to mention you also have D and BetterC as system language which has been around for longer than Rust.
@nicktreleaven4119
@nicktreleaven4119 Жыл бұрын
And D has a memory safe subset unlike zig.
@jan_harald
@jan_harald Жыл бұрын
ZIIIGGGG also zig at least HAS an actual spec! and it doubles as a C compiler!
@bexplosion
@bexplosion Жыл бұрын
I think also Nim can be used for system programming
@Morphinwithyou
@Morphinwithyou Жыл бұрын
Sounds awesome!
@ecdhe
@ecdhe Жыл бұрын
Interesting. But at the end of the day, a language is as good as its ecosystem. So we'll see how it goes...
@sub-harmonik
@sub-harmonik Жыл бұрын
I disagree. Language and ecosystem are completely different. e.g. python is not great as a language but has an amazing ecosystem.
@climatechangedoesntbargain9140
@climatechangedoesntbargain9140 Жыл бұрын
@@sub-harmonik you prove his point
@sub-harmonik
@sub-harmonik Жыл бұрын
@@climatechangedoesntbargain9140 how? a language's ecosystem and the language itself are very different things
@climatechangedoesntbargain9140
@climatechangedoesntbargain9140 Жыл бұрын
@@sub-harmonik yeah, but users don't care more about the ecosystem than the language. Python has a huge unique ecosystem.
@julesl2087
@julesl2087 Жыл бұрын
I discovered using Zig when I was looking for an alternative to json (I don't remember the alternative but I know Zig team has one)
@user-dr7yi2fj6x
@user-dr7yi2fj6x 19 күн бұрын
Hi, thanks for the great video! Do I need to learn both Zig and Rust, or if I learn Zig, do I not need to learn Rust, or vice versa?
@Hardcore_Remixer
@Hardcore_Remixer Жыл бұрын
I've been writing C in a while and macros are a very handy thing when you want to write the same code in multiple places and can't afford the time cost to call a function (a function call is slower than comparing two numbers and that is what actually stings in the qsort function performance, unlike in the case of C++ sort which has the code of the < operator injected in its own to avoid function calls while sorting). Not to mention one can write a macro to generate a funcrion. The only situations where functions are better than macros are recusivity (impossible with macros unless you build your own stack) and when you use 3rd party tools to analise performance (at least Vtune doesn't know how to unpack a macro). Edit: I had no idea about the "inline" keyword.
@yjlom
@yjlom Жыл бұрын
function inlining hints do exist, though
@Hardcore_Remixer
@Hardcore_Remixer Жыл бұрын
@@yjlom Thank you. I had no idea about the keyword 'inline'. This will actually spare me a lot of pain in the future.
@djazz0
@djazz0 Жыл бұрын
Wait til he discovers Nim and Nim embedded :D im working on a Nim Pico SDK wrapper
@nanthilrodriguez
@nanthilrodriguez Жыл бұрын
I won't be happy until there is a generalized notational language, like APL, that can be handwritten and executed by a computer, with a type language embedded within, able to run in any environment, including low resource embedded systems.
@icsa
@icsa Жыл бұрын
Bous: zig cc and zig c++ are the best optimizing compilers for c an c++ - as a side effect.
@nonetrix3066
@nonetrix3066 Жыл бұрын
Actually there where some obscure versions of Windows NT that ran on MIPS CPUs ;)
@JackBender
@JackBender 4 ай бұрын
Precisely. It made me think about this video by Adrian's Digital Basement where he tests Windows NT 4.0 on a MIPS R4600-based PC: kzbin.info/www/bejne/Z5-TnIqNprZjepo
@jeffcauhape6880
@jeffcauhape6880 16 күн бұрын
This sounds cool. Can you call call assembler from Zig? Is it available on ARM?
@AdamFiregate
@AdamFiregate 3 ай бұрын
I'm waiting for Zig to catch up with the tooling as good as Rust has, like package manager, cargo and so on. It looks like an interesting language to try. Maybe this year it can become a reality. 🙂
@jcarlson099
@jcarlson099 Жыл бұрын
You got my sub, good stuff.
@LowLevelLearning
@LowLevelLearning Жыл бұрын
Awesome, thank you!
@RoastLambShanks
@RoastLambShanks Жыл бұрын
I'm already subscribed and that is why I now know that Zig exists.
@PaulSebastianM
@PaulSebastianM Жыл бұрын
Zig is advertised as general purpose I don't see why you keep advertising it as systems level programming language
@aytviewer2421
@aytviewer2421 Жыл бұрын
C is bloated???
@dforj9212
@dforj9212 Ай бұрын
Also AFAIK they want to get out of LLVM, which is very interesting as it'll allow the community to iterate faster on what it wants to achieve
@mskiptr
@mskiptr Жыл бұрын
> MIPS processor running windows > I know, that doesn't exist NCommander would like to have a word with you
@budiardjo6610
@budiardjo6610 Жыл бұрын
couldn't expect that the source code of zig is really interesting
@dorianhill2480
@dorianhill2480 4 ай бұрын
What are your thoughts on how zig compares to Nim? I'm surprised nim isn't more popular when I see videos like this.
@0xN1nja
@0xN1nja Жыл бұрын
please make a video featuring elixir language
@uzimonkey
@uzimonkey Жыл бұрын
MIPS processors running Windows _do_ exist, NT4 was released for i386, PowerPC, Alpha and MIPS.
@dalton5446
@dalton5446 3 ай бұрын
Thank you so much for not having a 10 to 30 second intro video with muh vector graphics and twisty animations and 16 bit emerging to 982 bit tune. I absolutely love that I can watch your videos without hearing or seeing some god awful branding garbage that I literally could not care less about. Thanks.
i changed my mind about this language
9:34
Low Level Learning
Рет қаралды 92 М.
Writing Code That Runs FAST on a GPU
15:32
Low Level Learning
Рет қаралды 525 М.
Genial gadget para almacenar y lavar lentes de Let's GLOW
00:26
Let's GLOW! Spanish
Рет қаралды 37 МЛН
GADGETS VS HACKS || Random Useful Tools For your child #hacks #gadgets
00:35
Artificial intelligence will improve Your Code
4:40
0xNolmex
Рет қаралды 9 М.
Will Ada Replace C/C++?
44:57
Tsoding
Рет қаралды 62 М.
The Vlang Drama
43:35
ThePrimeTime
Рет қаралды 92 М.
Why I use Odin for Game and Engine Development | Solar Storm Devlog 0
11:41
Val - The Rust Killer | Prime Reacts
16:54
ThePrimeTime
Рет қаралды 90 М.
C is 50 Years Old. Should You Learn Rust?
5:14
Low Level Learning
Рет қаралды 237 М.
Using Zig | My Initial Thoughts on Ziglang
8:57
ThePrimeagen
Рет қаралды 254 М.
The purest coding style, where bugs are near impossible
10:25
Coderized
Рет қаралды 799 М.
Why i think C++ is better than rust
32:48
ThePrimeTime
Рет қаралды 252 М.
Как часто вы чистите свой телефон
0:33
KINO KAIF
Рет қаралды 1,5 МЛН
Infrared Soldering Iron from Cigarette Lighter
0:58
ALABAYCHIC
Рет қаралды 1,8 МЛН
Что если бы Apple делала зубные щётки?
0:59
All New Atlas | Boston Dynamics
0:40
Boston Dynamics
Рет қаралды 5 МЛН